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