From 97042e0e5c076c481f1b676d7abc06f0f52ca52a Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 22:45:41 +0100
Subject: [PATCH 01/15] =?UTF-8?q?Definition=20von=20Testfa=C3=A4llen=20des?=
 =?UTF-8?q?=20Basis=20Programms?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/interfaces.py              | 0
 src/stringcalculator.py        | 0
 tests/test_stringclaculator.py | 5 +++++
 3 files changed, 5 insertions(+)
 create mode 100644 src/interfaces.py
 create mode 100644 src/stringcalculator.py
 create mode 100644 tests/test_stringclaculator.py

diff --git a/src/interfaces.py b/src/interfaces.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/stringcalculator.py b/src/stringcalculator.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
new file mode 100644
index 0000000..b8e4935
--- /dev/null
+++ b/tests/test_stringclaculator.py
@@ -0,0 +1,5 @@
+# Basis
+# Bei Eingabe keiner Zahl soll eine 0 ausgegeben werden
+# Bei Eingabe einer 1 soll 1 ausgegeben werden
+# Bei Eingabe einer 3,4 soll 7 ausgegeben werden
+# Bei Eingabe einer 10,20 soll 30 ausgegeben werden
\ No newline at end of file
-- 
GitLab


From d0480620beab25f7c95f9d211704a423f2861d3e Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 22:49:10 +0100
Subject: [PATCH 02/15] Erstellung der Klassen und Methoden, Unterscheidung von
 Calculator, Interface und Tests

---
 .idea/StringCalculator.iml     |  8 ++++++++
 src/interfaces.py              |  6 ++++++
 src/stringcalculator.py        |  7 +++++++
 tests/test_stringclaculator.py | 25 ++++++++++++++++++++++++-
 4 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 .idea/StringCalculator.iml

diff --git a/.idea/StringCalculator.iml b/.idea/StringCalculator.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/.idea/StringCalculator.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/src/interfaces.py b/src/interfaces.py
index e69de29..53246cf 100644
--- a/src/interfaces.py
+++ b/src/interfaces.py
@@ -0,0 +1,6 @@
+from abc import ABC, abstractmethod
+
+class IStringCalculator(ABC):
+    @abstractmethod
+    def add(self, numbers: str) -> int:
+        pass
\ No newline at end of file
diff --git a/src/stringcalculator.py b/src/stringcalculator.py
index e69de29..41f666f 100644
--- a/src/stringcalculator.py
+++ b/src/stringcalculator.py
@@ -0,0 +1,7 @@
+from src.interfaces import IStringCalculator
+
+class StringCalculator(IStringCalculator):
+    def add(self, numbers: str) -> int:
+        if not numbers:
+            return 0
+        return sum(map(int, numbers.split(',')))
\ No newline at end of file
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index b8e4935..f7c4c12 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -2,4 +2,27 @@
 # Bei Eingabe keiner Zahl soll eine 0 ausgegeben werden
 # Bei Eingabe einer 1 soll 1 ausgegeben werden
 # Bei Eingabe einer 3,4 soll 7 ausgegeben werden
-# Bei Eingabe einer 10,20 soll 30 ausgegeben werden
\ No newline at end of file
+# Bei Eingabe einer 10,20 soll 30 ausgegeben werden
+
+import unittest
+from src.interfaces import IStringCalculator
+from src.stringcalculator import StringCalculator
+
+class TestStringCalculator(unittest.TestCase):
+    def setUp(self):
+        self.calculator: IStringCalculator = StringCalculator()  # Zugriff über das Interface
+
+    def test_add_empty_string(self):
+        self.assertEqual(self.calculator.add(""), 0)
+
+    def test_add_single_number(self):
+        self.assertEqual(self.calculator.add("1"), 1)
+
+    def test_add_two_numbers(self):
+        self.assertEqual(self.calculator.add("10,20"), 30)
+
+if __name__ == "__main__":
+    unittest.main()
+
+# python -m unittest tests.test_stringcalculator
+# python -m unittest discover -s tests
\ No newline at end of file
-- 
GitLab


From 003f7deb4ac7b1337417920d1435736149261048 Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 22:55:01 +0100
Subject: [PATCH 03/15] Erstellung der Testszenarien von Feature1

---
 tests/test_stringclaculator.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index f7c4c12..c297b1d 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -3,6 +3,9 @@
 # Bei Eingabe einer 1 soll 1 ausgegeben werden
 # Bei Eingabe einer 3,4 soll 7 ausgegeben werden
 # Bei Eingabe einer 10,20 soll 30 ausgegeben werden
+#Feature1
+# Bei Eingabe einer 1,2,3 soll 6 ausgegeben werden
+# Bei Eingabe einer 10,20,30,40 soll 100 ausgegeben werden
 
 import unittest
 from src.interfaces import IStringCalculator
-- 
GitLab


From 89c26e8029983a7fc70f98d3f389a11490e46239 Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 22:59:58 +0100
Subject: [PATCH 04/15] Umsetzung der Testszenarien von Feature1

---
 tests/test_stringclaculator.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index c297b1d..c428c05 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -6,6 +6,8 @@
 #Feature1
 # Bei Eingabe einer 1,2,3 soll 6 ausgegeben werden
 # Bei Eingabe einer 10,20,30,40 soll 100 ausgegeben werden
+#Feature2
+# Bei Eingabe einer
 
 import unittest
 from src.interfaces import IStringCalculator
@@ -24,6 +26,10 @@ class TestStringCalculator(unittest.TestCase):
     def test_add_two_numbers(self):
         self.assertEqual(self.calculator.add("10,20"), 30)
 
+    def test_add_multiple_numbers(self):
+        self.assertEqual(self.calculator.add("1,2,3"), 6)
+        self.assertEqual(self.calculator.add("10,20,30,40"), 100)
+
 if __name__ == "__main__":
     unittest.main()
 
-- 
GitLab


From b8ab3a4ecc6444b8b6da745a0fb947a0a112f7c9 Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 23:16:13 +0100
Subject: [PATCH 05/15] Erstellung der Testszenarien von Feature2

---
 tests/test_stringclaculator.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index c428c05..34863d4 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -3,11 +3,12 @@
 # Bei Eingabe einer 1 soll 1 ausgegeben werden
 # Bei Eingabe einer 3,4 soll 7 ausgegeben werden
 # Bei Eingabe einer 10,20 soll 30 ausgegeben werden
-#Feature1
+#Feature1 Längere Zahlenfolge
 # Bei Eingabe einer 1,2,3 soll 6 ausgegeben werden
 # Bei Eingabe einer 10,20,30,40 soll 100 ausgegeben werden
-#Feature2
-# Bei Eingabe einer
+#Feature2 Neues Trennzeichen neben dem Komma
+# Bei Eingabe von 1\n2,3 soll 6 ausgegeben werden
+# Bei Eingabe von 10\n20\n30 soll 60 ausgegeben werden
 
 import unittest
 from src.interfaces import IStringCalculator
-- 
GitLab


From fcafdbfd82b75dc8112bd9e371add03d2c8b8c85 Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 23:27:02 +0100
Subject: [PATCH 06/15] Umsetzung der Testszenarien von Feature2

---
 src/stringcalculator.py        | 8 +++++++-
 tests/test_stringclaculator.py | 4 ++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/stringcalculator.py b/src/stringcalculator.py
index 41f666f..748f0de 100644
--- a/src/stringcalculator.py
+++ b/src/stringcalculator.py
@@ -1,7 +1,13 @@
 from src.interfaces import IStringCalculator
+import re
+
 
 class StringCalculator(IStringCalculator):
     def add(self, numbers: str) -> int:
         if not numbers:
             return 0
-        return sum(map(int, numbers.split(',')))
\ No newline at end of file
+
+        # Erlaubt Kommas und Zeilenumbrüche als Trennzeichen
+        tokens = re.split(r"[,\n]", numbers)
+
+        return sum(map(int, tokens))
\ No newline at end of file
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index 34863d4..dbafdfe 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -31,6 +31,10 @@ class TestStringCalculator(unittest.TestCase):
         self.assertEqual(self.calculator.add("1,2,3"), 6)
         self.assertEqual(self.calculator.add("10,20,30,40"), 100)
 
+    def test_add_with_newline_separator(self):
+        self.assertEqual(self.calculator.add("1\n2,3"), 6)
+        self.assertEqual(self.calculator.add("10\n20\n30"), 60)
+
 if __name__ == "__main__":
     unittest.main()
 
-- 
GitLab


From f1b89449df6e574c31af2bb6dbd10d9ae1f8f5ef Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Wed, 26 Mar 2025 23:41:34 +0100
Subject: [PATCH 07/15] Erstellung der Testszenarien von Feature3

---
 tests/test_stringclaculator.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index dbafdfe..88f079a 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -9,6 +9,9 @@
 #Feature2 Neues Trennzeichen neben dem Komma
 # Bei Eingabe von 1\n2,3 soll 6 ausgegeben werden
 # Bei Eingabe von 10\n20\n30 soll 60 ausgegeben werden
+#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]
 
 import unittest
 from src.interfaces import IStringCalculator
-- 
GitLab


From 759998e481039e48696fb49167156fcb2cb29b3e Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Thu, 27 Mar 2025 00:03:23 +0100
Subject: [PATCH 08/15] Umsetzung der Testszenarien von Feature3

---
 src/stringcalculator.py        | 17 ++++++++++++++---
 tests/test_stringclaculator.py | 14 +++++++++++++-
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/stringcalculator.py b/src/stringcalculator.py
index 748f0de..9c4ba23 100644
--- a/src/stringcalculator.py
+++ b/src/stringcalculator.py
@@ -7,7 +7,18 @@ class StringCalculator(IStringCalculator):
         if not numbers:
             return 0
 
-        # Erlaubt Kommas und Zeilenumbrüche als Trennzeichen
-        tokens = re.split(r"[,\n]", numbers)
+        # Prüfe auf das ungültige Format "1,\n"
+        if ",\n" in numbers:
+            raise ValueError("Ungültiges Zahlenformat: ',\\n' ist nicht erlaubt")
 
-        return sum(map(int, tokens))
\ No newline at end of file
+        # Trenne Zahlen anhand von Komma oder Zeilenumbruch
+        tokens = re.split(r",|\n", numbers)
+
+        # Konvertiere zu Integern und finde negative Zahlen
+        numbers_list = list(map(int, tokens))
+        negative_numbers = [num for num in numbers_list if num < 0]
+
+        if negative_numbers:
+            raise ValueError(f"Negative nicht erlaubt: {negative_numbers}")
+
+        return sum(numbers_list)
\ No newline at end of file
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index 88f079a..42e9681 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -38,8 +38,20 @@ class TestStringCalculator(unittest.TestCase):
         self.assertEqual(self.calculator.add("1\n2,3"), 6)
         self.assertEqual(self.calculator.add("10\n20\n30"), 60)
 
+    def test_add_single_negative_number(self):
+        with self.assertRaises(ValueError) as context:
+            self.calculator.add("1,-2,3")
+        print(str(context.exception))
+        self.assertEqual(str(context.exception), "Negative nicht erlaubt: [-2]")
+
+    def test_add_multiple_negative_numbers(self):
+        with self.assertRaises(ValueError) as context:
+            self.calculator.add("-10\n-20,-30")
+        print(str(context.exception))
+        self.assertEqual(str(context.exception), "Negative nicht erlaubt: [-10, -20, -30]")
+
 if __name__ == "__main__":
     unittest.main()
 
 # python -m unittest tests.test_stringcalculator
-# python -m unittest discover -s tests
\ No newline at end of file
+# python -m unittest discover -s tests -v
\ No newline at end of file
-- 
GitLab


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 09/15] 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 10/15] 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 11/15] 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


From 0cea59b14e6047792a86049d8fb4c3803228651e Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Thu, 27 Mar 2025 17:57:37 +0100
Subject: [PATCH 12/15] Erstellung der Testszenarien von Feature4

---
 tests/test_stringclaculator.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index 2fc7ede..d72bf6e 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -16,6 +16,10 @@
 # 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
+#Feature5 Zahlen größer 1000 nicht erkennen
+# Bei Eingabe von 2,1001 soll 2 ausgegeben werden
+# Bei Eingabe von 1002, 50200 soll 0 asugegeben werden
+
 
 import unittest
 from src.interfaces import IStringCalculator
-- 
GitLab


From 0273a32425a40603640e31ab7ff53bb870879a14 Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Thu, 27 Mar 2025 17:59:44 +0100
Subject: [PATCH 13/15] Umsetzung der Testszenarien von Feature4

---
 src/stringcalculator.py        | 2 ++
 tests/test_stringclaculator.py | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/src/stringcalculator.py b/src/stringcalculator.py
index a1463b3..4b8e76f 100644
--- a/src/stringcalculator.py
+++ b/src/stringcalculator.py
@@ -27,4 +27,6 @@ class StringCalculator(IStringCalculator):
         if negative_numbers:
             raise ValueError(f"Negative nicht erlaubt: {negative_numbers}")
 
+        numbers_list = [num for num in numbers_list if num <= 1000]
+
         return sum(numbers_list)
\ No newline at end of file
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index d72bf6e..a0c1d76 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -67,6 +67,10 @@ class TestStringCalculator(unittest.TestCase):
             self.calculator.add("//;1;2")
         print(str(context.exception))
 
+    def test_ignore_numbers_greater_than_1000(self):
+        self.assertEqual(self.calculator.add("2,1001"), 2)
+        self.assertEqual(self.calculator.add("1002,50200"), 0)
+
 if __name__ == "__main__":
     unittest.main()
 
-- 
GitLab


From e1ba37c2d8a5e02e2fe64ae9651a1200fa96552f Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Thu, 27 Mar 2025 18:08:14 +0100
Subject: [PATCH 14/15] Erstellung der Testszenarien von Feature6

---
 tests/test_stringclaculator.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index a0c1d76..002343c 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -19,6 +19,9 @@
 #Feature5 Zahlen größer 1000 nicht erkennen
 # Bei Eingabe von 2,1001 soll 2 ausgegeben werden
 # Bei Eingabe von 1002, 50200 soll 0 asugegeben werden
+#Feature6 Begrenzungszeichen beliebig lang
+# Bei Eingabe von //[**]\n1**2**3 soll 6 ausgegeben werden
+# Bei Eingabe von //[###]\n10###20###30 soll 60 ausgegeben werden
 
 
 import unittest
-- 
GitLab


From aaf56c8ecbbb71fc0fb82d08c322cc80800d886d Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Thu, 27 Mar 2025 18:12:41 +0100
Subject: [PATCH 15/15] Umsetzung der Testszenarien von Feature6

---
 src/stringcalculator.py        | 6 +++++-
 tests/test_stringclaculator.py | 4 ++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/stringcalculator.py b/src/stringcalculator.py
index 4b8e76f..fc7e89a 100644
--- a/src/stringcalculator.py
+++ b/src/stringcalculator.py
@@ -11,7 +11,11 @@ class StringCalculator(IStringCalculator):
             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]
+            delimiter_part = numbers[2:delimiter_end_index]
+            if delimiter_part.startswith("[") and delimiter_part.endswith("]"):
+                delimiter = delimiter_part[1:-1]
+            else:
+                delimiter = delimiter_part
             numbers = numbers[delimiter_end_index + 1:]
             numbers = numbers.replace(delimiter, ",")
 
diff --git a/tests/test_stringclaculator.py b/tests/test_stringclaculator.py
index 002343c..e2e765b 100644
--- a/tests/test_stringclaculator.py
+++ b/tests/test_stringclaculator.py
@@ -74,6 +74,10 @@ class TestStringCalculator(unittest.TestCase):
         self.assertEqual(self.calculator.add("2,1001"), 2)
         self.assertEqual(self.calculator.add("1002,50200"), 0)
 
+    def test_add_with_custom_delimiter_multiple_characters(self):
+        self.assertEqual(self.calculator.add("//[**]\n1**2**3"), 6)
+        self.assertEqual(self.calculator.add("//[###]\n10###20###30"), 60)
+
 if __name__ == "__main__":
     unittest.main()
 
-- 
GitLab