From b69dc03cbd99757552d44d5d81dfa44e68a1a544 Mon Sep 17 00:00:00 2001 From: Marvin Serchimo <marvin.serchimo@student.reutlingen-university.de> Date: Wed, 19 Mar 2025 11:45:55 +0100 Subject: [PATCH] Calculator test bsp --- Testliste.txt | 23 ++++++++++++++++++ __pycache__/calculator.cpython-313.pyc | Bin 0 -> 1243 bytes __pycache__/test_calculator.cpython-313.pyc | Bin 0 -> 2162 bytes calculator.py | 21 ++++++++++++++++ calculator_interface.py | 16 +++++++++++++ main.py | 15 ++++++++++++ test_calculator.py | 25 ++++++++++++++++++++ 7 files changed, 100 insertions(+) create mode 100644 Testliste.txt create mode 100644 __pycache__/calculator.cpython-313.pyc create mode 100644 __pycache__/test_calculator.cpython-313.pyc create mode 100644 calculator.py create mode 100644 calculator_interface.py create mode 100644 main.py create mode 100644 test_calculator.py diff --git a/Testliste.txt b/Testliste.txt new file mode 100644 index 0000000..a883b48 --- /dev/null +++ b/Testliste.txt @@ -0,0 +1,23 @@ +Addition: + +Normale Addition add(2, 3) 5 Standardfall +Addition mit Null add(0, 5) 5 Null sollte keinen Einfluss haben +Addition mit negativen Zahlen add(-2, -3) -5 Beide Zahlen negativ +Gemischte Addition (positiv & negativ) add(-5, 10) 5 Addition mit negativem Wert +Addition mit Fließkommazahlen add(2.5, 3.5) 6.0 Floats sollten unterstützt werden +Addition mit sehr großen Zahlen add(1000000, 2000000) 3000000 Test für große Werte +Addition mit sehr kleinen Zahlen add(0.0001, 0.0002) 0.0003 Test für Genauigkeit +Addition mit Ganzzahl und Float add(3, 4.5) 7.5 Mischung aus Int und Float + +Subtraktion: + +Normale Subtraktion sub(5, 3) 2 Standardfall +Subtraktion mit Null sub(7, 0) 7 Null sollte keinen Einfluss haben +Subtraktion mit negativem Ergebnis sub(3, 7) -4 Ergebnis ist negativ +Subtraktion mit negativen Zahlen sub(-5, -3) -2 Beide Zahlen negativ +Subtraktion mit negativem Minuend sub(-2, 5) -7 Negative Zahl als Minuend +Subtraktion mit negativem Subtrahend sub(10, -5) 15 Negative Zahl als Subtrahend +Subtraktion mit Fließkommazahlen sub(5.5, 2.5) 3.0 Floats sollten unterstützt werden +Subtraktion mit sehr großen Zahlen sub(5000000, 2000000) 3000000 Test für große Werte +Subtraktion mit sehr kleinen Zahlen sub(0.0003, 0.0001) 0.0002 Test für Genauigkeit + diff --git a/__pycache__/calculator.cpython-313.pyc b/__pycache__/calculator.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5bcc7e346cb931b9b825f4145da5214858e13549 GIT binary patch literal 1243 zcmah{&rcIU6rR~1ZTV4(Ko!B51_()GpeKw6V^mBOOt`Ej9-2(HyF+QxZt=}7iJUkY z^+aO&NAMr%TqN<t4PChV-fSra6PRSbdGGC;`QE(urN!bX!)1Th&2OBs-{f2@w{N7+ z(daRcdHgNg<iIyAuqtepEiliTW1d~-Yj&0kwuw3zb?f#Z>NIoJ{0XI0Ep5MexvnSt zhKj)t;*N}Wx?zwV&(P{S=@T@1tj>UY3@nd>?OEW|UC*9lYyBk1p^tn6KkvCvAU-{| zvF^8nr0vIDIH3afXE&l)!nPmC$~#{LJ2C<p>_ifRe*NZB>;oe|br5>2$&UEe5j(QA zqhxzqb6@j@qJ&DNq951ZD+#LB@nNqO)n0Xjq$8tP)n2#aH%X(`>4p-bQ0~=&K{2bl zpS10Vp)L(oxQc-su~OR)*l}SzMT6a38H`{G&<J4+;i4)ip`&e;G_F!$z~oNRfoTGA zx2hw$AVlPMq!4;k2&_42lRYlP$HZ^<|CEH-Zh?y1tw=^){GAsf>;^&rH3}vP$_TnF zgo^#R6$n3$q18xYsW8h>8&)b0=&=T<mFf|~XZF)sICiK1Sllh9Hp|VNl69Ix>oS&7 zEUTWb2=E&$8Xc{43E_X~kZ{1r1#&2pyphT1kV+=-*#6>1XSXeBiY*CA)U1S3UDJ!Y zG8Pi75e&Vs$39H0;J(Ce8jk6fp17o@@!!E?DNXc%{U}X-O}>nqXWqhvq_=RHp$v1O z4rY)B76^uPP=I?BnI*VSFh?*?FqkepAotoVA5x5f8mMTzG|QF04tLAvIfRUbGPbHN zioX#6bu3ekQG&VR>b1J?G?U^pSjJ=;uBsrM+MM%WZ1Kz);l;znGltvQ-8?TJ&Yv^f G4B0<sM*9o^ literal 0 HcmV?d00001 diff --git a/__pycache__/test_calculator.cpython-313.pyc b/__pycache__/test_calculator.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e302281147138d3432262dea829951a67f760c78 GIT binary patch literal 2162 zcmd^A&2QX96d!->dbgXjjS`Wqn$`)T!lh&z)JTXg6#?R-Z7O9NREbI>$DV8rUT-tD zgUA6@NI)-0NGOP&%7Mf7#*qWJ{smQ1wG2W+q8HzyZsA(qv)9>8yP^{G#*_T~X5O3k z-n{wEo9@U+l>q(pt!%!i5%LEP3Nm^^SAeiVD51(JBJi)CQr=UAYLQ7YL#TFuQ2hc~ zEENm;|9S9<B=idgHC{STh%-hA*w*s-K|Vv~dqayfm8N2sQXDVXimblj1a1;Iaa*{9 zOO)QAdlZBX@GBHbgh~~mQB~-enJ}mhyhIJ)Wm*zuvuvAk^c;`kzSmR-2gwXDoL{-| zLlAIl<;Ks#@_1;Sb0YU54+VEGhFrKsR1B`dhkNYe+70r-j;`3t5(#$ZU{C7$tM9jk z^&$6o%feXJ$G-3^?uXn8dBUxC!zgybb!)91TK)ViE~1zRLA+qA0^>>Dg_2xXq#p5L zCBhJve7Ug{fnlTNh&4ZKyxDe>77yd7@wOkolPot{ZI6r4<7<r=A~W=m7j^d1C(?*` zymU#9?=H-2Hd_Yw(H>xz$=&fo-<-ape^u$iknE}jo_|&g57OBnOJs3p=V+S~%wo+R zqQwGh1M^g&>U__ZYK3I|cfUF{3U9PjNKe3Tsqd{XJpsQeEf-l*vykA9RP1VU5DNAP zWPNVE?s<Ofx5E?*nBu9VSmN{nP>RPQP|<`BXzXN9ICOHs*5n>10vN?_ttL(&Owdcs z@jOuhDF>QBD9DivM4-t6$%798XO|WiM4tk?Onx_Ox6R3$=Hz$d*Xmd6*QTyceZSh7 z-mD+%I9ulNJ44i>Gq+iPzO%Yz&J9yPX7y_4>CO7=kJ>HsgcyYshGVw&|HN#009!jK z18kXgB{>Ym8ip;JEXTt62;n85n-j4g**;(?J|^inF#j(AT81$|l$bz+97$2K{0Nfv zWmo|XxOLI3JUk3c0|pp2V!-|-o?gfhv1Ok4Cp_IUk7t0fl`QuKyCO}-LZ`(UlU2r` zohAXwHOBC+^fY@JTk)Y?2hh{QHmJ*td2N?5fsdYe3fUAeIl&n8`q+1w6UV||PM{2o zT_;)4?2ZY%vl+wpDZ;{jL4MJX-P2WL`krYR^M8)&#$3JtZ85=?<A;pdWoag%A7g1{ zwcqOV*Tc-~3)ei0fF~_=TqvFav7dl6U&(j*ns^Qr*f=75*|s%BQGO+Re<RcP^)Y4c q>+`oKj@+C$a-YCp`&pvbuB>lr^*eg)%QK&y`TXp*M)U)j+rI&jm$0e; literal 0 HcmV?d00001 diff --git a/calculator.py b/calculator.py new file mode 100644 index 0000000..2298957 --- /dev/null +++ b/calculator.py @@ -0,0 +1,21 @@ +from abc import ABC, abstractmethod + +class ICalculator(ABC): + """Interface Taschenrechner""" + + @abstractmethod + def add(self, a, b): + pass + + @abstractmethod + def sub(self, a, b): + pass + +class Calculator(ICalculator): + """Implementierung des Taschenrechners""" + + def add(self, a, b): + return a + b + + def sub(self, a, b): + return a - b diff --git a/calculator_interface.py b/calculator_interface.py new file mode 100644 index 0000000..5522240 --- /dev/null +++ b/calculator_interface.py @@ -0,0 +1,16 @@ +from abc import ABC, abstractmethod + +class ICalculator(ABC): + """Interface für einen Taschenrechner""" + + @abstractmethod + def add(self, a, b): + """Addiert zwei Zahlen""" + pass + + @abstractmethod + def sub(self, a, b): + """Subtrahiert zwei Zahlen""" + pass + + \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..27faabb --- /dev/null +++ b/main.py @@ -0,0 +1,15 @@ +from calculator import Calculator + +# Instanz der Calculator-Klasse erstellen +calc = Calculator() + +# Funktionen des Taschenrechners verwenden +print("Addition:", calc.add(10, 5)) # → 15 +print("Subtraktion:", calc.sub(10, 5)) # → 5 + + +# Fehlerbehandlung testen (Division durch Null) +try: + print(calc.div(10, 0)) +except ValueError as e: + print("Fehler:", e) # → "Division durch 0 ist nicht erlaubt." diff --git a/test_calculator.py b/test_calculator.py new file mode 100644 index 0000000..30a242d --- /dev/null +++ b/test_calculator.py @@ -0,0 +1,25 @@ +import unittest +from calculator import Calculator + +class TestCalculator(unittest.TestCase): + """Testfälle für den Taschenrechner""" + + def setUp(self): + """Vor jedem Test wird eine neue Instanz von Calculator erstellt""" + self.calc = Calculator() + + def test_addition(self): + """Testfälle für die Addition""" + self.assertEqual(self.calc.add(2, 3), 5) + self.assertEqual(self.calc.add(-1, 1), 0) + self.assertEqual(self.calc.add(0, 0), 0) + self.assertEqual(self.calc.add(3, 4.5), 7.5) + + def test_subtraction(self): + """Testfälle für die Subtraktion""" + self.assertEqual(self.calc.sub(5, 3), 2) + self.assertEqual(self.calc.sub(10, 20), -10) + self.assertEqual(self.calc.sub(0, 0), 0) + +if __name__ == '__main__': + unittest.main() -- GitLab