From 2e9f47613284d228c50c037edba63210f854e200 Mon Sep 17 00:00:00 2001
From: DaniRafeh28 <daniel.rafeh@student.reutlingen-university.de>
Date: Wed, 26 Mar 2025 14:37:20 +0100
Subject: [PATCH] Test successful

---
 stringCalculator.py | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/stringCalculator.py b/stringCalculator.py
index 9f0f035..078714f 100644
--- a/stringCalculator.py
+++ b/stringCalculator.py
@@ -10,9 +10,13 @@
 # Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden (z.B. //;\n1;2 = 3)
 # Bei Eingabe von Zahlen >1000 sollen diese ignoriert werden (z.B. 2 + 1001 = 2)
 # Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden. Trennzeichen können unbegrenzt lang sein (z.B. “//[***]\n1***2***3” = 6).
+# Bei der eingabe verschiedener Trennzeichen sollen trotzdem die Zahlen erkannt und zusammen addiert werden (--;\n1;2 = 3)
+
+
 import unittest
 from abc import ABC, abstractmethod
 
+
 class IStringCalculator(ABC):
     @abstractmethod
     def add(self, numbers: str) -> int: 
@@ -25,14 +29,29 @@ class StringCalculator(IStringCalculator):
         if numbers == "":
             return 0
         
+        '''Standard-Trennzeichen'''
+        delimiter = ";"
+        
+        '''Es wird geprüft ob ein benutzerdefiniertes Trennzeichen vorhanden ist.'''
         if numbers.startswith("//"):
-            delimiter = numbers[2:3]
-            numbers = numbers[4:]
-            list = numbers.split(delimiter)
+            sep = numbers.split("\n", 1) 
+            delimiter_sep = sep[0][2:]
+
+            '''Für den Fall, dass das Trennzeichen in eckigen Klammern steht werden die Klammern entfernt und das Trennzeichen gespeichert'''
+            if delimiter_sep.startswith("[") and delimiter_sep.endswith("]"):
+                delimiter = delimiter_sep[1:-1]
 
-        else:
-            '''Zahlen werden aufgeteilt'''
-            list = numbers.replace("\n", ",").split(",")
+            else:
+                delimiter = delimiter_sep[0]
+
+            '''Entfernen der ersten Zeile, damit nur noch Zahlen übrig bleiben'''
+            numbers = sep[1]
+
+        '''Ersetzen von Zeilenumbrüchen mit Delimiter und ersetzen von Delimiter durch ",", um splitten zu können'''
+        numbers = numbers.replace("\n", delimiter).replace(delimiter, ",")
+
+        list = numbers.split(",")
+        result = 0
         
         result = 0
         for num in list:
@@ -106,6 +125,9 @@ class TestStringCalculator(unittest.TestCase):
         res = self.c.add("2, 1001")
         self.assertEqual(res, 2)
 
+    def test_multidelimiter(self):
+        res = self.c.add("//[***]\n1***2***3")
+        self.assertEqual(res, 6)
 
 if __name__ == "__main__":
     unittest.main()
\ No newline at end of file
-- 
GitLab