From fee22f666c530447cbd00ec374be56102024e063 Mon Sep 17 00:00:00 2001 From: linopino <lasse.pikkemaat@web.de> Date: Sun, 6 Apr 2025 16:31:24 +0200 Subject: [PATCH] Wasilis Code + Tests --- others/Wasili/WasiliRomanConverter.py | 54 +++++++++++++++++++++++++++ others/Wasili/reportWasiliImp.md | 7 ++++ others/Wasili/reportWasiliTests.md | 4 ++ tests/test_romannumerals.py | 20 ++++++---- 4 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 others/Wasili/WasiliRomanConverter.py create mode 100644 others/Wasili/reportWasiliImp.md create mode 100644 others/Wasili/reportWasiliTests.md diff --git a/others/Wasili/WasiliRomanConverter.py b/others/Wasili/WasiliRomanConverter.py new file mode 100644 index 0000000..54a708e --- /dev/null +++ b/others/Wasili/WasiliRomanConverter.py @@ -0,0 +1,54 @@ +import unittest +from abc import ABC, abstractmethod +from src.romannumerals import RomanNumber +from src.interfaces import IRomanNumber +''' +#Interface für Counter +class IRomanNumber(ABC): + @abstractmethod + def convert_int_to_str(self, n: int) -> str: + pass + +# Implementierung Converter Klasse +class RomanNumber(IRomanNumber): + def convert_int_to_str(self, n: int) -> str: + + #Eingabe anders als int + if not isinstance(n, int): + return "Fehler: Bitte Zahl eingeben" + + #Int Eingabe kleiner gleich 0 + if n <= 0: + return "Integer muss größer als 0 sein" + + # Bekannte Werte umwandeln + roman_convert = {1: "I", 21: "XXI", 1000: "M"} + return roman_convert.get(n) +''' +# Testklasse (TestConverter) +class TestRomanNumber (unittest.TestCase): + def setUp(self): + self.r = RomanNumber() + + def test_convert_1(self): + self.assertEqual(self.r.convert(1), "I") + + def test_convert_21(self): + self.assertEqual(self.r.convert(21), "XXI") + + def test_convert_empty(self): + self.assertEqual(self.r.convert(None), "Fehler: Bitte Zahl eingeben") + + def test_convert_string(self): + self.assertEqual(self.r.convert("Hello"), "Fehler: Bitte Zahl eingeben") + + def test_convert_downzero(self): + self.assertEqual(self.r.convert(-5), "Integer muss größer als 0 sein") + + def test_convert_downzero(self): + self.assertEqual(self.r.convert(1000), "M") + +if __name__ == "__main__": + unittest.main() + +# python -m unittest others.Wasili.WasiliRomanConverter -v \ No newline at end of file diff --git a/others/Wasili/reportWasiliImp.md b/others/Wasili/reportWasiliImp.md new file mode 100644 index 0000000..6e16b76 --- /dev/null +++ b/others/Wasili/reportWasiliImp.md @@ -0,0 +1,7 @@ +| Name | Interface break | Failed Testcases | | +|--------|-----------------|---------------------------------------------------------------------------------|---------------------------------------------------------------| +| Wasili | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' | +| Wasili | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' | +| Wasili | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' | +| Wasili | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' | +| Wasili | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' | \ No newline at end of file diff --git a/others/Wasili/reportWasiliTests.md b/others/Wasili/reportWasiliTests.md new file mode 100644 index 0000000..62478d1 --- /dev/null +++ b/others/Wasili/reportWasiliTests.md @@ -0,0 +1,4 @@ +| Name | Interface break | Failed Testcases | | +|--------|-----------------|------------------------------------------------------------------------------------|-----------------------------------| +| Wasili | no | test_convert_empty (others.Wasili.WasiliRomanConverter.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Zahl sein | +| Wasili | no | test_convert_string (others.Wasili.WasiliRomanConverter.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Zahl sein | \ No newline at end of file diff --git a/tests/test_romannumerals.py b/tests/test_romannumerals.py index 0dc4319..d0a09bf 100644 --- a/tests/test_romannumerals.py +++ b/tests/test_romannumerals.py @@ -48,22 +48,26 @@ from src.interfaces import IRomanNumber import unittest from others.Orlando.OrlandoRomanConverter import RomanConverter from others.Orlando.OrlandoInterfaces import IRomanConverter -''' + import unittest from others.Dani.DaniRomanConverter import Converter, IConverter +''' + +import unittest +from others.Wasili.WasiliRomanConverter import RomanNumber, IRomanNumber class TestRomanNumber(unittest.TestCase): def setUp(self): - self.converter: IConverter = Converter + self.converter: IRomanNumber = RomanNumber def test_convert_subtraction(self): - self.assertEqual(self.converter.convert(4), "IV") - self.assertEqual(self.converter.convert(9), "IX") - self.assertEqual(self.converter.convert(40), "XL") - self.assertEqual(self.converter.convert(90), "XC") - self.assertEqual(self.converter.convert(400), "CD") - self.assertEqual(self.converter.convert(900), "CM") + self.assertEqual(self.converter.convert_int_to_str(4), "IV") + self.assertEqual(self.converter.convert_int_to_str(9), "IX") + self.assertEqual(self.converter.convert_int_to_str(40), "XL") + self.assertEqual(self.converter.convert_int_to_str(90), "XC") + self.assertEqual(self.converter.convert_int_to_str(400), "CD") + self.assertEqual(self.converter.convert_int_to_str(900), "CM") def test_convert_addition(self): self.assertEqual(self.converter.convert(2), "II") -- GitLab