diff --git a/novelwriter/core/project.py b/novelwriter/core/project.py index 1466f984..e16ad263 100644 --- a/novelwriter/core/project.py +++ b/novelwriter/core/project.py @@ -517,7 +517,7 @@ class NWProject: def updateCounts(self) -> None: """Update the total word and character count values.""" - wNovel, wNotes, cNovel, cNotes = self._tree.sumWords() + wNovel, wNotes, cNovel, cNotes = self._tree.sumCounts() self._data.setCurrCounts(wNovel=wNovel, wNotes=wNotes, cNovel=cNovel, cNotes=cNotes) return diff --git a/novelwriter/core/tree.py b/novelwriter/core/tree.py index b9d569c9..14158041 100644 --- a/novelwriter/core/tree.py +++ b/novelwriter/core/tree.py @@ -410,7 +410,7 @@ class NWTree: return True - def sumWords(self) -> tuple[int, int, int, int]: + def sumCounts(self) -> tuple[int, int, int, int]: """Loop over all entries and add up the word and char counts.""" novelWords = 0 notesWords = 0 diff --git a/sample/nwProject.nwx b/sample/nwProject.nwx index f153e61d..d20ba88e 100644 --- a/sample/nwProject.nwx +++ b/sample/nwProject.nwx @@ -1,6 +1,6 @@ - - + + Sample Project Jane Smith @@ -36,7 +36,7 @@ Main - + Novel diff --git a/tests/files/nwProject-1.5.nwx b/tests/files/nwProject-1.5.nwx index 41f19af7..cd103d11 100644 --- a/tests/files/nwProject-1.5.nwx +++ b/tests/files/nwProject-1.5.nwx @@ -1,13 +1,13 @@ - - + + Sample Project Jane Smith - yes + no en_GB - en_GB + None 636b6aa9b697b 636b6aa9b697b @@ -20,32 +20,33 @@ D - New + New Notes - Started - 1st Draft - 2nd Draft - 3rd Draft - Finished + Started + 1st Draft + 2nd Draft + 3rd Draft + Finished None - Minor - Major - Main + Background + Minor + Major + Main - + Novel - + Title Page - + Page @@ -57,28 +58,28 @@ Chapter One - + Making a Scene - + Another Scene - + Interlude - + A Note on Structure - + Chapter Two - - We Found John! + + We Found John! @@ -89,8 +90,8 @@ Title Page - - Chapter One + + Chapter One @@ -101,28 +102,28 @@ Main Characters - - John Smith + + John Smith - - Jane Smith + + Jane Smith Locations - - Earth + + Earth - - Space + + Space - - Mars + + Mars @@ -136,7 +137,23 @@ Old File - + + + Templates + + + + Scene + + + + Chapter + + + + Character Note + + Trash diff --git a/tests/lipsum/nwProject.nwx b/tests/lipsum/nwProject.nwx index 1a3731af..de32f1f6 100644 --- a/tests/lipsum/nwProject.nwx +++ b/tests/lipsum/nwProject.nwx @@ -1,6 +1,6 @@ - - + + Lorem Ipsum lipsum.com @@ -31,7 +31,7 @@ Main - + Novel @@ -116,7 +116,7 @@ Ancient Europe - + Trash diff --git a/tests/reference/coreProject_NewFileFolder_nwProject.nwx b/tests/reference/coreProject_NewFileFolder_nwProject.nwx index 80142d13..8fefad66 100644 --- a/tests/reference/coreProject_NewFileFolder_nwProject.nwx +++ b/tests/reference/coreProject_NewFileFolder_nwProject.nwx @@ -1,5 +1,5 @@ - + New Project Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/coreProject_NewRoot_nwProject.nwx b/tests/reference/coreProject_NewRoot_nwProject.nwx index 5d583362..e188464c 100644 --- a/tests/reference/coreProject_NewRoot_nwProject.nwx +++ b/tests/reference/coreProject_NewRoot_nwProject.nwx @@ -1,5 +1,5 @@ - + New Project Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/coreTools_DocDuplicator_nwProject.nwx b/tests/reference/coreTools_DocDuplicator_nwProject.nwx index 2f571386..26b0ced7 100644 --- a/tests/reference/coreTools_DocDuplicator_nwProject.nwx +++ b/tests/reference/coreTools_DocDuplicator_nwProject.nwx @@ -1,5 +1,5 @@ - + New Project Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/coreTools_ProjectBuilderA_nwProject.nwx b/tests/reference/coreTools_ProjectBuilderA_nwProject.nwx index a35421d0..aa42347e 100644 --- a/tests/reference/coreTools_ProjectBuilderA_nwProject.nwx +++ b/tests/reference/coreTools_ProjectBuilderA_nwProject.nwx @@ -1,5 +1,5 @@ - + Test Project A Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/coreTools_ProjectBuilderB_nwProject.nwx b/tests/reference/coreTools_ProjectBuilderB_nwProject.nwx index 0185bc6a..a749b6f5 100644 --- a/tests/reference/coreTools_ProjectBuilderB_nwProject.nwx +++ b/tests/reference/coreTools_ProjectBuilderB_nwProject.nwx @@ -1,5 +1,5 @@ - + Test Project B Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/fmtToDocX_SaveDocument_app.xml b/tests/reference/fmtToDocX_SaveDocument_app.xml index 59d08d55..43e25401 100644 --- a/tests/reference/fmtToDocX_SaveDocument_app.xml +++ b/tests/reference/fmtToDocX_SaveDocument_app.xml @@ -1,7 +1,7 @@ - 40 - novelWriter/2.6a3 + 41 + novelWriter/2.7b1 4035 21296 24964 diff --git a/tests/reference/fmtToDocX_SaveDocument_core.xml b/tests/reference/fmtToDocX_SaveDocument_core.xml index a46abe5d..3a0d34b6 100644 --- a/tests/reference/fmtToDocX_SaveDocument_core.xml +++ b/tests/reference/fmtToDocX_SaveDocument_core.xml @@ -1,10 +1,10 @@ - 2024-11-20T19:45:15 - 2024-11-20T19:45:15 + 2025-04-29T22:46:36 + 2025-04-29T22:46:36 lipsum.com Lorem Ipsum en_GB - 51 + 52 lipsum.com diff --git a/tests/reference/guiEditor_Main_Final_nwProject.nwx b/tests/reference/guiEditor_Main_Final_nwProject.nwx index e90fa531..e30c37ba 100644 --- a/tests/reference/guiEditor_Main_Final_nwProject.nwx +++ b/tests/reference/guiEditor_Main_Final_nwProject.nwx @@ -1,6 +1,6 @@ - - + + New Project Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/guiEditor_Main_Initial_nwProject.nwx b/tests/reference/guiEditor_Main_Initial_nwProject.nwx index 27e64dac..589fbc64 100644 --- a/tests/reference/guiEditor_Main_Initial_nwProject.nwx +++ b/tests/reference/guiEditor_Main_Initial_nwProject.nwx @@ -1,5 +1,5 @@ - + New Project Jane Doe @@ -28,7 +28,7 @@ Main - + Novel diff --git a/tests/reference/projectXML_ReadCurrent.json b/tests/reference/projectXML_ReadCurrent.json index 758a1f56..fe07c294 100644 --- a/tests/reference/projectXML_ReadCurrent.json +++ b/tests/reference/projectXML_ReadCurrent.json @@ -38,10 +38,10 @@ "metaAttr": { "expanded": false, "heading": "H1", - "charCount": 93, - "wordCount": 19, - "paraCount": 2, - "cursorPos": 119 + "charCount": 148, + "wordCount": 29, + "paraCount": 4, + "cursorPos": 178 }, "nameAttr": { "status": "sc24b8f", @@ -63,10 +63,10 @@ "metaAttr": { "expanded": false, "heading": "H0", - "charCount": 251, - "wordCount": 50, + "charCount": 233, + "wordCount": 47, "paraCount": 2, - "cursorPos": 277 + "cursorPos": 194 }, "nameAttr": { "status": "sf12341", @@ -138,10 +138,10 @@ "metaAttr": { "expanded": false, "heading": "H3", - "charCount": 2687, - "wordCount": 479, - "paraCount": 14, - "cursorPos": 67 + "charCount": 2999, + "wordCount": 530, + "paraCount": 16, + "cursorPos": 159 }, "nameAttr": { "status": "s90e6c9", @@ -166,7 +166,7 @@ "charCount": 548, "wordCount": 108, "paraCount": 3, - "cursorPos": 465 + "cursorPos": 650 }, "nameAttr": { "status": "s90e6c9", @@ -191,7 +191,7 @@ "charCount": 617, "wordCount": 101, "paraCount": 3, - "cursorPos": 310 + "cursorPos": 1182 }, "nameAttr": { "status": "s78ea90", @@ -216,7 +216,7 @@ "charCount": 1909, "wordCount": 346, "paraCount": 7, - "cursorPos": 0 + "cursorPos": 1940 }, "nameAttr": { "status": "sf24ce6", @@ -241,7 +241,7 @@ "charCount": 139, "wordCount": 28, "paraCount": 1, - "cursorPos": 188 + "cursorPos": 356 }, "nameAttr": { "status": "s90e6c9", @@ -266,10 +266,10 @@ "charCount": 189, "wordCount": 37, "paraCount": 1, - "cursorPos": 0 + "cursorPos": 237 }, "nameAttr": { - "status": "s90e6c9", + "status": "sd51c5b", "import": "ia857f0", "active": true } @@ -341,10 +341,10 @@ "charCount": 299, "wordCount": 55, "paraCount": 2, - "cursorPos": 104 + "cursorPos": 387 }, "nameAttr": { - "status": "s90e6c9", + "status": "s8ae72a", "import": "ia857f0", "active": true } @@ -416,11 +416,11 @@ "charCount": 49, "wordCount": 9, "paraCount": 1, - "cursorPos": 24 + "cursorPos": 23 }, "nameAttr": { "status": "sf12341", - "import": "icfb3a5", + "import": "i2d7a54", "active": true } }, @@ -441,11 +441,11 @@ "charCount": 55, "wordCount": 9, "paraCount": 1, - "cursorPos": 25 + "cursorPos": 31 }, "nameAttr": { "status": "sf12341", - "import": "i2d7a54", + "import": "i56be10", "active": true } }, @@ -491,11 +491,11 @@ "charCount": 76, "wordCount": 15, "paraCount": 1, - "cursorPos": 20 + "cursorPos": 111 }, "nameAttr": { "status": "sf12341", - "import": "i56be10", + "import": "i2d7a54", "active": true } }, @@ -516,11 +516,11 @@ "charCount": 115, "wordCount": 24, "paraCount": 1, - "cursorPos": 133 + "cursorPos": 0 }, "nameAttr": { "status": "sf12341", - "import": "icfb3a5", + "import": "i4a1d39", "active": true } }, @@ -541,11 +541,11 @@ "charCount": 28, "wordCount": 6, "paraCount": 1, - "cursorPos": 45 + "cursorPos": 62 }, "nameAttr": { "status": "sf12341", - "import": "i2d7a54", + "import": "icfb3a5", "active": true } }, @@ -624,13 +624,113 @@ "active": true } }, + { + "name": "Templates", + "itemAttr": { + "handle": "f4ed1ae756a1f", + "parent": null, + "root": "f4ed1ae756a1f", + "order": 5, + "type": "ROOT", + "class": "TEMPLATE", + "layout": "NO_LAYOUT" + }, + "metaAttr": { + "expanded": true, + "heading": "H0", + "charCount": 0, + "wordCount": 0, + "paraCount": 0, + "cursorPos": 0 + }, + "nameAttr": { + "status": "sf12341", + "import": "ia857f0", + "active": false + } + }, + { + "name": "Scene", + "itemAttr": { + "handle": "5aec885635c85", + "parent": "f4ed1ae756a1f", + "root": "f4ed1ae756a1f", + "order": 0, + "type": "FILE", + "class": "TEMPLATE", + "layout": "DOCUMENT" + }, + "metaAttr": { + "expanded": false, + "heading": "H3", + "charCount": 9, + "wordCount": 2, + "paraCount": 1, + "cursorPos": 78 + }, + "nameAttr": { + "status": "sf12341", + "import": "ia857f0", + "active": true + } + }, + { + "name": "Chapter", + "itemAttr": { + "handle": "2a60782759c6f", + "parent": "f4ed1ae756a1f", + "root": "f4ed1ae756a1f", + "order": 1, + "type": "FILE", + "class": "TEMPLATE", + "layout": "DOCUMENT" + }, + "metaAttr": { + "expanded": false, + "heading": "H2", + "charCount": 11, + "wordCount": 2, + "paraCount": 1, + "cursorPos": 81 + }, + "nameAttr": { + "status": "sf12341", + "import": "ia857f0", + "active": true + } + }, + { + "name": "Character Note", + "itemAttr": { + "handle": "5ee8aebcdebc9", + "parent": "f4ed1ae756a1f", + "root": "f4ed1ae756a1f", + "order": 2, + "type": "FILE", + "class": "TEMPLATE", + "layout": "NOTE" + }, + "metaAttr": { + "expanded": false, + "heading": "H1", + "charCount": 53, + "wordCount": 7, + "paraCount": 1, + "cursorPos": 75 + }, + "nameAttr": { + "status": "sf12341", + "import": "ia857f0", + "active": true + } + }, { "name": "Trash", "itemAttr": { "handle": "98acd8c76c93a", "parent": null, "root": "98acd8c76c93a", - "order": 5, + "order": 6, "type": "ROOT", "class": "TRASH", "layout": "NO_LAYOUT" diff --git a/tests/reference/projectXML_ReadLegacy10.nwx b/tests/reference/projectXML_ReadLegacy10.nwx index b94b21a1..cc0c7d88 100644 --- a/tests/reference/projectXML_ReadLegacy10.nwx +++ b/tests/reference/projectXML_ReadLegacy10.nwx @@ -1,5 +1,5 @@ - + Sample Project Jay Doh @@ -35,7 +35,7 @@ Main - + Novel diff --git a/tests/reference/projectXML_ReadLegacy11.nwx b/tests/reference/projectXML_ReadLegacy11.nwx index 9697b28a..0ea370fb 100644 --- a/tests/reference/projectXML_ReadLegacy11.nwx +++ b/tests/reference/projectXML_ReadLegacy11.nwx @@ -1,5 +1,5 @@ - + Sample Project Jay Doh @@ -35,7 +35,7 @@ Main - + Novel diff --git a/tests/reference/projectXML_ReadLegacy12.nwx b/tests/reference/projectXML_ReadLegacy12.nwx index c87a5b38..bac7fb3a 100644 --- a/tests/reference/projectXML_ReadLegacy12.nwx +++ b/tests/reference/projectXML_ReadLegacy12.nwx @@ -1,5 +1,5 @@ - + Sample Project Jay Doh @@ -35,7 +35,7 @@ Main - + Novel diff --git a/tests/reference/projectXML_ReadLegacy13.nwx b/tests/reference/projectXML_ReadLegacy13.nwx index 35036927..1fb96f5e 100644 --- a/tests/reference/projectXML_ReadLegacy13.nwx +++ b/tests/reference/projectXML_ReadLegacy13.nwx @@ -1,5 +1,5 @@ - + Sample Project Jay Doh @@ -35,7 +35,7 @@ Main - + Novel diff --git a/tests/reference/projectXML_ReadLegacy14.nwx b/tests/reference/projectXML_ReadLegacy14.nwx index d25ee3aa..3c763d27 100644 --- a/tests/reference/projectXML_ReadLegacy14.nwx +++ b/tests/reference/projectXML_ReadLegacy14.nwx @@ -1,5 +1,5 @@ - + Sample Project Jay Doh @@ -35,7 +35,7 @@ Main - + Novel diff --git a/tests/test_core/test_core_projectxml.py b/tests/test_core/test_core_projectxml.py index acd5d19c..3021c7c4 100644 --- a/tests/test_core/test_core_projectxml.py +++ b/tests/test_core/test_core_projectxml.py @@ -52,8 +52,8 @@ class MockProject: @pytest.fixture(scope="function", autouse=True) def mockVersion(monkeypatch): """Mock the version info to prevent diff from failing.""" - monkeypatch.setattr("novelwriter.core.projectxml.__version__", "2.0-rc1") - monkeypatch.setattr("novelwriter.core.projectxml.__hexversion__", "0x020000c1") + monkeypatch.setattr("novelwriter.core.projectxml.__version__", "2.7b1") + monkeypatch.setattr("novelwriter.core.projectxml.__hexversion__", "0x020700b1") return @@ -137,23 +137,23 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, mockGUI, tstPaths, fncPath): assert xmlReader.state == XMLReadState.PARSED_OK assert xmlReader.xmlRoot == "novelWriterXML" assert xmlReader.xmlVersion == 0x0105 - assert xmlReader.xmlRevision == 4 - assert xmlReader.appVersion == "2.0-rc1" - assert xmlReader.hexVersion == 0x020000c1 + assert xmlReader.xmlRevision == 5 + assert xmlReader.appVersion == "2.7b1" + assert xmlReader.hexVersion == 0x020700b1 # Check loaded data assert data.name == "Sample Project" assert data.author == "Jane Smith" - assert data.saveCount == 5 - assert data.autoCount == 10 + assert data.saveCount == 2179 + assert data.autoCount == 285 assert data.editTime == 1000 - assert data.doBackup is True + assert data.doBackup is False assert data.language == "en_GB" assert data.spellCheck is True - assert data.spellLang == "en_GB" - assert data.initCounts == (954, 409) - assert data.currCounts == (954, 409) + assert data.spellLang is None + assert data.initCounts == (1016, 416, 5602, 2285) + assert data.currCounts == (1016, 416, 5602, 2285) assert data.getLastHandle("editor") == "636b6aa9b697b" assert data.getLastHandle("viewer") == "636b6aa9b697b" @@ -182,33 +182,36 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, mockGUI, tstPaths, fncPath): assert data.itemStatus["s78ea90"].color == QColor(58, 180, 58) assert data.itemImport["ia857f0"].color == QColor(100, 100, 100) - assert data.itemImport["icfb3a5"].color == QColor(0, 122, 188) - assert data.itemImport["i2d7a54"].color == QColor(21, 0, 180) - assert data.itemImport["i56be10"].color == QColor(117, 0, 175) + assert data.itemImport["i4a1d39"].color == QColor(220, 138, 221) + assert data.itemImport["icfb3a5"].color == QColor(220, 138, 221) + assert data.itemImport["i2d7a54"].color == QColor(220, 138, 221) + assert data.itemImport["i56be10"].color == QColor(220, 138, 221) assert data.itemStatus["sf12341"].shape == nwStatusShape.SQUARE assert data.itemStatus["sf24ce6"].shape == nwStatusShape.SQUARE - assert data.itemStatus["sc24b8f"].shape == nwStatusShape.SQUARE - assert data.itemStatus["s90e6c9"].shape == nwStatusShape.SQUARE - assert data.itemStatus["sd51c5b"].shape == nwStatusShape.SQUARE - assert data.itemStatus["s8ae72a"].shape == nwStatusShape.SQUARE - assert data.itemStatus["s78ea90"].shape == nwStatusShape.SQUARE + assert data.itemStatus["sc24b8f"].shape == nwStatusShape.BARS_1 + assert data.itemStatus["s90e6c9"].shape == nwStatusShape.BARS_2 + assert data.itemStatus["sd51c5b"].shape == nwStatusShape.BARS_3 + assert data.itemStatus["s8ae72a"].shape == nwStatusShape.BARS_4 + assert data.itemStatus["s78ea90"].shape == nwStatusShape.STAR assert data.itemImport["ia857f0"].shape == nwStatusShape.SQUARE - assert data.itemImport["icfb3a5"].shape == nwStatusShape.SQUARE - assert data.itemImport["i2d7a54"].shape == nwStatusShape.SQUARE - assert data.itemImport["i56be10"].shape == nwStatusShape.SQUARE + assert data.itemImport["i4a1d39"].shape == nwStatusShape.BLOCK_1 + assert data.itemImport["icfb3a5"].shape == nwStatusShape.BLOCK_2 + assert data.itemImport["i2d7a54"].shape == nwStatusShape.BLOCK_3 + assert data.itemImport["i56be10"].shape == nwStatusShape.BLOCK_4 - assert data.itemStatus["sf12341"].count == 4 + assert data.itemStatus["sf12341"].count == 8 assert data.itemStatus["sf24ce6"].count == 2 assert data.itemStatus["sc24b8f"].count == 3 - assert data.itemStatus["s90e6c9"].count == 7 - assert data.itemStatus["sd51c5b"].count == 0 - assert data.itemStatus["s8ae72a"].count == 0 + assert data.itemStatus["s90e6c9"].count == 5 + assert data.itemStatus["sd51c5b"].count == 1 + assert data.itemStatus["s8ae72a"].count == 1 assert data.itemStatus["s78ea90"].count == 1 assert data.itemImport["ia857f0"].count == 5 - assert data.itemImport["icfb3a5"].count == 2 + assert data.itemImport["i4a1d39"].count == 1 + assert data.itemImport["icfb3a5"].count == 1 assert data.itemImport["i2d7a54"].count == 2 assert data.itemImport["i56be10"].count == 1 @@ -281,8 +284,8 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockGUI, mockRnd): assert data.language is None # Doesn't exist in 1.0 assert data.spellCheck is True assert data.spellLang is None # Doesn't exist in 1.0 - assert data.initCounts == (0, 0) - assert data.currCounts == (0, 0) + assert data.initCounts == (0, 0, 0, 0) + assert data.currCounts == (0, 0, 0, 0) assert data.getLastHandle("editor") is None # Dropped by conversion assert data.getLastHandle("viewer") is None # Dropped by conversion @@ -426,8 +429,8 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockGUI, mockRnd): assert data.language is None # Doesn't exist in 1.1 assert data.spellCheck is True assert data.spellLang is None # Doesn't exist in 1.1 - assert data.initCounts == (0, 0) - assert data.currCounts == (0, 0) + assert data.initCounts == (0, 0, 0, 0) + assert data.currCounts == (0, 0, 0, 0) assert data.getLastHandle("editor") is None # Dropped by conversion assert data.getLastHandle("viewer") is None # Dropped by conversion @@ -571,8 +574,8 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockGUI, mockRnd): assert data.language == "en_GB" assert data.spellCheck is True assert data.spellLang == "en_GB" - assert data.initCounts == (840, 376) - assert data.currCounts == (840, 376) + assert data.initCounts == (840, 376, 0, 0) + assert data.currCounts == (840, 376, 0, 0) assert data.getLastHandle("editor") is None # Dropped by conversion assert data.getLastHandle("viewer") is None # Dropped by conversion @@ -719,8 +722,8 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockGUI, mockRnd): assert data.language == "en_GB" assert data.spellCheck is True assert data.spellLang == "en_GB" - assert data.initCounts == (830, 376) - assert data.currCounts == (830, 376) + assert data.initCounts == (830, 376, 0, 0) + assert data.currCounts == (830, 376, 0, 0) assert data.getLastHandle("editor") is None # Dropped by conversion assert data.getLastHandle("viewer") is None # Dropped by conversion @@ -867,8 +870,8 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockGUI, mockRnd): assert data.language == "en_GB" assert data.spellCheck is True assert data.spellLang == "en_GB" - assert data.initCounts == (954, 409) - assert data.currCounts == (954, 409) + assert data.initCounts == (954, 409, 0, 0) + assert data.currCounts == (954, 409, 0, 0) assert data.getLastHandle("editor") is None # Dropped by conversion assert data.getLastHandle("viewer") is None # Dropped by conversion diff --git a/tests/test_core/test_core_tree.py b/tests/test_core/test_core_tree.py index 1c96f580..432ae8f7 100644 --- a/tests/test_core/test_core_tree.py +++ b/tests/test_core/test_core_tree.py @@ -436,7 +436,7 @@ def testCoreTree_OtherMethods(qtbot, monkeypatch, mockGUI, fncPath, mockRnd): ] # Refresh All - assert tree.sumWords() == (9, 0) + assert tree.sumCounts() == (9, 0, 40, 0) assert tree.model.root.count == 9 for node in tree.nodes.values():