diff --git a/Project_tests/converter.py b/Project_tests/converter.py index 73d592b19f276cf8a5c9e76913ade6881061fb81..3156cb9d7494acb0533860bfb29260113db1ee22 100644 --- a/Project_tests/converter.py +++ b/Project_tests/converter.py @@ -29,7 +29,8 @@ import unittest from abc import ABC, abstractmethod #from other.AliciMuhamed.Test_Converter_Römische_Zahlen import ConverterMomo as MomoCalc #from other.BerishaAlma.test2converter import RomanNumber as AlmaCalc -from other.GotsisWasilios.TDD_Converter import WasiliRomanNumber as WasiliCalc +#from other.GotsisWasilios.TDD_Converter import WasiliRomanNumber as WasiliCalc +from other.PikkemaatLasse.romannumerals import RomanNumerals as LasseCalc class IConverter(ABC): @abstractmethod @@ -72,8 +73,8 @@ class DanisConverter(IConverter): class TestConverter(unittest.TestCase): def setUp(self): - self.c = WasiliCalc() - self.c.convert = self.c.convert_int_to_str + self.c = LasseCalc() + self.c.convert = self.c.to_roman def test_convertOne(self): diff --git a/Project_tests/other/PikkemaatLasse/__pycache__/romannumerals.cpython-312.pyc b/Project_tests/other/PikkemaatLasse/__pycache__/romannumerals.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53d750b163127a48512ff3cb2717a6f4cd76370b Binary files /dev/null and b/Project_tests/other/PikkemaatLasse/__pycache__/romannumerals.cpython-312.pyc differ diff --git a/Project_tests/other/PikkemaatLasse/calculator.py b/Project_tests/other/PikkemaatLasse/calculator.py deleted file mode 100644 index e799761a891c6add0f8c76442f7d6d523992d0e0..0000000000000000000000000000000000000000 --- a/Project_tests/other/PikkemaatLasse/calculator.py +++ /dev/null @@ -1,29 +0,0 @@ -#Test1: Addition 2 positiver Zaheln (2+5) erwartetes Ergebnis 8 -#Test2: Addition negativer und positiver Zahl (-1+1) erwartetes Ergebnis 0 -#Test3: Addition (0+0), erwartetes Ergebnis 0 -#Test4: Addition von 2 Dezimalzahlen (2,5+3,5), erwartetes Ergebnis 6 - -from abc import ABC, abstractmethod -class ICalculator(ABC): - @abstractmethod - def add(self, a: float, b: float) -> float: - pass - -class Calculator(ICalculator): - def add(self, a: float, b: float) -> float: - return a + b - -class TestCalculator: - def __init__(self, calculator: ICalculator): - self.calculator = calculator - def test_add(self): - assert self.calculator.add(2,3) == 5, "Fehler falls nicht 5" - assert self.calculator.add(-1,1) == 0, "Fegler falls nich 0" - assert self.calculator.add(0,0) == 0, "Fehler falls nicht 0" - assert self.calculator.add(2.5,3.5) == 6, "Fehler falls nicht 5" - print("Test erfolgreich") - -if __name__ == "__main__": - calc = Calculator() - tester = TestCalculator(calc) - tester.test_add() diff --git a/Project_tests/other/PikkemaatLasse/counter.py b/Project_tests/other/PikkemaatLasse/counter.py deleted file mode 100644 index 00cf9c02e9829bf00319ee1547bfdd28a6018193..0000000000000000000000000000000000000000 --- a/Project_tests/other/PikkemaatLasse/counter.py +++ /dev/null @@ -1,48 +0,0 @@ -#Bei Eingabe des Strings "Decker" liefert die Funktion 3 -#Bei Eingabe eines leeren Stings soll 0 augegeben werden -#Bei Eingabe des Strings "Hallo" ohne E und D soll 0 ausgegeben werden -#Bei Eingabe von dem String "Der Esel" soll Groß-Kleinschreibung (Caseinsensitive) gezählt werden. das Ergebnis ist 4 -#Bei Eingabe des Buchstaben D oder E soll 1 ausgegeben werden - -from abc import ABC,abstractmethod -import unittest - -class ICounter (ABC): - @abstractmethod - def count_ED(self,s): - pass - -class Counter (ICounter): - def count_ED(self, s): - s=s.upper() - return s.count("D")+s.count("E") - -class TestCounter (unittest.TestCase): - def setUp(self): - self.c=Counter() - def test_count_ED_regular (self): - res=self.c.count_ED ("Decker") - self.assertEqual(res,3) - def test_count_ED_empty (self): - res=self.c.count_ED ("") - self.assertEqual(res,0) - def test_count_ED_wo (self): - '''Testet einen String ohne E und D''' - res=self.c.count_ED ("Hallo") - self.assertEqual(res,0) - def test_count_ED_case_insensitive (self): - '''Testet verschiedene Groß- und Kleinschreibungen''' - res=self.c.count_ED ("Der Esel") - self.assertEqual(res,4) - def test_count_ED_single_letetr (self): - '''Testet Eingaben mit nur einem Buchstaben''' - res=self.c.count_ED ('D') - self.assertEqual(res,1) - res=self.c.count_ED ('E') - self.assertEqual (res,1) - res=self.c.count_ED ('d') - self.assertEqual(res,1) - res=self.c.count_ED ('e') - self.assertEqual (res,1) -if __name__=="__main__": - unittest.main() \ No newline at end of file diff --git a/Project_tests/other/PikkemaatLasse/interfaces.py b/Project_tests/other/PikkemaatLasse/interfaces.py deleted file mode 100644 index fc645736ebe7edf2091db66c3738825f50fd923f..0000000000000000000000000000000000000000 --- a/Project_tests/other/PikkemaatLasse/interfaces.py +++ /dev/null @@ -1,6 +0,0 @@ -from abc import ABC, abstractmethod - -class IRomanNumerals(ABC): - @abstractmethod - def to_roman(self, num): - pass \ No newline at end of file diff --git a/Project_tests/other/PikkemaatLasse/romannumerals.py b/Project_tests/other/PikkemaatLasse/romannumerals.py new file mode 100644 index 0000000000000000000000000000000000000000..a1cc589d210b30bd0f7cc7ceec79daea98bbee45 --- /dev/null +++ b/Project_tests/other/PikkemaatLasse/romannumerals.py @@ -0,0 +1,93 @@ +from abc import ABC, abstractmethod + +class IRomanNumerals(ABC): + @abstractmethod + def to_roman(self, num): + pass + +class RomanNumerals(IRomanNumerals): + def to_roman(self, num): + if not isinstance(num, int): + raise ValueError("Eingabe muss eine ganze Zahl sein") + if num <= 0 or num >= 4000: + raise ValueError("Zahl muss zwischen 1 und 3999 liegen") + + val = [ + (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), + (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), + (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), + (1, "I") + ] + + result = "" + for (value, numeral) in val: + while num >= value: + result += numeral + num -= value + return result + + +import unittest + + +class TestRomanNumerals(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") + + 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_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_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_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_to_roman_invalid(self): + with self.assertRaises(ValueError): + self.converter.to_roman(0) + with self.assertRaises(ValueError): + self.converter.to_roman(-1) + with self.assertRaises(ValueError): + self.converter.to_roman(4000) + with self.assertRaises(ValueError): + self.converter.to_roman("ABC") + with self.assertRaises(ValueError): + self.converter.to_roman(None) + with self.assertRaises(ValueError): + self.converter.to_roman(3.14) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/Project_tests/report.md b/Project_tests/report.md index 99fe936afe1c5d9a0fe8b004fd059dbdc037c393..6f81ce1724b467df0c5cd1d5de12e90cb4da664d 100644 --- a/Project_tests/report.md +++ b/Project_tests/report.md @@ -3,7 +3,7 @@ | AliciMuhamed | yes (4) | test_convertFloat test_convertNegative test_convertZero | | BerishaAlma | no | all except one (test_convertThree) | | GotsisWasilios | no | 23/26 failed (test_convertTwenty, test_convertSixty, test_convertSeventy successful) | -| | | | +| PikkemaatLasse | yes (8) | none | | | | | | | | | | | | | \ No newline at end of file