diff --git a/src/__pycache__/interfaces.cpython-310.pyc b/src/__pycache__/interfaces.cpython-310.pyc index 95e7981751754055c5e10944cc00468b50941e10..9c2c27ce8dbc3a9cbbc432aef7c2022428ab19de 100644 Binary files a/src/__pycache__/interfaces.cpython-310.pyc and b/src/__pycache__/interfaces.cpython-310.pyc differ diff --git a/src/__pycache__/romannumerals.cpython-310.pyc b/src/__pycache__/romannumerals.cpython-310.pyc index f6197cf9b2af49383222064fa3d7a160c943eea6..24f836671a9a8436497583973509848b92b6dc91 100644 Binary files a/src/__pycache__/romannumerals.cpython-310.pyc and b/src/__pycache__/romannumerals.cpython-310.pyc differ diff --git a/src/interfaces.py b/src/interfaces.py index fc645736ebe7edf2091db66c3738825f50fd923f..bc8c8c3ef35efbce40861f4feeedc7c44c0a04dd 100644 --- a/src/interfaces.py +++ b/src/interfaces.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -class IRomanNumerals(ABC): +class IRomanNumber(ABC): @abstractmethod - def to_roman(self, num): + def convert(self, n: int) -> str: pass \ No newline at end of file diff --git a/src/romannumerals.py b/src/romannumerals.py index 3f3eaf1e8e956ca023c64ae71e38caefb1198940..2507532728391ee0523da6172527a5482d3a5148 100644 --- a/src/romannumerals.py +++ b/src/romannumerals.py @@ -1,11 +1,10 @@ -from src.interfaces import IRomanNumerals +from src.interfaces import IRomanNumber - -class RomanNumerals(IRomanNumerals): - def to_roman(self, num): - if not isinstance(num, int): +class RomanNumber(IRomanNumber): + def convert(self, n: int) -> str: + if not isinstance(n, int): raise ValueError("Eingabe muss eine ganze Zahl sein") - if num <= 0 or num >= 4000: + if n <= 0 or n >= 4000: raise ValueError("Zahl muss zwischen 1 und 3999 liegen") val = [ @@ -17,7 +16,7 @@ class RomanNumerals(IRomanNumerals): result = "" for (value, numeral) in val: - while num >= value: + while n >= value: result += numeral - num -= value + n -= value return result \ No newline at end of file diff --git a/src/stringcalculator.py b/src/stringcalculator.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/__pycache__/test_romannumerals.cpython-310.pyc b/tests/__pycache__/test_romannumerals.cpython-310.pyc index e14f2572a91805d1b33f9c03c0890bd6a036010c..2ef85d1aa0aaa5d708fc349e4ed24856b6f600f4 100644 Binary files a/tests/__pycache__/test_romannumerals.cpython-310.pyc and b/tests/__pycache__/test_romannumerals.cpython-310.pyc differ diff --git a/tests/test_romannumerals.py b/tests/test_romannumerals.py index 5b273e60ee3b222ae48a05773240c44fb59035c0..abc5266bfc1e67c1c6007e637d7a5648b218e114 100644 --- a/tests/test_romannumerals.py +++ b/tests/test_romannumerals.py @@ -42,67 +42,59 @@ # Bei Eingabe der Zahl 3.14 erhalte ich eine Fehlermeldung import unittest -from src.romannumerals import RomanNumerals +from src.romannumerals import RomanNumber +from src.interfaces import IRomanNumber - -class TestRomanNumerals(unittest.TestCase): +class TestRomanNumber(unittest.TestCase): def setUp(self): - self.converter = RomanNumerals() - - def test_to_roman_basic(self): - self.assertEqual(self.converter.to_roman(1), "I") - self.assertEqual(self.converter.to_roman(5), "V") - self.assertEqual(self.converter.to_roman(10), "X") - self.assertEqual(self.converter.to_roman(50), "L") - self.assertEqual(self.converter.to_roman(100), "C") - self.assertEqual(self.converter.to_roman(500), "D") - self.assertEqual(self.converter.to_roman(1000), "M") + self.converter: IRomanNumber = RomanNumber() - def test_to_roman_subtraction(self): - self.assertEqual(self.converter.to_roman(4), "IV") - self.assertEqual(self.converter.to_roman(9), "IX") - self.assertEqual(self.converter.to_roman(40), "XL") - self.assertEqual(self.converter.to_roman(90), "XC") - self.assertEqual(self.converter.to_roman(400), "CD") - self.assertEqual(self.converter.to_roman(900), "CM") + 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") - def test_to_roman_addition(self): - self.assertEqual(self.converter.to_roman(2), "II") - self.assertEqual(self.converter.to_roman(3), "III") - self.assertEqual(self.converter.to_roman(6), "VI") - self.assertEqual(self.converter.to_roman(8), "VIII") - self.assertEqual(self.converter.to_roman(30), "XXX") - self.assertEqual(self.converter.to_roman(80), "LXXX") + def test_convert_addition(self): + self.assertEqual(self.converter.convert(2), "II") + self.assertEqual(self.converter.convert(3), "III") + self.assertEqual(self.converter.convert(6), "VI") + self.assertEqual(self.converter.convert(8), "VIII") + self.assertEqual(self.converter.convert(30), "XXX") + self.assertEqual(self.converter.convert(80), "LXXX") - def test_to_roman_mixed(self): - self.assertEqual(self.converter.to_roman(14), "XIV") - self.assertEqual(self.converter.to_roman(19), "XIX") - self.assertEqual(self.converter.to_roman(29), "XXIX") - self.assertEqual(self.converter.to_roman(44), "XLIV") - self.assertEqual(self.converter.to_roman(99), "XCIX") - self.assertEqual(self.converter.to_roman(444), "CDXLIV") - self.assertEqual(self.converter.to_roman(999), "CMXCIX") + def test_convert_mixed(self): + self.assertEqual(self.converter.convert(14), "XIV") + self.assertEqual(self.converter.convert(19), "XIX") + self.assertEqual(self.converter.convert(29), "XXIX") + self.assertEqual(self.converter.convert(44), "XLIV") + self.assertEqual(self.converter.convert(99), "XCIX") + self.assertEqual(self.converter.convert(444), "CDXLIV") + self.assertEqual(self.converter.convert(999), "CMXCIX") - def test_to_roman_large_numbers(self): - self.assertEqual(self.converter.to_roman(1001), "MI") - self.assertEqual(self.converter.to_roman(1987), "MCMLXXXVII") - self.assertEqual(self.converter.to_roman(2023), "MMXXIII") - self.assertEqual(self.converter.to_roman(3999), "MMMCMXCIX") + def test_convert_large_numbers(self): + self.assertEqual(self.converter.convert(1001), "MI") + self.assertEqual(self.converter.convert(1987), "MCMLXXXVII") + self.assertEqual(self.converter.convert(2023), "MMXXIII") + self.assertEqual(self.converter.convert(3999), "MMMCMXCIX") - def test_to_roman_invalid(self): + def test_convert_invalid(self): with self.assertRaises(ValueError): - self.converter.to_roman(0) + self.converter.convert(0) with self.assertRaises(ValueError): - self.converter.to_roman(-1) + self.converter.convert(-1) with self.assertRaises(ValueError): - self.converter.to_roman(4000) + self.converter.convert(4000) with self.assertRaises(ValueError): - self.converter.to_roman("ABC") + self.converter.convert("ABC") with self.assertRaises(ValueError): - self.converter.to_roman(None) + self.converter.convert(None) with self.assertRaises(ValueError): - self.converter.to_roman(3.14) - + self.converter.convert(3.14) if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() + +#python -m unittest discover -s tests \ No newline at end of file diff --git a/tests/test_stringcalculator.py b/tests/test_stringcalculator.py new file mode 100644 index 0000000000000000000000000000000000000000..b8e4935f3a5abe52c006b13965c8f9abf2433d46 --- /dev/null +++ b/tests/test_stringcalculator.py @@ -0,0 +1,5 @@ +# Basis +# Bei Eingabe keiner Zahl soll eine 0 ausgegeben werden +# Bei Eingabe einer 1 soll 1 ausgegeben werden +# Bei Eingabe einer 3,4 soll 7 ausgegeben werden +# Bei Eingabe einer 10,20 soll 30 ausgegeben werden \ No newline at end of file