diff --git a/.idea/StringCalculator.iml b/.idea/StringCalculator.iml new file mode 100644 index 0000000000000000000000000000000000000000..d0876a78d06ac03b5d78c8dcdb95570281c6f1d6 --- /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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..53246cf689694abc6d024abf602d890c37fb07f3 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..41f666fdc4d0e39d619a00d678088cdbfca15376 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 b8e4935f3a5abe52c006b13965c8f9abf2433d46..f7c4c1221c4d42297357b1fccd3569a34afc3a21 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