From aaa555f66212c4e7c2ffcf5d306c6f8b945a8627 Mon Sep 17 00:00:00 2001 From: DaniRafeh28 <daniel.rafeh@student.reutlingen-university.de> Date: Thu, 20 Mar 2025 13:03:26 +0100 Subject: [PATCH] =?UTF-8?q?Liste=20f=C3=BCr=20Tests=20erstellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/calculator.cpython-312.pyc | Bin 0 -> 3501 bytes calculator.py | 66 +++++++++++++++++++++++++ converter.py | 33 +++++++++++++ counter.py | 55 +++++++++++++++++++++ test_calculator.py | 38 ++++++++++++++ 5 files changed, 192 insertions(+) create mode 100644 __pycache__/calculator.cpython-312.pyc create mode 100644 calculator.py create mode 100644 converter.py create mode 100644 counter.py create mode 100644 test_calculator.py diff --git a/__pycache__/calculator.cpython-312.pyc b/__pycache__/calculator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c79c8eed669ab1f2545621177cf866fa57d22f5 GIT binary patch literal 3501 zcmd5;UvC>l5Z}E&_QkQCq)lj`spB-IaDfCOpb{lQ4W$JtWCEp#T9M4zw@GdMC+wZm z+6t%-c}N~mB2^+m;tNFi3VZ{eq7o%Kfk5KPZy^_i)F)>4Y{zy@(h453C(Z57?9S}Y z{$^%>3WWj$+Jo<%*_2AiA2_Hr7>nk91HUz55|d_0j>c(Dic6G8<UL|ai^P-}-ITql zaanK`;Hpfna}`+Y%c^k|{{E~lr^J=&dJSfFFf|kQ);H4nYOUnc0~HkMk|R&PbJYnO zNz3L&%FZ$SPQgqyE|aPQ_e1Ec5k}(FByow!CS4?(RbgC#G3>oQhTWQS!`KI7I7MCV zFR8lE>HOfTkxdn|hF##P>XGZVaqKF>Xo+ml*aq2<9mQhV8HXAUO<Fi18jU{6q%Ke2 zvKY6f-=CWPD9_&I>3KFi#f^JuYmOH(>`Oa(ljWFYGakJ(J=Z80wOQ&;zK|`<rdiUk z(u~_|G@Z{E<_$Yt$g})(s=mXqxsoFrrdjT4*!CDOaFZ_H?tSvR7IdLQjy?_7U<&U* zf^eywgyXF_vQ<nrn*fGb(2WavfczKjxnj0iJ1~N%_<zxErstcr14AgTYme!gqa_k~ zBgYa6Cy+?w3T82j{a_;TRnf?L5{^#gT}VzN=|ge`iEtZwLAZ<iu!jWUU`+v8B)jVA zKP9S$T$%WK_prC;gWl8g#0ueZVIl?E>y1`>?gi)^1_p*jTm(a0!4QBT1>nbh0`P%< z!8-<-z&qZ=8d;zVQW<(T$x%oV-YJI<RU#Ijfn{zdko#n}t9x~PxwsU395e0g0TPd~ zhZoUg4}keB@OT8tW58@@1ft{^BY4qGMgX4!PiF*<e~b|XQj-yY>0pzQnC|EO$Pov8 z4tq}kMzK*OcnS;eVv+0v{`&TPHR58=gA`7T>6GKYJ+xj0$??!KRREaZ^a0gMeu%H| zr;zLpagnM)6|_N_sY30%&~4XcwcNZw5_Mk51E4O6JvubCK{<lU!WmI7U#S+eZ_Sl^ zn{AE>?u$6rL*p+!XCDkKDc|}$pwvyk3=DOF{x6^d=qDNYx3&z<XlW)jrA<5#w67_w ztCd)fCFlY*<=PxdN<>#;6;xHhxfRT-y3C)4pSWMA)3BhF*w-)<ZAjv<j?DP1g=V7F zBWpJJH-V+#Ov|Zjf|p^obrA@JVffU_%<{}iW;wIovp)GS99fcgwcw7{zoqrBpI$e% zwde`(2^J!*1F86d)O;dxFCK=E0%_v}ELLru0D^H?;y&(#Q|li;3=f`2Cm<3lSWGGy z`!y$s+H;f>u%@<k0thaFq9;T`a$6fZ0Z8bD9dq0^A8BxcsJ%xy0ZV^dCxGBB)b=_O zQ6(CKzgD{4RS=8dZ<GQLn_UfZLN=??HweW<ffv@&GKk-n)|e<LzP#aUObWwf9CF%S zc!l2vy_hEM$+yW}s>?BsDCTHiSDc`i9X>JA7PFkdXGXTju5n)AUIr09LcllX$8M1m zzzK<DDN$y;P#$cTG#VycK@DR-AbEs(c0!S@P~?a5c4%Zb*u8Rn`TEL@<r}Mfef;O( zxxZx+erYE(vK1P6WZ}!`yK@urkLslAkLew)1?&Zo^H-3(hU85o6G*NgX?a%-BM*r< zPZT;($`q<b_BBZz+7DF8dC_xW7!h|XmgpVuP)?>e=2`C{hqvt25UrR`+vpM}aQL)# zG|wfFdWGHQy*S#0_egx3Ujsde0P8Z4J(*Ja8yP-Ox@c&1_<+Fg;6f+uTRnR~;O7ny b+WjjTI#32^WcBl%zKdIZ7ylwK5L^8Rl8bv* literal 0 HcmV?d00001 diff --git a/calculator.py b/calculator.py new file mode 100644 index 0000000..1a0959c --- /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 0000000..39548ef --- /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 0000000..2126ece --- /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 0000000..0ecaa8b --- /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 + -- GitLab