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