From a1d73f826fbcd627317dd1b3aa20c5c6b4471bc0 Mon Sep 17 00:00:00 2001 From: linopino <lasse.pikkemaat@web.de> Date: Thu, 27 Mar 2025 17:33:18 +0100 Subject: [PATCH 1/3] Erstellung der Testszenarien von Feature4 --- tests/test_stringclaculator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py index 42e9681..e503304 100644 --- a/tests/test_stringclaculator.py +++ b/tests/test_stringclaculator.py @@ -12,6 +12,9 @@ #Feature3 Negative Zahlen ausschließen # Bei Eingabe von 1, -2, 3 soll ein Error erscheinen "Negative nicht erlaubt: [-2] # Bei Eingabe von -10\n -20, -30 soll ein Error erscheinen "Negative nicht erlaubt: [-10,-20,30] +#Feature4 Eigene Trennzeichen eingeben +# Bei Eingabe eines neues Trennzeichen ";" //;\n1;2 soll 3 ausgegeben werden +# Bei Eingabe eines neues Trennzeichen "x" //-\n7x8\n9 soll 24 ausgegeben werden import unittest from src.interfaces import IStringCalculator -- GitLab From be6e4e88dd1f63705556b0f464c4f968c596e0be Mon Sep 17 00:00:00 2001 From: linopino <lasse.pikkemaat@web.de> Date: Thu, 27 Mar 2025 17:51:14 +0100 Subject: [PATCH 2/3] Umsetzung der Testszenarien von Feature4 --- src/stringcalculator.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/stringcalculator.py b/src/stringcalculator.py index 9c4ba23..a1463b3 100644 --- a/src/stringcalculator.py +++ b/src/stringcalculator.py @@ -7,17 +7,23 @@ class StringCalculator(IStringCalculator): if not numbers: return 0 - # Prüfe auf das ungültige Format "1,\n" - if ",\n" in numbers: - raise ValueError("Ungültiges Zahlenformat: ',\\n' ist nicht erlaubt") + if numbers.startswith("//"): + if "\n" not in numbers: + raise ValueError("Ungültiges Format: Nicht vollständig") + delimiter_end_index = numbers.index("\n") + delimiter = numbers[2:delimiter_end_index] + numbers = numbers[delimiter_end_index + 1:] + numbers = numbers.replace(delimiter, ",") - # Trenne Zahlen anhand von Komma oder Zeilenumbruch - tokens = re.split(r",|\n", numbers) + numbers = numbers.replace("\n", ",") - # Konvertiere zu Integern und finde negative Zahlen - numbers_list = list(map(int, tokens)) - negative_numbers = [num for num in numbers_list if num < 0] + # Split the string by commas, convert each value to an integer, and sum them up + try: + numbers_list = list(map(int, numbers.split(","))) + except ValueError: + raise ValueError("Ungültiges Zahlenformat: Enthält nicht-numerische Werte") + negative_numbers = [num for num in numbers_list if num < 0] if negative_numbers: raise ValueError(f"Negative nicht erlaubt: {negative_numbers}") -- GitLab From dd90e7acf05d890fbaca465a5ed8309d61d63e7c Mon Sep 17 00:00:00 2001 From: linopino <lasse.pikkemaat@web.de> Date: Thu, 27 Mar 2025 17:51:24 +0100 Subject: [PATCH 3/3] Umsetzung der Testszenarien von Feature4 --- tests/test_stringclaculator.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py index e503304..2fc7ede 100644 --- a/tests/test_stringclaculator.py +++ b/tests/test_stringclaculator.py @@ -13,8 +13,9 @@ # Bei Eingabe von 1, -2, 3 soll ein Error erscheinen "Negative nicht erlaubt: [-2] # Bei Eingabe von -10\n -20, -30 soll ein Error erscheinen "Negative nicht erlaubt: [-10,-20,30] #Feature4 Eigene Trennzeichen eingeben -# Bei Eingabe eines neues Trennzeichen ";" //;\n1;2 soll 3 ausgegeben werden -# Bei Eingabe eines neues Trennzeichen "x" //-\n7x8\n9 soll 24 ausgegeben werden +# Bei Eingabe eines neuen Trennzeichen ";" //;\n1;2 soll 3 ausgegeben werden +# Bei Eingabe eines neuen Trennzeichen "x" //-\n7x8\n9 soll 24 ausgegeben werden +# Bei Eingabe eines neuen Trennzeichens ";" ohne vollständigen Ausdrück //;1;2 soll Ungültiges Format: Nicht vollständig import unittest from src.interfaces import IStringCalculator @@ -53,6 +54,15 @@ class TestStringCalculator(unittest.TestCase): print(str(context.exception)) self.assertEqual(str(context.exception), "Negative nicht erlaubt: [-10, -20, -30]") + def test_add_with_custom_delimiter(self): + self.assertEqual(self.calculator.add("//;\n1;2"), 3) + self.assertEqual(self.calculator.add("//x\n7x8\n9"), 24) + + def test_invalid_custom_delimiter_format(self): + with self.assertRaises(ValueError) as context: + self.calculator.add("//;1;2") + print(str(context.exception)) + if __name__ == "__main__": unittest.main() -- GitLab