From 69d97a3f3ea9c8daf752e8e79d69d82a3d903db4 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:02:05 +0200 Subject: [PATCH] Add additional test coverage --- tests/test_core/test_core_tokenizer.py | 83 ++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/tests/test_core/test_core_tokenizer.py b/tests/test_core/test_core_tokenizer.py index aa23ad1d..2932fe45 100644 --- a/tests/test_core/test_core_tokenizer.py +++ b/tests/test_core/test_core_tokenizer.py @@ -1324,6 +1324,89 @@ def testCoreToken_SpecialFormat(mockGUI): ] +@pytest.mark.core +def testCoreToken_TextIndent(mockGUI): + """Test the handling of text indent in the Tokenizer class.""" + project = NWProject() + tokens = BareTokenizer(project) + + # No First Indent + tokens.setFirstLineIndent(True, 1.0, False) + + assert tokens._noIndent is False + assert tokens._firstIndent is True + assert tokens._firstWidth == 1.0 + assert tokens._indentFirst is False + + # Page One + # Two paragraphs in the same scene + tokens._text = ( + "# Title One\n\n" + "### Scene One\n\n" + "First paragraph.\n\n" + "Second paragraph.\n\n" + ) + tokens.tokenizeText() + assert tokens._tokens == [ + (Tokenizer.T_HEAD1, 1, "Title One", [], Tokenizer.A_NONE), + (Tokenizer.T_HEAD3, 2, "Scene One", [], Tokenizer.A_NONE), + (Tokenizer.T_TEXT, 2, "First paragraph.", [], Tokenizer.A_NONE), + (Tokenizer.T_TEXT, 2, "Second paragraph.", [], Tokenizer.A_IND_T), + ] + assert tokens._noIndent is False + + # Page Two + # New scene with only a synopsis + tokens._text = ( + "### Scene Two\n\n" + "%Synopsis: Stuff happens.\n\n" + ) + tokens.tokenizeText() + assert tokens._tokens == [ + (Tokenizer.T_HEAD3, 1, "Scene Two", [], Tokenizer.A_NONE), + (Tokenizer.T_SYNOPSIS, 1, "Stuff happens.", [], Tokenizer.A_NONE), + ] + assert tokens._noIndent is True + + # Page Three + # Two paragraphs for the scene on the previous page + tokens._text = ( + "First paragraph.\n\n" + "Second paragraph.\n\n" + ) + tokens.tokenizeText() + assert tokens._tokens == [ + (Tokenizer.T_TEXT, 0, "First paragraph.", [], Tokenizer.A_NONE), + (Tokenizer.T_TEXT, 0, "Second paragraph.", [], Tokenizer.A_IND_T), + ] + assert tokens._noIndent is False + + # First Indent + tokens.setFirstLineIndent(True, 1.0, True) + + assert tokens._noIndent is False + assert tokens._firstIndent is True + assert tokens._firstWidth == 1.0 + assert tokens._indentFirst is True + + # Page Four + # Two paragraphs in the same scene + tokens._text = ( + "# Title One\n\n" + "### Scene One\n\n" + "First paragraph.\n\n" + "Second paragraph.\n\n" + ) + tokens.tokenizeText() + assert tokens._tokens == [ + (Tokenizer.T_HEAD1, 1, "Title One", [], Tokenizer.A_NONE), + (Tokenizer.T_HEAD3, 2, "Scene One", [], Tokenizer.A_NONE), + (Tokenizer.T_TEXT, 2, "First paragraph.", [], Tokenizer.A_IND_T), + (Tokenizer.T_TEXT, 2, "Second paragraph.", [], Tokenizer.A_IND_T), + ] + assert tokens._noIndent is False + + @pytest.mark.core def testCoreToken_ProcessHeaders(mockGUI): """Test the header and page parser of the Tokenizer class."""