diff --git a/__pycache__/calculator.cpython-312.pyc b/__pycache__/calculator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c79c8eed669ab1f2545621177cf866fa57d22f5 Binary files /dev/null and b/__pycache__/calculator.cpython-312.pyc differ diff --git a/calculator.py b/calculator.py new file mode 100644 index 0000000000000000000000000000000000000000..1a0959ccc2817bea126f1ee090960c60bcfab61b --- /dev/null +++ b/calculator.py @@ -0,0 +1,66 @@ +from abc import ABC, abstractmethod +import unittest + +class ICalculator(ABC): + @abstractmethod + def add(self, a, b): + pass + + @abstractmethod + def sub(self, a, b): + pass + + @abstractmethod + def mul(self, a, b): + pass + + @abstractmethod + def div(self, a, b): + pass + +class Calculator(ICalculator): + def add(self, a, b): + return a + b + + def sub(self, a, b): + return a - b + + def mul(self, a, b): + return a * b + + def div(self, a, b): + if b == 0: + raise ValueError("Division durch die Zahl null ist nicht erlaubt") + return a / b + +class TestCalculator(unittest.TestCase): + def setUp(self): + self.calc = Calculator() + + # Test add-function + def test_add(self): + erg = self.calc.add(3, 5) + self.assertEqual(erg, 8) + + # Test sub-function + def test_sub(self): + erg = self.calc.sub(10, 3) + self.assertEqual(erg, 7) + + # Test mul-function + def test_mul(self): + erg = self.calc.mul(4, 6) + self.assertEqual(erg, 24) + + # Test div-function + def test_div(self): + erg = self.calc.div(20, 4) + self.assertEqual(erg, 5) + + # Test div/0 + def test_div_by_zero(self): + with self.assertRaises(ValueError): + self.calc.div(10, 0) + +if __name__ == "__main__": + unittest.main() diff --git a/converter.py b/converter.py new file mode 100644 index 0000000000000000000000000000000000000000..39548efeaea05889ef9d6b551023ff48cd39179d --- /dev/null +++ b/converter.py @@ -0,0 +1,33 @@ +# Bei Eingabe der Zahl 1 soll "I" ausgegeben werden + +# Bei Eingabe der Zahl 2 soll "II" ausgegeben werden + +# Bei Eingabe der Zahl 3 soll "III" ausgegeben werden + +# Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden + +# Bei Eingabe der Zahl 5 soll "V" ausgegeben werden + +# Bei Eingabe der Zahl 9 soll "IX" ausgegeben werden + +# Bei Eingabe der Zahl 10 soll "X" ausgegeben werden + +# Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden + +# Bei Eingabe der Zahl 50 soll "L" ausgegeben werden + +# Bei Eingabe der Zahl 100 soll "C" ausgegeben werden + +# Bei Eingabe der Zahl 500 soll "D" ausgegeben werden + +# Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden + +# Bei Eingabe der Zahl 1111 soll "MCXI" ausgegeben werden + +# Bei Eingabe der Zahl 99 soll "XCIX" ausgegeben werden + +# Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden + +# Bei Eingabe der Zahl 40 soll "XL" ausgegeben werden + +# Bei Eingabe eines Strings statt Integer-Wert soll "Gebe eine Zahl ein" ausgegeben werden \ No newline at end of file diff --git a/counter.py b/counter.py new file mode 100644 index 0000000000000000000000000000000000000000..2126ece1eae74cb5a00151852049b093f1e037e4 --- /dev/null +++ b/counter.py @@ -0,0 +1,55 @@ +from abc import ABC, abstractmethod +import unittest + +# Bei Eingabe des Strings Decker liegert die Funktion 3 + +# Bei Eingabe eines leeren Strings soll 0 ausgegeben werden + +# Bei Eingabe des Strings Hallo soll 0 ausgegeben werden + +# Bei Eingabe von Groß-/Kleinschreibung soll trotzdem der entsprechende Wert rauskommen + +# Bei Eingabe vom Buchstaben D oder E soll trotzdem die 1 rauskommen + +class ICounter(ABC): + @abstractmethod + def count_ED(self, s): + pass + +class Counter(ICounter): + def count_ED(self, s): + s = s.upper() + return s.count("E") + s.count("D") + +class TestCounter(unittest.TestCase): + def setUp(self): + self.c = Counter() + + def test_count_ED_regular(self): + res = self.c.count_ED("Decker") + self.assertEqual(res, 3) + + def test_count_ED_empty(self): + res = self.c.count_ED(" ") + self.assertEqual(res, 0) + + def test_count_ED_wo(self): + res = self.c.count_ED("Hallo") + self.assertEqual(res, 0) + + def test_count_ED_insensetiv(self): + res = self.c.count_ED("Der Esel") + self.assertEqual(res, 4) + + def test_count_ED_oneL(self): + res = self.c.count_ED('E') + self.assertEqual(res, 1) + res = self.c.count_ED('D') + self.assertEqual(res, 1) + res = self.c.count_ED('e') + self.assertEqual(res, 1) + res = self.c.count_ED('d') + self.assertEqual(res, 1) + +if __name__ == "__main__": + unittest.main() diff --git a/test_calculator.py b/test_calculator.py new file mode 100644 index 0000000000000000000000000000000000000000..0ecaa8bd747ea51031fb1bf3f37560a435ea0822 --- /dev/null +++ b/test_calculator.py @@ -0,0 +1,38 @@ +import sys +import unittest +from calculator import Calculator + +class TestCalculator(unittest.TestCase): + + def setUp(self): + self.c = Calculator() + + # Test add-function + def test_add(self): + erg = self.c.add(3, 5) + self.assertEqual(erg, 8) + + # Test sub-function + def test_sub(self): + erg = self.c.sub(10, 3) + self.assertEqual(erg, 7) + + # Test mul-function + def test_mul(self): + erg = self.c.mul(4, 6) + self.assertEqual(erg, 24) + + # Test div-function + def test_div(self): + erg = self.c.div(20, 4) + self.assertEqual(erg, 5) + + # Test div/0 + def test_div_by_zero(self): + with self.assertRaises(ValueError): + self.c.div(10, 0) + + # Test negative numbers + + # Test wrong inputs +