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