From dd943116afab11f8ec81090324aefade9930cc70 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Mon, 30 Nov 2020 22:46:55 +0100 Subject: [PATCH] New test for core tools functions --- nw/core/tools.py | 20 ++++-- tests/test_core_item.py | 22 +++---- tests/{test_tools.py => test_core_tools.py} | 71 ++++++++++++--------- 3 files changed, 68 insertions(+), 45 deletions(-) rename tests/{test_tools.py => test_core_tools.py} (85%) diff --git a/nw/core/tools.py b/nw/core/tools.py index ef9fbc6b..342f62bb 100644 --- a/nw/core/tools.py +++ b/nw/core/tools.py @@ -141,6 +141,15 @@ def _numberToWordEN(numVal): tenWord = "" hunWord = "" + if not isinstance(numVal, int): + return "[NaN]" + + if numVal < 0: + return "[Negative]" + + if numVal > 999: + return "[Out of Range]" + if numVal == 0: return "Zero" @@ -166,19 +175,20 @@ def _numberToWordEN(numVal): 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine", } + retVale = "" hunWord = theHundreds.get(hunVal, "") if tenVal == 10: oneWord = theTeens.get(oneVal, "") - return f"{hunWord} {oneWord}".strip() + retVale = f"{hunWord} {oneWord}".strip() else: oneWord = theOnes.get(oneVal, "") if tenVal == 0: - return f"{hunWord} {oneWord}".strip() + retVale = f"{hunWord} {oneWord}".strip() else: tenWord = theTens.get(tenVal, "") if oneVal == 0: - return f"{hunWord} {tenWord}".strip() + retVale = f"{hunWord} {tenWord}".strip() else: - return f"{hunWord} {tenWord}-{oneWord}".strip() + retVale = f"{hunWord} {tenWord}-{oneWord}".strip() - return "" + return retVale diff --git a/tests/test_core_item.py b/tests/test_core_item.py index a144b898..e1457792 100644 --- a/tests/test_core_item.py +++ b/tests/test_core_item.py @@ -10,8 +10,8 @@ from nw.core.project import NWProject, NWItem from nw.constants import nwItemClass, nwItemType, nwItemLayout @pytest.mark.core -def testCoreItemSetters(dummyGUI): - """Test all the simple setter classes for the NWItem class. +def testCoreItem_Setters(dummyGUI): + """Test all the simple setters for the NWItem class. """ theProject = NWProject(dummyGUI) theItem = NWItem(theProject) @@ -144,10 +144,10 @@ def testCoreItemSetters(dummyGUI): theItem.saveInitialCount() assert theItem.initCount == 234 -# END Test testCoreItemSetters +# END Test testCoreItem_Setters @pytest.mark.core -def testCoreItemTypeSetter(dummyGUI): +def testCoreItem_TypeSetter(dummyGUI): """Test the setter for all the nwItemType values for the NWItem class. """ @@ -172,10 +172,10 @@ def testCoreItemTypeSetter(dummyGUI): theItem.setType(nwItemType.ROOT) assert theItem.itemType == nwItemType.ROOT -# END Test testCoreItemTypeSetter +# END Test testCoreItem_TypeSetter @pytest.mark.core -def testCoreItemClassSetter(dummyGUI): +def testCoreItem_ClassSetter(dummyGUI): """Test the setter for all the nwItemClass values for the NWItem class. """ @@ -212,10 +212,10 @@ def testCoreItemClassSetter(dummyGUI): theItem.setClass(nwItemClass.NOVEL) assert theItem.itemClass == nwItemClass.NOVEL -# END Test testCoreItemClassSetter +# END Test testCoreItem_ClassSetter @pytest.mark.core -def testCoreItemLayoutSetter(dummyGUI): +def testCoreItem_LayoutSetter(dummyGUI): """Test the setter for all the nwItemLayout values for the NWItem class. """ @@ -248,10 +248,10 @@ def testCoreItemLayoutSetter(dummyGUI): theItem.setLayout(nwItemLayout.NOTE) assert theItem.itemLayout == nwItemLayout.NOTE -# END Test testCoreItemLayoutSetter +# END Test testCoreItem_LayoutSetter @pytest.mark.core -def testCoreItemXMLPackUnpack(dummyGUI): +def testCoreItem_XMLPackUnpack(dummyGUI): """Test packing and unpacking XML objects for the NWItem class. """ theProject = NWProject(dummyGUI) @@ -379,4 +379,4 @@ def testCoreItemXMLPackUnpack(dummyGUI): b"" ) -# END Test testCoreItemXMLPackUnpack +# END Test testCoreItem_XMLPackUnpack diff --git a/tests/test_tools.py b/tests/test_core_tools.py similarity index 85% rename from tests/test_tools.py rename to tests/test_core_tools.py index 4832aadb..ceb146a4 100644 --- a/tests/test_tools.py +++ b/tests/test_core_tools.py @@ -7,7 +7,7 @@ import pytest from nw.core.tools import countWords, numberToRoman, numberToWord @pytest.mark.core -def testCountWords(): +def testCoreTools_CountWords(): """Test the word counter and the exclusion filers. """ testText = ( @@ -26,15 +26,46 @@ def testCountWords(): "\n" "\n" "The third paragraph.\n" + "\n" + "Dashes\u2013and even longer\u2014dashes." ) cC, wC, pC = countWords(testText) - assert cC == 108 - assert wC == 17 - assert pC == 3 + assert cC == 138 + assert wC == 22 + assert pC == 4 + +# END Test testCoreTools_CountWords @pytest.mark.core -def testNumberWords(): +def testCoreTools_RomanNumbers(): + """Test conversion of integers to Roman numbers. + """ + assert numberToRoman(None, False) == "NAN" + assert numberToRoman(0, False) == "OOR" + assert numberToRoman(1, False) == "I" + assert numberToRoman(2, False) == "II" + assert numberToRoman(3, False) == "III" + assert numberToRoman(4, False) == "IV" + assert numberToRoman(5, False) == "V" + assert numberToRoman(6, False) == "VI" + assert numberToRoman(7, False) == "VII" + assert numberToRoman(8, False) == "VIII" + assert numberToRoman(9, False) == "IX" + assert numberToRoman(10, False) == "X" + assert numberToRoman(14, False) == "XIV" + assert numberToRoman(42, False) == "XLII" + assert numberToRoman(99, False) == "XCIX" + assert numberToRoman(142, False) == "CXLII" + assert numberToRoman(542, False) == "DXLII" + assert numberToRoman(999, False) == "CMXCIX" + assert numberToRoman(2010, False) == "MMX" + assert numberToRoman(999, True) == "cmxcix" + +# END Test testCoreTools_RomanNumbers + +@pytest.mark.core +def testCoreTools_NumberWords(): """Test the conversion of integer to English words. """ assert numberToWord(0, "en") == "Zero" @@ -70,27 +101,9 @@ def testNumberWords(): assert numberToWord(2, "foo") == "Two" assert numberToWord(3, "foo") == "Three" -@pytest.mark.core -def testRomanNumbers(): - """Test conversion of integers to Roman numbers. - """ - assert numberToRoman(None, False) == "NAN" - assert numberToRoman(0, False) == "OOR" - assert numberToRoman(1, False) == "I" - assert numberToRoman(2, False) == "II" - assert numberToRoman(3, False) == "III" - assert numberToRoman(4, False) == "IV" - assert numberToRoman(5, False) == "V" - assert numberToRoman(6, False) == "VI" - assert numberToRoman(7, False) == "VII" - assert numberToRoman(8, False) == "VIII" - assert numberToRoman(9, False) == "IX" - assert numberToRoman(10, False) == "X" - assert numberToRoman(14, False) == "XIV" - assert numberToRoman(42, False) == "XLII" - assert numberToRoman(99, False) == "XCIX" - assert numberToRoman(142, False) == "CXLII" - assert numberToRoman(542, False) == "DXLII" - assert numberToRoman(999, False) == "CMXCIX" - assert numberToRoman(2010, False) == "MMX" - assert numberToRoman(999, True) == "cmxcix" + # Test out of range values + assert numberToWord(12345, "en") == "[Out of Range]" + assert numberToWord(-2345, "en") == "[Negative]" + assert numberToWord("234", "en") == "[NaN]" + +# END Test testCoreTools_NumberWords