Update tests

This commit is contained in:
Veronica Berglyd Olsen
2023-11-03 10:28:54 +01:00
parent 52197149a7
commit b047695501
2 changed files with 363 additions and 369 deletions
+261 -267
View File
@@ -29,177 +29,176 @@ from novelwriter.core.project import NWProject
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_ConvertFormat(mockGUI): def testCoreToHtml_ConvertFormat(mockGUI):
"""Test the tokenizer and converter chain using the ToHtml class. """Test the tokenizer and converter chain using the ToHtml class."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject)
# Novel Files Headers # Novel Files Headers
# =================== # ===================
theHtml._isNovel = True html._isNovel = True
theHtml._isNote = False html._isNote = False
theHtml._isFirst = True html._isFirst = True
# Header 1 # Header 1
theHtml._text = "# Partition\n" html._text = "# Partition\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: center;'>Partition</h1>\n" "<h1 class='title' style='text-align: center;'>Partition</h1>\n"
) )
# Header 2 # Header 2
theHtml._text = "## Chapter Title\n" html._text = "## Chapter Title\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 style='page-break-before: always;'>Chapter Title</h1>\n" "<h1 style='page-break-before: always;'>Chapter Title</h1>\n"
) )
# Header 3 # Header 3
theHtml._text = "### Scene Title\n" html._text = "### Scene Title\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h2>Scene Title</h2>\n" assert html.theResult == "<h2>Scene Title</h2>\n"
# Header 4 # Header 4
theHtml._text = "#### Section Title\n" html._text = "#### Section Title\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h3>Section Title</h3>\n" assert html.theResult == "<h3>Section Title</h3>\n"
# Title # Title
theHtml._text = "#! Title\n" html._text = "#! Title\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: center;'>Title</h1>\n" "<h1 class='title' style='text-align: center;'>Title</h1>\n"
) )
# Unnumbered # Unnumbered
theHtml._text = "##! Prologue\n" html._text = "##! Prologue\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h1 style='page-break-before: always;'>Prologue</h1>\n" assert html.theResult == "<h1 style='page-break-before: always;'>Prologue</h1>\n"
# Note Files Headers # Note Files Headers
# ================== # ==================
theHtml._isNovel = False html._isNovel = False
theHtml._isNote = True html._isNote = True
theHtml._isFirst = True html._isFirst = True
theHtml.setLinkHeaders(True) html.setLinkHeaders(True)
# Header 1 # Header 1
theHtml._text = "# Heading One\n" html._text = "# Heading One\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h1><a name='T000001'></a>Heading One</h1>\n" assert html.theResult == "<h1><a name='T0001'></a>Heading One</h1>\n"
# Header 2 # Header 2
theHtml._text = "## Heading Two\n" html._text = "## Heading Two\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h2><a name='T000001'></a>Heading Two</h2>\n" assert html.theResult == "<h2><a name='T0001'></a>Heading Two</h2>\n"
# Header 3 # Header 3
theHtml._text = "### Heading Three\n" html._text = "### Heading Three\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h3><a name='T000001'></a>Heading Three</h3>\n" assert html.theResult == "<h3><a name='T0001'></a>Heading Three</h3>\n"
# Header 4 # Header 4
theHtml._text = "#### Heading Four\n" html._text = "#### Heading Four\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h4><a name='T000001'></a>Heading Four</h4>\n" assert html.theResult == "<h4><a name='T0001'></a>Heading Four</h4>\n"
# Title # Title
theHtml._text = "#! Heading One\n" html._text = "#! Heading One\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 style='text-align: center;'><a name='T000001'></a>Heading One</h1>\n" "<h1 style='text-align: center;'><a name='T0001'></a>Heading One</h1>\n"
) )
# Unnumbered # Unnumbered
theHtml._text = "##! Heading Two\n" html._text = "##! Heading Two\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<h2><a name='T000001'></a>Heading Two</h2>\n" assert html.theResult == "<h2><a name='T0001'></a>Heading Two</h2>\n"
# Paragraphs # Paragraphs
# ========== # ==========
# Text # Text
theHtml._text = "Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n" html._text = "Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Some <strong>nested bold and <em>italic</em> and " "<p>Some <strong>nested bold and <em>italic</em> and "
"<del>strikethrough</del> text</strong> here</p>\n" "<del>strikethrough</del> text</strong> here</p>\n"
) )
# Text w/Hard Break # Text w/Hard Break
theHtml._text = "Line one \nLine two \nLine three\n" html._text = "Line one \nLine two \nLine three\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p class='break'>Line one<br/>Line two<br/>Line three</p>\n" "<p class='break'>Line one<br/>Line two<br/>Line three</p>\n"
) )
# Synopsis # Synopsis
theHtml._text = "%synopsis: The synopsis ...\n" html._text = "%synopsis: The synopsis ...\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "" assert html.theResult == ""
theHtml.setSynopsis(True) html.setSynopsis(True)
theHtml._text = "%synopsis: The synopsis ...\n" html._text = "%synopsis: The synopsis ...\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p class='synopsis'><strong>Synopsis:</strong> The synopsis ...</p>\n" "<p class='synopsis'><strong>Synopsis:</strong> The synopsis ...</p>\n"
) )
# Comment # Comment
theHtml._text = "% A comment ...\n" html._text = "% A comment ...\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "" assert html.theResult == ""
theHtml.setComments(True) html.setComments(True)
theHtml._text = "% A comment ...\n" html._text = "% A comment ...\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p class='comment'><strong>Comment:</strong> A comment ...</p>\n" "<p class='comment'><strong>Comment:</strong> A comment ...</p>\n"
) )
# Keywords # Keywords
theHtml._text = "@char: Bod, Jane\n" html._text = "@char: Bod, Jane\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "" assert html.theResult == ""
theHtml.setKeywords(True) html.setKeywords(True)
theHtml._text = "@char: Bod, Jane\n" html._text = "@char: Bod, Jane\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p><span class='tags'>Characters:</span> " "<p><span class='tags'>Characters:</span> "
"<a href='#tag_Bod'>Bod</a>, <a href='#tag_Jane'>Jane</a></p>\n" "<a href='#tag_Bod'>Bod</a>, <a href='#tag_Jane'>Jane</a></p>\n"
) )
# Multiple Keywords # Multiple Keywords
theHtml.setKeywords(True) html.setKeywords(True)
theHtml._text = "## Chapter\n\n@pov: Bod\n@plot: Main\n@location: Europe\n\n" html._text = "## Chapter\n\n@pov: Bod\n@plot: Main\n@location: Europe\n\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h2>" "<h2>"
"<a name='T000001'></a>Chapter</h2>\n" "<a name='T0001'></a>Chapter</h2>\n"
"<p style='margin-bottom: 0;'>" "<p style='margin-bottom: 0;'>"
"<span class='tags'>Point of View:</span> <a href='#tag_Bod'>Bod</a>" "<span class='tags'>Point of View:</span> <a href='#tag_Bod'>Bod</a>"
"</p>\n" "</p>\n"
@@ -214,13 +213,13 @@ def testCoreToHtml_ConvertFormat(mockGUI):
# Preview Mode # Preview Mode
# ============ # ============
theHtml.setPreview(True, True) html.setPreview(True, True)
# Text (HTML4) # Text (HTML4)
theHtml._text = "Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n" html._text = "Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Some <b>nested bold and <i>italic</i> and " "<p>Some <b>nested bold and <i>italic</i> and "
"<span style='text-decoration: line-through;'>strikethrough</span> " "<span style='text-decoration: line-through;'>strikethrough</span> "
"text</b> here</p>\n" "text</b> here</p>\n"
@@ -231,109 +230,108 @@ def testCoreToHtml_ConvertFormat(mockGUI):
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_ConvertDirect(mockGUI): def testCoreToHtml_ConvertDirect(mockGUI):
"""Test the converter directly using the ToHtml class. """Test the converter directly using the ToHtml class."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject)
theHtml._isNovel = True html._isNovel = True
theHtml._isNote = False html._isNote = False
theHtml.setLinkHeaders(True) html.setLinkHeaders(True)
# Special Titles # Special Titles
# ============== # ==============
# Title # Title
theHtml._tokens = [ html._tokens = [
(theHtml.T_TITLE, 1, "A Title", None, theHtml.A_PBB | theHtml.A_CENTRE), (html.T_TITLE, 1, "A Title", None, html.A_PBB | html.A_CENTRE),
(theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), (html.T_EMPTY, 1, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: center; page-break-before: always;'>" "<h1 class='title' style='text-align: center; page-break-before: always;'>"
"<a name='T000001'></a>A Title</h1>\n" "<a name='T0001'></a>A Title</h1>\n"
) )
# Unnumbered # Unnumbered
theHtml._tokens = [ html._tokens = [
(theHtml.T_UNNUM, 1, "Prologue", None, theHtml.A_PBB), (html.T_UNNUM, 1, "Prologue", None, html.A_PBB),
(theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), (html.T_EMPTY, 1, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 style='page-break-before: always;'>" "<h1 style='page-break-before: always;'>"
"<a name='T000001'></a>Prologue</h1>\n" "<a name='T0001'></a>Prologue</h1>\n"
) )
# Separators # Separators
# ========== # ==========
# Separator # Separator
theHtml._tokens = [ html._tokens = [
(theHtml.T_SEP, 1, "* * *", None, theHtml.A_CENTRE), (html.T_SEP, 1, "* * *", None, html.A_CENTRE),
(theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), (html.T_EMPTY, 1, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<p class='sep' style='text-align: center;'>* * *</p>\n" assert html.theResult == "<p class='sep' style='text-align: center;'>* * *</p>\n"
# Skip # Skip
theHtml._tokens = [ html._tokens = [
(theHtml.T_SKIP, 1, "", None, theHtml.A_NONE), (html.T_SKIP, 1, "", None, html.A_NONE),
(theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), (html.T_EMPTY, 1, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == "<p class='skip'>&nbsp;</p>\n" assert html.theResult == "<p class='skip'>&nbsp;</p>\n"
# Alignment # Alignment
# ========= # =========
theHtml.setLinkHeaders(False) html.setLinkHeaders(False)
# Align Left # Align Left
theHtml.setStyles(False) html.setStyles(False)
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_LEFT), (html.T_HEAD1, 1, "A Title", None, html.A_LEFT),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title'>A Title</h1>\n" "<h1 class='title'>A Title</h1>\n"
) )
theHtml.setStyles(True) html.setStyles(True)
# Align Left # Align Left
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_LEFT), (html.T_HEAD1, 1, "A Title", None, html.A_LEFT),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: left;'>A Title</h1>\n" "<h1 class='title' style='text-align: left;'>A Title</h1>\n"
) )
# Align Right # Align Right
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_RIGHT), (html.T_HEAD1, 1, "A Title", None, html.A_RIGHT),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: right;'>A Title</h1>\n" "<h1 class='title' style='text-align: right;'>A Title</h1>\n"
) )
# Align Centre # Align Centre
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_CENTRE), (html.T_HEAD1, 1, "A Title", None, html.A_CENTRE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: center;'>A Title</h1>\n" "<h1 class='title' style='text-align: center;'>A Title</h1>\n"
) )
# Align Justify # Align Justify
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_JUSTIFY), (html.T_HEAD1, 1, "A Title", None, html.A_JUSTIFY),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' style='text-align: justify;'>A Title</h1>\n" "<h1 class='title' style='text-align: justify;'>A Title</h1>\n"
) )
@@ -341,11 +339,11 @@ def testCoreToHtml_ConvertDirect(mockGUI):
# ========== # ==========
# Page Break Always # Page Break Always
theHtml._tokens = [ html._tokens = [
(theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_PBB | theHtml.A_PBA), (html.T_HEAD1, 1, "A Title", None, html.A_PBB | html.A_PBA),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 class='title' " "<h1 class='title' "
"style='page-break-before: always; page-break-after: always;'>A Title</h1>\n" "style='page-break-before: always; page-break-after: always;'>A Title</h1>\n"
) )
@@ -354,22 +352,22 @@ def testCoreToHtml_ConvertDirect(mockGUI):
# ====== # ======
# Indent Left # Indent Left
theHtml._tokens = [ html._tokens = [
(theHtml.T_TEXT, 1, "Some text ...", [], theHtml.A_IND_L), (html.T_TEXT, 1, "Some text ...", [], html.A_IND_L),
(theHtml.T_EMPTY, 2, "", None, theHtml.A_NONE), (html.T_EMPTY, 2, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p style='margin-left: 40px;'>Some text ...</p>\n" "<p style='margin-left: 40px;'>Some text ...</p>\n"
) )
# Indent Right # Indent Right
theHtml._tokens = [ html._tokens = [
(theHtml.T_TEXT, 1, "Some text ...", [], theHtml.A_IND_R), (html.T_TEXT, 1, "Some text ...", [], html.A_IND_R),
(theHtml.T_EMPTY, 2, "", None, theHtml.A_NONE), (html.T_EMPTY, 2, "", None, html.A_NONE),
] ]
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p style='margin-right: 40px;'>Some text ...</p>\n" "<p style='margin-right: 40px;'>Some text ...</p>\n"
) )
@@ -378,40 +376,39 @@ def testCoreToHtml_ConvertDirect(mockGUI):
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_SpecialCases(mockGUI): def testCoreToHtml_SpecialCases(mockGUI):
"""Test some special cases that have caused errors in the past. """Test some special cases that have caused errors in the past."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject) html._isNovel = True
theHtml._isNovel = True
# Greater/Lesser than symbols # Greater/Lesser than symbols
# =========================== # ===========================
theHtml._text = "Text with > and < with some **bold text** in it.\n" html._text = "Text with > and < with some **bold text** in it.\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Text with &gt; and &lt; with some <strong>bold text</strong> in it.</p>\n" "<p>Text with &gt; and &lt; with some <strong>bold text</strong> in it.</p>\n"
) )
theHtml._text = "Text with some <**bold text**> in it.\n" html._text = "Text with some <**bold text**> in it.\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Text with some &lt;<strong>bold text</strong>&gt; in it.</p>\n" "<p>Text with some &lt;<strong>bold text</strong>&gt; in it.</p>\n"
) )
theHtml._text = "Let's > be > _difficult **shall** > we_?\n" html._text = "Let's > be > _difficult **shall** > we_?\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Let's &gt; be &gt; <em>difficult <strong>shall</strong> &gt; we</em>?</p>\n" "<p>Let's &gt; be &gt; <em>difficult <strong>shall</strong> &gt; we</em>?</p>\n"
) )
theHtml._text = "Test > text _<**bold**>_ and more.\n" html._text = "Test > text _<**bold**>_ and more.\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Test &gt; text <em>&lt;<strong>bold</strong>&gt;</em> and more.</p>\n" "<p>Test &gt; text <em>&lt;<strong>bold</strong>&gt;</em> and more.</p>\n"
) )
@@ -419,20 +416,20 @@ def testCoreToHtml_SpecialCases(mockGUI):
# =================== # ===================
# See: https://github.com/vkbo/novelWriter/issues/950 # See: https://github.com/vkbo/novelWriter/issues/950
theHtml.setComments(True) html.setComments(True)
theHtml._text = "% Test > text _<**bold**>_ and more.\n" html._text = "% Test > text _<**bold**>_ and more.\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p class='comment'>" "<p class='comment'>"
"<strong>Comment:</strong> Test &gt; text _&lt;**bold**&gt;_ and more." "<strong>Comment:</strong> Test &gt; text _&lt;**bold**&gt;_ and more."
"</p>\n" "</p>\n"
) )
theHtml._text = "## Heading <1>\n" html._text = "## Heading <1>\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<h1 style='page-break-before: always;'>Heading &lt;1&gt;</h1>\n" "<h1 style='page-break-before: always;'>Heading &lt;1&gt;</h1>\n"
) )
@@ -440,10 +437,10 @@ def testCoreToHtml_SpecialCases(mockGUI):
# ==================== # ====================
# See: https://github.com/vkbo/novelWriter/issues/1412 # See: https://github.com/vkbo/novelWriter/issues/1412
theHtml._text = "Test text \\**_bold_** and more.\n" html._text = "Test text \\**_bold_** and more.\n"
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Test text **<em>bold</em>** and more.</p>\n" "<p>Test text **<em>bold</em>** and more.</p>\n"
) )
@@ -452,11 +449,10 @@ def testCoreToHtml_SpecialCases(mockGUI):
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_Complex(mockGUI, fncPath): def testCoreToHtml_Complex(mockGUI, fncPath):
"""Test the save method of the ToHtml class. """Test the save method of the ToHtml class."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject) html._isNovel = True
theHtml._isNovel = True
# Build Project # Build Project
# ============= # =============
@@ -502,21 +498,21 @@ def testCoreToHtml_Complex(mockGUI, fncPath):
] ]
for i in range(len(docText)): for i in range(len(docText)):
theHtml._text = docText[i] html._text = docText[i]
theHtml.doPreProcessing() html.doPreProcessing()
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == resText[i] assert html.theResult == resText[i]
assert theHtml.fullHTML == resText assert html.fullHTML == resText
theHtml.replaceTabs(nSpaces=2, spaceChar="&nbsp;") html.replaceTabs(nSpaces=2, spaceChar="&nbsp;")
resText[6] = "<h3>A Section</h3>\n<p>&nbsp;&nbsp;More text in scene two.</p>\n" resText[6] = "<h3>A Section</h3>\n<p>&nbsp;&nbsp;More text in scene two.</p>\n"
# Check File # Check File
# ========== # ==========
theStyle = theHtml.getStyleSheet() theStyle = html.getStyleSheet()
htmlDoc = ( htmlDoc = (
"<!DOCTYPE html>\n" "<!DOCTYPE html>\n"
"<html>\n" "<html>\n"
@@ -539,7 +535,7 @@ def testCoreToHtml_Complex(mockGUI, fncPath):
) )
saveFile = fncPath / "outFile.htm" saveFile = fncPath / "outFile.htm"
theHtml.saveHtml5(saveFile) html.saveHtml5(saveFile)
assert readFile(saveFile) == htmlDoc assert readFile(saveFile) == htmlDoc
# END Test testCoreToHtml_Complex # END Test testCoreToHtml_Complex
@@ -547,86 +543,84 @@ def testCoreToHtml_Complex(mockGUI, fncPath):
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_Methods(mockGUI): def testCoreToHtml_Methods(mockGUI):
"""Test all the other methods of the ToHtml class. """Test all the other methods of the ToHtml class."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject) html.setKeepMarkdown(True)
theHtml.setKeepMarkdown(True)
# Auto-Replace, keep Unicode # Auto-Replace, keep Unicode
docText = "Text with <brackets> & shortdash, long—dash …\n" docText = "Text with <brackets> & shortdash, long—dash …\n"
theHtml._text = docText html._text = docText
theHtml.setReplaceUnicode(False) html.setReplaceUnicode(False)
theHtml.doPreProcessing() html.doPreProcessing()
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Text with &lt;brackets&gt; &amp; shortdash, long—dash …</p>\n" "<p>Text with &lt;brackets&gt; &amp; shortdash, long—dash …</p>\n"
) )
# Auto-Replace, replace Unicode # Auto-Replace, replace Unicode
docText = "Text with <brackets> & shortdash, long—dash …\n" docText = "Text with <brackets> & shortdash, long—dash …\n"
theHtml._text = docText html._text = docText
theHtml.setReplaceUnicode(True) html.setReplaceUnicode(True)
theHtml.doPreProcessing() html.doPreProcessing()
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theResult == ( assert html.theResult == (
"<p>Text with &lt;brackets&gt; &amp; short&ndash;dash, long&mdash;dash &hellip;</p>\n" "<p>Text with &lt;brackets&gt; &amp; short&ndash;dash, long&mdash;dash &hellip;</p>\n"
) )
# With Preview # With Preview
theHtml.setPreview(True, True) html.setPreview(True, True)
theHtml._text = docText html._text = docText
theHtml.doPreProcessing() html.doPreProcessing()
theHtml.tokenizeText() html.tokenizeText()
theHtml.doConvert() html.doConvert()
assert theHtml.theMarkdown[-1] == ( assert html.theMarkdown[-1] == (
"Text with <brackets> &amp; short&ndash;dash, long&mdash;dash &hellip;\n\n" "Text with <brackets> &amp; short&ndash;dash, long&mdash;dash &hellip;\n\n"
) )
# Result Size # Result Size
assert theHtml.getFullResultSize() == 147 assert html.getFullResultSize() == 147
# CSS # CSS
# === # ===
assert len(theHtml.getStyleSheet()) > 1 assert len(html.getStyleSheet()) > 1
assert "p {text-align: left;" in " ".join(theHtml.getStyleSheet()) assert "p {text-align: left;" in " ".join(html.getStyleSheet())
assert "p {text-align: justify;" not in " ".join(theHtml.getStyleSheet()) assert "p {text-align: justify;" not in " ".join(html.getStyleSheet())
theHtml.setJustify(True) html.setJustify(True)
assert "p {text-align: left;" not in " ".join(theHtml.getStyleSheet()) assert "p {text-align: left;" not in " ".join(html.getStyleSheet())
assert "p {text-align: justify;" in " ".join(theHtml.getStyleSheet()) assert "p {text-align: justify;" in " ".join(html.getStyleSheet())
theHtml.setStyles(False) html.setStyles(False)
assert theHtml.getStyleSheet() == [] assert html.getStyleSheet() == []
# END Test testCoreToHtml_Methods # END Test testCoreToHtml_Methods
@pytest.mark.core @pytest.mark.core
def testCoreToHtml_Format(mockGUI): def testCoreToHtml_Format(mockGUI):
"""Test all the formatters for the ToHtml class. """Test all the formatters for the ToHtml class."""
""" project = NWProject()
theProject = NWProject() html = ToHtml(project)
theHtml = ToHtml(theProject)
# Export Mode # Export Mode
# =========== # ===========
assert theHtml._formatSynopsis("synopsis text") == ( assert html._formatSynopsis("synopsis text") == (
"<p class='synopsis'><strong>Synopsis:</strong> synopsis text</p>\n" "<p class='synopsis'><strong>Synopsis:</strong> synopsis text</p>\n"
) )
assert theHtml._formatComments("comment text") == ( assert html._formatComments("comment text") == (
"<p class='comment'><strong>Comment:</strong> comment text</p>\n" "<p class='comment'><strong>Comment:</strong> comment text</p>\n"
) )
assert theHtml._formatKeywords("") == "" assert html._formatKeywords("") == ""
assert theHtml._formatKeywords("tag: Jane") == ( assert html._formatKeywords("tag: Jane") == (
"<span class='tags'>Tag:</span> <a name='tag_Jane'>Jane</a>" "<span class='tags'>Tag:</span> <a name='tag_Jane'>Jane</a>"
) )
assert theHtml._formatKeywords("char: Bod, Jane") == ( assert html._formatKeywords("char: Bod, Jane") == (
"<span class='tags'>Characters:</span> " "<span class='tags'>Characters:</span> "
"<a href='#tag_Bod'>Bod</a>, " "<a href='#tag_Bod'>Bod</a>, "
"<a href='#tag_Jane'>Jane</a>" "<a href='#tag_Jane'>Jane</a>"
@@ -635,20 +629,20 @@ def testCoreToHtml_Format(mockGUI):
# Preview Mode # Preview Mode
# ============ # ============
theHtml.setPreview(True, True) html.setPreview(True, True)
assert theHtml._formatSynopsis("synopsis text") == ( assert html._formatSynopsis("synopsis text") == (
"<p class='comment'><span class='synopsis'>Synopsis:</span> synopsis text</p>\n" "<p class='comment'><span class='synopsis'>Synopsis:</span> synopsis text</p>\n"
) )
assert theHtml._formatComments("comment text") == ( assert html._formatComments("comment text") == (
"<p class='comment'>comment text</p>\n" "<p class='comment'>comment text</p>\n"
) )
assert theHtml._formatKeywords("") == "" assert html._formatKeywords("") == ""
assert theHtml._formatKeywords("tag: Jane") == ( assert html._formatKeywords("tag: Jane") == (
"<span class='tags'>Tag:</span> <a name='tag_Jane'>Jane</a>" "<span class='tags'>Tag:</span> <a name='tag_Jane'>Jane</a>"
) )
assert theHtml._formatKeywords("char: Bod, Jane") == ( assert html._formatKeywords("char: Bod, Jane") == (
"<span class='tags'>Characters:</span> " "<span class='tags'>Characters:</span> "
"<a href='#char=Bod'>Bod</a>, " "<a href='#char=Bod'>Bod</a>, "
"<a href='#char=Jane'>Jane</a>" "<a href='#char=Jane'>Jane</a>"
+102 -102
View File
@@ -442,8 +442,8 @@ def testCoreToken_MetaFormat(mockGUI):
theToken._text = "% A comment\n" theToken._text = "% A comment\n"
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_COMMENT, 1, "A comment", None, Tokenizer.A_NONE), (Tokenizer.T_COMMENT, 0, "A comment", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "\n" assert theToken.theMarkdown[-1] == "\n"
@@ -455,14 +455,14 @@ def testCoreToken_MetaFormat(mockGUI):
theToken._text = "%synopsis: The synopsis\n" theToken._text = "%synopsis: The synopsis\n"
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_SYNOPSIS, 1, "The synopsis", None, Tokenizer.A_NONE), (Tokenizer.T_SYNOPSIS, 0, "The synopsis", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
theToken._text = "% synopsis: The synopsis\n" theToken._text = "% synopsis: The synopsis\n"
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_SYNOPSIS, 1, "The synopsis", None, Tokenizer.A_NONE), (Tokenizer.T_SYNOPSIS, 0, "The synopsis", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "\n" assert theToken.theMarkdown[-1] == "\n"
@@ -474,8 +474,8 @@ def testCoreToken_MetaFormat(mockGUI):
theToken._text = "@char: Bod\n" theToken._text = "@char: Bod\n"
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_KEYWORD, 1, "char: Bod", None, Tokenizer.A_NONE), (Tokenizer.T_KEYWORD, 0, "char: Bod", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "\n" assert theToken.theMarkdown[-1] == "\n"
@@ -489,10 +489,10 @@ def testCoreToken_MetaFormat(mockGUI):
styMid = Tokenizer.A_NONE | Tokenizer.A_Z_BTMMRG | Tokenizer.A_Z_TOPMRG styMid = Tokenizer.A_NONE | Tokenizer.A_Z_BTMMRG | Tokenizer.A_Z_TOPMRG
styBtm = Tokenizer.A_NONE | Tokenizer.A_Z_TOPMRG styBtm = Tokenizer.A_NONE | Tokenizer.A_Z_TOPMRG
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_KEYWORD, 1, "pov: Bod", None, styTop), (Tokenizer.T_KEYWORD, 0, "pov: Bod", None, styTop),
(Tokenizer.T_KEYWORD, 2, "plot: Main", None, styMid), (Tokenizer.T_KEYWORD, 0, "plot: Main", None, styMid),
(Tokenizer.T_KEYWORD, 3, "location: Europe", None, styBtm), (Tokenizer.T_KEYWORD, 0, "location: Europe", None, styBtm),
(Tokenizer.T_EMPTY, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "@pov: Bod\n@plot: Main\n@location: Europe\n\n" assert theToken.theMarkdown[-1] == "@pov: Bod\n@plot: Main\n@location: Europe\n\n"
@@ -521,23 +521,23 @@ def testCoreToken_MarginFormat(mockGUI):
) )
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_TEXT, 1, "Some regular text", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 0, "Some regular text", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 3, "Some left-aligned text", [], Tokenizer.A_LEFT), (Tokenizer.T_TEXT, 0, "Some left-aligned text", [], Tokenizer.A_LEFT),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some right-aligned text", [], Tokenizer.A_RIGHT), (Tokenizer.T_TEXT, 0, "Some right-aligned text", [], Tokenizer.A_RIGHT),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 7, "Some centered text", [], Tokenizer.A_CENTRE), (Tokenizer.T_TEXT, 0, "Some centered text", [], Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 9, "Left-indented block", [], Tokenizer.A_IND_L), (Tokenizer.T_TEXT, 0, "Left-indented block", [], Tokenizer.A_IND_L),
(Tokenizer.T_EMPTY, 10, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 11, "Right-indented block", [], Tokenizer.A_IND_R), (Tokenizer.T_TEXT, 0, "Right-indented block", [], Tokenizer.A_IND_R),
(Tokenizer.T_EMPTY, 12, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 13, "Double-indented block", [], dblIndent), (Tokenizer.T_TEXT, 0, "Double-indented block", [], dblIndent),
(Tokenizer.T_EMPTY, 14, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 15, "Right-indent, right-aligned", [], rIndAlign), (Tokenizer.T_TEXT, 0, "Right-indent, right-aligned", [], rIndAlign),
(Tokenizer.T_EMPTY, 16, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 16, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == ( assert theToken.theMarkdown[-1] == (
"Some regular text\n\n" "Some regular text\n\n"
@@ -564,20 +564,20 @@ def testCoreToken_TextFormat(mockGUI):
theToken._text = "Some plain text\non two lines\n\n\n" theToken._text = "Some plain text\non two lines\n\n\n"
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_TEXT, 1, "Some plain text", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 0, "Some plain text", [], Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 2, "on two lines", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 0, "on two lines", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "Some plain text\non two lines\n\n\n\n" assert theToken.theMarkdown[-1] == "Some plain text\non two lines\n\n\n\n"
theToken.setBodyText(False) theToken.setBodyText(False)
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_EMPTY, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "\n\n\n" assert theToken.theMarkdown[-1] == "\n\n\n"
theToken.setBodyText(True) theToken.setBodyText(True)
@@ -587,7 +587,7 @@ def testCoreToken_TextFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
( (
Tokenizer.T_TEXT, 1, Tokenizer.T_TEXT, 0,
"Some **bolded text** on this lines", "Some **bolded text** on this lines",
[ [
[5, 2, Tokenizer.FMT_B_B], [5, 2, Tokenizer.FMT_B_B],
@@ -595,7 +595,7 @@ def testCoreToken_TextFormat(mockGUI):
], ],
Tokenizer.A_NONE Tokenizer.A_NONE
), ),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "Some **bolded text** on this lines\n\n" assert theToken.theMarkdown[-1] == "Some **bolded text** on this lines\n\n"
@@ -603,7 +603,7 @@ def testCoreToken_TextFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
( (
Tokenizer.T_TEXT, 1, Tokenizer.T_TEXT, 0,
"Some _italic text_ on this lines", "Some _italic text_ on this lines",
[ [
[5, 1, Tokenizer.FMT_I_B], [5, 1, Tokenizer.FMT_I_B],
@@ -611,7 +611,7 @@ def testCoreToken_TextFormat(mockGUI):
], ],
Tokenizer.A_NONE Tokenizer.A_NONE
), ),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "Some _italic text_ on this lines\n\n" assert theToken.theMarkdown[-1] == "Some _italic text_ on this lines\n\n"
@@ -619,7 +619,7 @@ def testCoreToken_TextFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
( (
Tokenizer.T_TEXT, 1, Tokenizer.T_TEXT, 0,
"Some **_bold italic text_** on this lines", "Some **_bold italic text_** on this lines",
[ [
[5, 2, Tokenizer.FMT_B_B], [5, 2, Tokenizer.FMT_B_B],
@@ -629,7 +629,7 @@ def testCoreToken_TextFormat(mockGUI):
], ],
Tokenizer.A_NONE Tokenizer.A_NONE
), ),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "Some **_bold italic text_** on this lines\n\n" assert theToken.theMarkdown[-1] == "Some **_bold italic text_** on this lines\n\n"
@@ -637,7 +637,7 @@ def testCoreToken_TextFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
( (
Tokenizer.T_TEXT, 1, Tokenizer.T_TEXT, 0,
"Some ~~strikethrough text~~ on this lines", "Some ~~strikethrough text~~ on this lines",
[ [
[5, 2, Tokenizer.FMT_D_B], [5, 2, Tokenizer.FMT_D_B],
@@ -645,7 +645,7 @@ def testCoreToken_TextFormat(mockGUI):
], ],
Tokenizer.A_NONE Tokenizer.A_NONE
), ),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == "Some ~~strikethrough text~~ on this lines\n\n" assert theToken.theMarkdown[-1] == "Some ~~strikethrough text~~ on this lines\n\n"
@@ -653,7 +653,7 @@ def testCoreToken_TextFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
( (
Tokenizer.T_TEXT, 1, Tokenizer.T_TEXT, 0,
"Some **nested bold and _italic_ and ~~strikethrough~~ text** here", "Some **nested bold and _italic_ and ~~strikethrough~~ text** here",
[ [
[5, 2, Tokenizer.FMT_B_B], [5, 2, Tokenizer.FMT_B_B],
@@ -665,7 +665,7 @@ def testCoreToken_TextFormat(mockGUI):
], ],
Tokenizer.A_NONE Tokenizer.A_NONE
), ),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 0, "", None, Tokenizer.A_NONE),
] ]
assert theToken.theMarkdown[-1] == ( assert theToken.theMarkdown[-1] == (
"Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n\n" "Some **nested bold and _italic_ and ~~strikethrough~~ text** here\n\n"
@@ -687,11 +687,11 @@ def testCoreToken_SpecialFormat(mockGUI):
correctResp = [ correctResp = [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_HEAD1, 2, "Title Two", None, Tokenizer.A_CENTRE | Tokenizer.A_PBB),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE),
(Tokenizer.T_HEAD1, 5, "Title Two", None, Tokenizer.A_CENTRE | Tokenizer.A_PBB),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE),
] ]
# Command wo/Space # Command wo/Space
@@ -735,12 +735,12 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Multiple Empty Paragraphs # Multiple Empty Paragraphs
@@ -755,12 +755,12 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Three Skips # Three Skips
@@ -772,14 +772,14 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 3, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Malformed Command, Case 1 # Malformed Command, Case 1
@@ -791,11 +791,11 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Malformed Command, Case 2 # Malformed Command, Case 2
@@ -807,11 +807,11 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Malformed Command, Case 3 # Malformed Command, Case 3
@@ -823,11 +823,11 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 5, "Some text to go here ...", [], Tokenizer.A_NONE), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Empty Paragraph and Page Break # Empty Paragraph and Page Break
@@ -843,13 +843,13 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 5, "", None, Tokenizer.A_PBB), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_PBB),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 7, "Some text to go here ...", [], 0), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], 0),
(Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# Multiple Skip # Multiple Skip
@@ -862,15 +862,15 @@ def testCoreToken_SpecialFormat(mockGUI):
theToken.tokenizeText() theToken.tokenizeText()
assert theToken._tokens == [ assert theToken._tokens == [
(Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE), (Tokenizer.T_HEAD1, 1, "Title One", None, Tokenizer.A_PBB | Tokenizer.A_CENTRE),
(Tokenizer.T_EMPTY, 2, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 4, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 5, "", None, Tokenizer.A_PBB), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_PBB),
(Tokenizer.T_SKIP, 5, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_SKIP, 5, "", None, Tokenizer.A_NONE), (Tokenizer.T_SKIP, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 6, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_TEXT, 7, "Some text to go here ...", [], 0), (Tokenizer.T_TEXT, 1, "Some text to go here ...", [], 0),
(Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
(Tokenizer.T_EMPTY, 8, "", None, Tokenizer.A_NONE), (Tokenizer.T_EMPTY, 1, "", None, Tokenizer.A_NONE),
] ]
# END Test testCoreToken_SpecialFormat # END Test testCoreToken_SpecialFormat