From 551079f10a45f4f11d04865f1398f406a031bc62 Mon Sep 17 00:00:00 2001 From: DaniRafeh28 <daniel.rafeh@student.reutlingen-university.de> Date: Tue, 1 Apr 2025 19:00:58 +0200 Subject: [PATCH] 8 errors detected --- Project_tests/converter.py | 7 +- .../__pycache__/romannumerals.cpython-312.pyc | Bin 0 -> 7981 bytes .../other/PikkemaatLasse/calculator.py | 29 ------ Project_tests/other/PikkemaatLasse/counter.py | 48 --------- .../other/PikkemaatLasse/interfaces.py | 6 -- .../other/PikkemaatLasse/romannumerals.py | 93 ++++++++++++++++++ Project_tests/report.md | 2 +- 7 files changed, 98 insertions(+), 87 deletions(-) create mode 100644 Project_tests/other/PikkemaatLasse/__pycache__/romannumerals.cpython-312.pyc delete mode 100644 Project_tests/other/PikkemaatLasse/calculator.py delete mode 100644 Project_tests/other/PikkemaatLasse/counter.py delete mode 100644 Project_tests/other/PikkemaatLasse/interfaces.py create mode 100644 Project_tests/other/PikkemaatLasse/romannumerals.py diff --git a/Project_tests/converter.py b/Project_tests/converter.py index 73d592b..3156cb9 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 GIT binary patch literal 7981 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 QzZ-t%4LGggUvT>JUm%l{KL7v# literal 0 HcmV?d00001 diff --git a/Project_tests/other/PikkemaatLasse/calculator.py b/Project_tests/other/PikkemaatLasse/calculator.py deleted file mode 100644 index e799761..0000000 --- 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 00cf9c0..0000000 --- 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 fc64573..0000000 --- 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 0000000..a1cc589 --- /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 99fe936..6f81ce1 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 -- GitLab