From b0e2d9ade119276210481526a26bf2f509b5c6a0 Mon Sep 17 00:00:00 2001 From: Hatice Yildirim <Hatice.Yildirim@student.reutlingen-university.de> Date: Fri, 28 Mar 2025 21:25:13 +0100 Subject: [PATCH] Feature implementiert: feature2.py --- feature2.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 feature2.py diff --git a/feature2.py b/feature2.py new file mode 100644 index 0000000..b7fdb6e --- /dev/null +++ b/feature2.py @@ -0,0 +1,40 @@ +from abc import ABC, abstractmethod +import unittest + +class IStringCalculator(ABC): + @abstractmethod + def add(self, numbers: str) -> int: + pass + +class StringCalculator(IStringCalculator): + def add(self, numbers: str) -> int: + if not numbers: + return 0 + # Ersetze Zeilenumbrüche durch Kommas und teile die Eingabe nach Kommas + numbers = numbers.replace("\n", ",") + return sum(map(int, numbers.split(','))) + +class TestStringCalculator(unittest.TestCase): + def setUp(self): + self.calculator = StringCalculator() + + def test_empty_string(self): + self.assertEqual(self.calculator.add(""), 0) + + def test_single_number(self): + self.assertEqual(self.calculator.add("1"), 1) + + def test_two_numbers(self): + self.assertEqual(self.calculator.add("1,2"), 3) + + def test_multiple_numbers(self): + self.assertEqual(self.calculator.add("1,2,3,4,5"), 15) + + def test_numbers_with_newline(self): + self.assertEqual(self.calculator.add("1\n2,3"), 6) + + def test_numbers_with_multiple_newlines(self): + self.assertEqual(self.calculator.add("1\n2\n3\n4\n5"), 15) + +if __name__ == "__main__": + unittest.main() -- GitLab