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] 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