From aeb186d0cb3fdb7429a067ca4798011f894a34a1 Mon Sep 17 00:00:00 2001 From: DaniRafeh28 <daniel.rafeh@student.reutlingen-university.de> Date: Fri, 4 Apr 2025 12:33:40 +0200 Subject: [PATCH] 2/26 Tests failed - 5 errors - Report Table adjusted - Modified Orlandos Code to run the tests because there was no Class and Interface defined. --- Project_tests/converter.py | 6 +- .../test_roman.py => RomanConverter.py} | 64 ++++++++++- .../RomanConverter.cpython-312.pyc | Bin 0 -> 4238 bytes .../other/WeishauptOrlando/src/Count_ED.py | 8 -- .../WeishauptOrlando/src/RomanConverter.py | 50 --------- .../other/WeishauptOrlando/src/__init__.py | 53 --------- .../other/WeishauptOrlando/src/calculator.py | 44 -------- .../other/WeishauptOrlando/src/interfaces.py | 17 --- .../WeishauptOrlando/tests/TestCount_ED.py | 34 ------ .../other/WeishauptOrlando/tests/__init__.py | 0 .../WeishauptOrlando/tests/test_calculator.py | 103 ------------------ Project_tests/report.md | 20 ++-- 12 files changed, 74 insertions(+), 325 deletions(-) rename Project_tests/other/WeishauptOrlando/{tests/test_roman.py => RomanConverter.py} (57%) create mode 100644 Project_tests/other/WeishauptOrlando/__pycache__/RomanConverter.cpython-312.pyc delete mode 100644 Project_tests/other/WeishauptOrlando/src/Count_ED.py delete mode 100644 Project_tests/other/WeishauptOrlando/src/RomanConverter.py delete mode 100644 Project_tests/other/WeishauptOrlando/src/__init__.py delete mode 100644 Project_tests/other/WeishauptOrlando/src/calculator.py delete mode 100644 Project_tests/other/WeishauptOrlando/src/interfaces.py delete mode 100644 Project_tests/other/WeishauptOrlando/tests/TestCount_ED.py delete mode 100644 Project_tests/other/WeishauptOrlando/tests/__init__.py delete mode 100644 Project_tests/other/WeishauptOrlando/tests/test_calculator.py diff --git a/Project_tests/converter.py b/Project_tests/converter.py index da0273d..3700d4c 100644 --- a/Project_tests/converter.py +++ b/Project_tests/converter.py @@ -31,7 +31,8 @@ from abc import ABC, abstractmethod #from other.BerishaAlma.test2converter import RomanNumber as AlmaCalc #from other.GotsisWasilios.TDD_Converter import WasiliRomanNumber as WasiliCalc #from other.PikkemaatLasse.romannumerals import RomanNumerals as LasseCalc -from other.YildirimHatice.converter import RomanNumber as HaticeCalc +#from other.YildirimHatice.converter import RomanNumber as HaticeCalc +from other.WeishauptOrlando.RomanConverter import RomanConverter_v1 as OrlandoCalc class IConverter(ABC): @abstractmethod @@ -74,7 +75,8 @@ class DanisConverter(IConverter): class TestConverter(unittest.TestCase): def setUp(self): - self.c = HaticeCalc() + self.c = OrlandoCalc() + self.c.convert = self.c.int_to_roman def test_convertOne(self): diff --git a/Project_tests/other/WeishauptOrlando/tests/test_roman.py b/Project_tests/other/WeishauptOrlando/RomanConverter.py similarity index 57% rename from Project_tests/other/WeishauptOrlando/tests/test_roman.py rename to Project_tests/other/WeishauptOrlando/RomanConverter.py index 30cbabf..4bb414a 100644 --- a/Project_tests/other/WeishauptOrlando/tests/test_roman.py +++ b/Project_tests/other/WeishauptOrlando/RomanConverter.py @@ -1,3 +1,62 @@ +import sys +import os +import unittest +from abc import ABC, abstractmethod + +class IRomanConverter(ABC): + @abstractmethod + def int_to_roman(self, num: int) -> str: + pass + +class RomanConverter_v1(IRomanConverter): + def int_to_roman(self, num: int) -> str: + """Konvertiert eine Dezimalzahl in eine römische Zahl.""" + val = [ + 1000, 900, 500, 400, + 100, 90, 50, 40, + 10, 9, 5, 4, + 1 + ] + syb = [ + "M", "CM", "D", "CD", + "C", "XC", "L", "XL", + "X", "IX", "V", "IV", + "I" + ] + roman_num = '' + i = 0 + while num > 0: + for _ in range(num // val[i]): + roman_num += syb[i] + num -= val[i] + i += 1 + return roman_num + + +"""class RomanConverter(IRomanConverter): + def roman_to_int(self, s: str) -> int: + Konvertiert eine römische Zahl (String) in eine Dezimalzahl. + roman_values = { + 'I': 1, 'V': 5, 'X': 10, 'L': 50, + 'C': 100, 'D': 500, 'M': 1000 + } + + total = 0 + prev_value = 0 + + # Iteriere über die Zeichen der römischen Zahl von rechts nach links + for char in reversed(s.upper()): + value = roman_values.get(char) + if value is None: + raise ValueError(f"Ungültiges Zeichen '{char}' in der römischen Zahl.") + if value < prev_value: + total -= value + else: + total += value + prev_value = value + + return total""" + # Testfälle roman_to_int, str -> int # 1. Einzelne römische Ziffern @@ -33,11 +92,6 @@ import sys import os import unittest -# Füge das src-Verzeichnis zum Python-Pfad hinzu -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../src'))) - -from src.RomanConverter import RomanConverter # Importiere die zu testende Klasse - class TestRomanConverter(unittest.TestCase): def setUp(self): self.converter = RomanConverter() diff --git a/Project_tests/other/WeishauptOrlando/__pycache__/RomanConverter.cpython-312.pyc b/Project_tests/other/WeishauptOrlando/__pycache__/RomanConverter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d3d28d2916e32b38f3d3155a2711b2c79ccbe5d GIT binary patch literal 4238 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 literal 0 HcmV?d00001 diff --git a/Project_tests/other/WeishauptOrlando/src/Count_ED.py b/Project_tests/other/WeishauptOrlando/src/Count_ED.py deleted file mode 100644 index 3b6973a..0000000 --- a/Project_tests/other/WeishauptOrlando/src/Count_ED.py +++ /dev/null @@ -1,8 +0,0 @@ -from src.interfaces import ICounter - - -class Counter(ICounter): - def count_ed(self, s: str) -> int: - """Zählt die Anzahl der Buchstaben 'E' und 'D' in einem String (Case-Insensitive).""" - s = s.upper() - return s.count("D") + s.count("E") diff --git a/Project_tests/other/WeishauptOrlando/src/RomanConverter.py b/Project_tests/other/WeishauptOrlando/src/RomanConverter.py deleted file mode 100644 index e45a5e2..0000000 --- a/Project_tests/other/WeishauptOrlando/src/RomanConverter.py +++ /dev/null @@ -1,50 +0,0 @@ -from src.interfaces import IRomanConverter - - -def int_to_roman(num: int) -> str: - """Konvertiert eine Dezimalzahl in eine römische Zahl.""" - val = [ - 1000, 900, 500, 400, - 100, 90, 50, 40, - 10, 9, 5, 4, - 1 - ] - syb = [ - "M", "CM", "D", "CD", - "C", "XC", "L", "XL", - "X", "IX", "V", "IV", - "I" - ] - roman_num = '' - i = 0 - while num > 0: - for _ in range(num // val[i]): - roman_num += syb[i] - num -= val[i] - i += 1 - return roman_num - - -class RomanConverter(IRomanConverter): - def roman_to_int(self, s: str) -> int: - """Konvertiert eine römische Zahl (String) in eine Dezimalzahl.""" - roman_values = { - 'I': 1, 'V': 5, 'X': 10, 'L': 50, - 'C': 100, 'D': 500, 'M': 1000 - } - - total = 0 - prev_value = 0 - - # Iteriere über die Zeichen der römischen Zahl von rechts nach links - for char in reversed(s.upper()): - value = roman_values.get(char) - if value is None: - raise ValueError(f"Ungültiges Zeichen '{char}' in der römischen Zahl.") - if value < prev_value: - total -= value - else: - total += value - prev_value = value - - return total diff --git a/Project_tests/other/WeishauptOrlando/src/__init__.py b/Project_tests/other/WeishauptOrlando/src/__init__.py deleted file mode 100644 index 1b733ab..0000000 --- a/Project_tests/other/WeishauptOrlando/src/__init__.py +++ /dev/null @@ -1,53 +0,0 @@ -from src.calculator import Calculator -from src.Count_ED import Counter -from src.RomanConverter import RomanConverter, int_to_roman - -if __name__ == "__main__": - # Erstelle eine Instanz der Calculator-Klasse - calc = Calculator() - - # Eine Liste von Test-Ausdrücken, die überprüft werden sollen - test_expressions = [ - "2+3", # Einfacher Additionstest - "10-4/2", # Test mit Division und Subtraktion - "(3+5)*2", # Komplexerer Ausdruck mit Klammern - "3++5", # Ungültiger Ausdruck (doppelte Operatoren) - "3--5", # Ungültiger Ausdruck (doppelte Operatoren) - "10*/2", # Ungültiger Ausdruck (Operatorenkombinationen) - "5/0", # Division durch Null (Fehler) - "(3+5))", # Ungültiger Ausdruck (zu viele Klammern) - "abc", # Ungültiger Ausdruck (nur Buchstaben) - "-3*-3" # Gültiger Ausdruck mit Vorzeichen - ] - - # Schleife, um alle Test-Ausdrücke zu durchlaufen - for expr in test_expressions: - try: - # Versuche, den Ausdruck zu berechnen und gebe das Ergebnis aus - print(f"Eingabe: '{expr}' → Ausgabe: {calc.calculate(expr)}") - except Exception as e: - # Wenn ein Fehler auftritt, gebe die Fehlermeldung aus - print(f"Eingabe: '{expr}' → Fehler: {e}") -print("______________________________________________________________") -if __name__ == "__main__": - counter = Counter() - test_strings = ["Decker", "", "Hallo", "Der Esel", "D", "E", "d", "e"] - - for string in test_strings: - print(f"Eingabe: '{string}' → Ausgabe: {counter.count_ed(string)}") - -print("______________________________________________________________") - -if __name__ == "__main__": - converter = RomanConverter() - # Test römische Zahl in Dezimalzahl umwandeln - print("Test römische Zahl in Dezimalzahl umwandeln") - print(converter.roman_to_int("MCMXCIV")) # Ausgabe: 1994 - print(converter.roman_to_int("XIV")) # Ausgabe: 14 - print(converter.roman_to_int("CDXLIV")) # Ausgabe: 444 - - # Test Dezimalzahl in römische Zahl umwandeln - print("Test Dezimalzahl in römische Zahl umwand") - print(int_to_roman(1994)) # Ausgabe: MCMXCIV - print(int_to_roman(14)) # Ausgabe: XIV - print(int_to_roman(444)) # Ausgabe: CDXLIV \ No newline at end of file diff --git a/Project_tests/other/WeishauptOrlando/src/calculator.py b/Project_tests/other/WeishauptOrlando/src/calculator.py deleted file mode 100644 index f4b4785..0000000 --- a/Project_tests/other/WeishauptOrlando/src/calculator.py +++ /dev/null @@ -1,44 +0,0 @@ -import re -from src.interfaces import ICalculator - - -class Calculator(ICalculator): - """Ein Taschenrechner, der mathematische Ausdrücke berechnet.""" - - def calculate(self, expression: str) -> float: - """Berechnet einen mathematischen Ausdruck als String und überprüft auf ungültige Eingaben.""" - try: - # Entfernt überflüssige Leerzeichen - expression = expression.replace(" ", "") - - # Nur erlaubte Zeichen (Zahlen, Operatoren, Klammern) und Zahlen mit Vorzeichen - if not re.match(r'^[0-9+\-*/().]+$', expression): - raise ValueError("Ungültige Zeichen im Ausdruck.") - - # Überprüfung auf doppelte Operatoren, aber keine Vorzeichen wie -* oder -+ - # Hier wird jetzt auch sichergestellt, dass -3*-3 gültig bleibt - if re.search(r'(?<!\d)[+\-*/]{2,}', expression): # Erfasst auch doppelte Operatoren wie ++, --, **, etc. - raise SyntaxError("Ungültige doppelte Operatoren im Ausdruck.") - - # Sicherstellen, dass Klammern ausgeglichen sind - if expression.count("(") != expression.count(")"): - raise ValueError("Fehlende oder zu viele Klammern.") - - # Sicherstellen, dass der Ausdruck nicht mit einem Operator beginnt oder endet, - # aber das Minuszeichen als Teil der Zahl akzeptiert wird - if re.match(r'^[*/]', expression) or re.match(r'[*/]$', expression): # Weitere Kontrolle - raise ValueError("Der Ausdruck darf nicht mit einem Operator beginnen oder enden.") - - # Evaluierung des mathematischen Ausdrucks mit eval() - result = eval(expression, {"__builtins__": None}, {}) - - # Sicherstellen, dass das Ergebnis numerisch ist - if isinstance(result, (int, float)): - return float(result) - else: - raise ValueError("Ungültiger Ausdruck.") - - except ZeroDivisionError: - raise ZeroDivisionError("Division durch Null ist nicht erlaubt.") - except (SyntaxError, TypeError, NameError) as e: - raise ValueError(f"Ungültiger mathematischer Ausdruck: {str(e)}") diff --git a/Project_tests/other/WeishauptOrlando/src/interfaces.py b/Project_tests/other/WeishauptOrlando/src/interfaces.py deleted file mode 100644 index e9c300f..0000000 --- a/Project_tests/other/WeishauptOrlando/src/interfaces.py +++ /dev/null @@ -1,17 +0,0 @@ -from abc import ABC, abstractmethod - -class ICounter(ABC): - @abstractmethod - def count_ed(self, s: str) -> int: - """Zählt die Buchstaben 'E' und 'D' in einem String (Case-Insensitive).""" - pass -class IRomanConverter(ABC): - @abstractmethod - def roman_to_int(self, s: str) -> int: - """Konvertiert eine römische Zahl (String) in eine Dezimalzahl.""" - pass - -class ICalculator(ABC): - @abstractmethod - def calculate(self, expression: str) -> float: - pass \ No newline at end of file diff --git a/Project_tests/other/WeishauptOrlando/tests/TestCount_ED.py b/Project_tests/other/WeishauptOrlando/tests/TestCount_ED.py deleted file mode 100644 index 152bccd..0000000 --- a/Project_tests/other/WeishauptOrlando/tests/TestCount_ED.py +++ /dev/null @@ -1,34 +0,0 @@ -import unittest -import sys -import os - -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../src'))) -from src.Count_ED import Counter - -class TestCounter(unittest.TestCase): - def setUp(self): - self.c = Counter() - - def test_count_ed_regular(self): - self.assertEqual(self.c.count_ed("Decker"), 3) - - def test_count_ed_empty(self): - self.assertEqual(self.c.count_ed(""), 0) - - def test_count_ed_wo(self): - """Testet einen String ohne E und D""" - self.assertEqual(self.c.count_ed("Hallo"), 0) - - def test_count_ed_case_insensitive(self): - """Testet verschiedene Groß- und Kleinschreibungen""" - self.assertEqual(self.c.count_ed("Der Esel"), 4) - - def test_count_ED_single_letter(self): - """Testet Eingaben mit nur einem Buchstaben""" - self.assertEqual(self.c.count_ed('D'), 1) - self.assertEqual(self.c.count_ed('E'), 1) - self.assertEqual(self.c.count_ed('d'), 1) - self.assertEqual(self.c.count_ed('e'), 1) - -if __name__ == "__main__": - unittest.main() \ No newline at end of file diff --git a/Project_tests/other/WeishauptOrlando/tests/__init__.py b/Project_tests/other/WeishauptOrlando/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Project_tests/other/WeishauptOrlando/tests/test_calculator.py b/Project_tests/other/WeishauptOrlando/tests/test_calculator.py deleted file mode 100644 index a0c7931..0000000 --- a/Project_tests/other/WeishauptOrlando/tests/test_calculator.py +++ /dev/null @@ -1,103 +0,0 @@ -# Testfälle für calculate(), Eingabe: str, Ausgabe: float/int - -# 1ï¸âƒ£ Additionstests -# Eingabe: "1+1" → Erwartete Ausgabe: 2 -# Eingabe: "10+20" → Erwartete Ausgabe: 30 -# Eingabe: "0+5" → Erwartete Ausgabe: 5 -# Eingabe: "-3+7" → Erwartete Ausgabe: 4 -# Eingabe: "2.5+2.5" → Erwartete Ausgabe: 5.0 - -# 2ï¸âƒ£ Subtraktionstests -# Eingabe: "5-3" → Erwartete Ausgabe: 2 -# Eingabe: "10-20" → Erwartete Ausgabe: -10 -# Eingabe: "0-5" → Erwartete Ausgabe: -5 -# Eingabe: "-3-7" → Erwartete Ausgabe: -10 -# Eingabe: "2.5-1.5" → Erwartete Ausgabe: 1.0 - -# 3ï¸âƒ£ Multiplikationstests -# Eingabe: "2*3" → Erwartete Ausgabe: 6 -# Eingabe: "10*0" → Erwartete Ausgabe: 0 -# Eingabe: "-2*5" → Erwartete Ausgabe: -10 -# Eingabe: "3.5*2" → Erwartete Ausgabe: 7.0 -# Eingabe: "-3*-3" → Erwartete Ausgabe: 9 - -# 4ï¸âƒ£ Divisionstests -# Eingabe: "10/2" → Erwartete Ausgabe: 5 -# Eingabe: "5/2" → Erwartete Ausgabe: 2.5 -# Eingabe: "-6/3" → Erwartete Ausgabe: -2 -# Eingabe: "7.5/2.5" → Erwartete Ausgabe: 3.0 -# Eingabe: "5/0" → Erwartete Ausgabe: ZeroDivisionError (Fehlermeldung) - -# 5ï¸âƒ£ Komplexe Berechnungen -# Eingabe: "3+5*2" → Erwartete Ausgabe: 13 (Multiplikation vor Addition) -# Eingabe: "(3+5)*2" → Erwartete Ausgabe: 16 (Klammer zuerst) -# Eingabe: "10-4/2" → Erwartete Ausgabe: 8 (Division vor Subtraktion) -# Eingabe: "3+(2*5)-8/4" → Erwartete Ausgabe: 10 (Mehrere Operatoren) - -# 6ï¸âƒ£ Ungültige Eingaben -# Eingabe: "3++5" → Erwartete Ausgabe: SyntaxError (Fehlermeldung) -# Eingabe: "10*/2" → Erwartete Ausgabe: SyntaxError (Fehlermeldung) -# Eingabe: "abc" → Erwartete Ausgabe: ValueError (Fehlermeldung) - - -import unittest -from src.calculator import Calculator - -class TestCalculator(unittest.TestCase): - def setUp(self): - self.calc = Calculator() - - # Addition - def test_addition(self): - self.assertEqual(self.calc.calculate("1+1"), 2) - self.assertEqual(self.calc.calculate("10+20"), 30) - self.assertEqual(self.calc.calculate("0+5"), 5) - self.assertEqual(self.calc.calculate("-3+7"), 4) - self.assertEqual(self.calc.calculate("2.5+2.5"), 5.0) - - # Subtraktion - def test_subtraction(self): - self.assertEqual(self.calc.calculate("5-3"), 2) - self.assertEqual(self.calc.calculate("10-20"), -10) - self.assertEqual(self.calc.calculate("0-5"), -5) - self.assertEqual(self.calc.calculate("-3-7"), -10) - self.assertEqual(self.calc.calculate("2.5-1.5"), 1.0) - - # Multiplikation - def test_multiplication(self): - self.assertEqual(self.calc.calculate("2*3"), 6) - self.assertEqual(self.calc.calculate("10*0"), 0) - self.assertEqual(self.calc.calculate("-2*5"), -10) - self.assertEqual(self.calc.calculate("3.5*2"), 7.0) - self.assertEqual(self.calc.calculate("-3*-3"), 9) - - # Division - def test_division(self): - self.assertEqual(self.calc.calculate("10/2"), 5) - self.assertEqual(self.calc.calculate("5/2"), 2.5) - self.assertEqual(self.calc.calculate("-6/3"), -2) - self.assertEqual(self.calc.calculate("7.5/2.5"), 3.0) - - # Division durch Null - def test_division_by_zero(self): - with self.assertRaises(ZeroDivisionError): - self.calc.calculate("5/0") - - # Komplexe Berechnungen - def test_complex_expressions(self): - self.assertEqual(self.calc.calculate("3+5*2"), 13) # Punkt-vor-Strich beachten - self.assertEqual(self.calc.calculate("(3+5)*2"), 16) # Klammer zuerst - self.assertEqual(self.calc.calculate("10-4/2"), 8) # Division vor Subtraktion - self.assertEqual(self.calc.calculate("3+(2*5)-8/4"), 11.0) # 11 - - # Ungültige Eingaben - def test_invalid_expressions(self): - with self.assertRaises(ValueError): - self.calc.calculate("3++5") - with self.assertRaises(ValueError): - self.calc.calculate("10*/2") - with self.assertRaises(ValueError): - self.calc.calculate("abc") - -if __name__ == "__main__": - unittest.main() \ No newline at end of file diff --git a/Project_tests/report.md b/Project_tests/report.md index 38a751c..8197e73 100644 --- a/Project_tests/report.md +++ b/Project_tests/report.md @@ -1,9 +1,11 @@ -| Name | Interface break | Failed Testcases | -|----------------|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 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 | -| YildirimHatice | no | 15/26 failed (test_convertZero, test_convertYear, test_convertThirty, test_convertTen, test_convertString, test_convertSign, test_convertNintyNine, test_convertNinety, test_convertNegative, test_convertMultipleNum, test_convertHighNum, test_convertFourty, test_convertFourDigit,test_convertFloat,test_convertEmpty) | -| | | | -| | | | \ No newline at end of file +Roman Numbers - Codes of Group members tested with my testcases: + +| Name | Interface break | Failed Testcases | +|------------------|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| AliciMuhamed | yes (4) | 3/26 failed (test_convertFloat, test_convertNegative, test_convertZero) | +| BerishaAlma | no | 25/26 failed (test_convertThree was the only one that was successful) | +| GotsisWasilios | no | 23/26 failed (test_convertTwenty, test_convertSixty, test_convertSeventy successful) | +| PikkemaatLasse | yes (8) | none | +| YildirimHatice | no | 15/26 failed (test_convertZero, test_convertYear, test_convertThirty, test_convertTen, test_convertString, test_convertSign, test_convertNintyNine, test_convertNinety, test_convertNegative, test_convertMultipleNum, test_convertHighNum, test_convertFourty, test_convertFourDigit,test_convertFloat,test_convertEmpty) | +| WeishauptOrlando | yes (5) | 2/26 failed (test_convertZero, test_convertNegative) | +| | | | \ No newline at end of file -- GitLab