From 2f67019cafada1168bed66a9ff95b3b56f4be66e Mon Sep 17 00:00:00 2001
From: Marvin Serchimo <marvin.serchimo@student.reutlingen-university.de>
Date: Sun, 6 Apr 2025 21:29:51 +0200
Subject: [PATCH] 10 tests failed

---
 feature7                                      |   5 +-
 other/YildirimHatice/StringCalculator.py      |  29 ++++++
 .../StringCalculator.cpython-313.pyc          | Bin 0 -> 2547 bytes
 other/YildirimHatice/feature6.py              |  94 ++++++++++++++++++
 report.md                                     |   2 +-
 5 files changed, 127 insertions(+), 3 deletions(-)
 create mode 100644 other/YildirimHatice/StringCalculator.py
 create mode 100644 other/YildirimHatice/__pycache__/StringCalculator.cpython-313.pyc
 create mode 100644 other/YildirimHatice/feature6.py

diff --git a/feature7 b/feature7
index 604c685..e8d1959 100644
--- a/feature7
+++ b/feature7
@@ -1,6 +1,7 @@
 import re 
 import unittest
-from other.AliciMuhamed.Stringcalculator import StringCalculator as Momo
+from other.YildirimHatice.StringCalculator import StringCalculator as Hatice
+
 
 
 
@@ -56,7 +57,7 @@ class TestStringCalculator(unittest.TestCase):
 
     def setUp(self):
         """neue Instanz des StringCalculators vor jedem Test"""
-        self.calculator = Momo()
+        self.calculator = Hatice()
 
     def test_empty_string_returns_zero(self):
         """Feature 1: Leerer String soll 0 ergeben"""
diff --git a/other/YildirimHatice/StringCalculator.py b/other/YildirimHatice/StringCalculator.py
new file mode 100644
index 0000000..f9a7682
--- /dev/null
+++ b/other/YildirimHatice/StringCalculator.py
@@ -0,0 +1,29 @@
+from abc import ABC, abstractmethod
+import unittest
+
+class IStringCalculator(ABC):
+    @abstractmethod
+    def add(self, numbers: str) -> int:
+        pass
+
+class StringCalculator(IStringCalculator):
+    def add(self, numbers: str) -> int:
+        if not numbers:
+            return 0
+        return sum(map(int, numbers.split(',')))
+
+class TestStringCalculator(unittest.TestCase):
+    def setUp(self):
+        self.calculator = StringCalculator()
+    
+    def test_empty_string(self):
+        self.assertEqual(self.calculator.add(""), 0)
+    
+    def test_single_number(self):
+        self.assertEqual(self.calculator.add("1"), 1)
+    
+    def test_two_numbers(self):
+        self.assertEqual(self.calculator.add("1,2"), 3)
+
+if __name__ == "__main__":
+    unittest.main()
\ No newline at end of file
diff --git a/other/YildirimHatice/__pycache__/StringCalculator.cpython-313.pyc b/other/YildirimHatice/__pycache__/StringCalculator.cpython-313.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cd8616fab3e7de2312217bc1a90a8ec2c248f4d4
GIT binary patch
literal 2547
zcmc&#%}*Og6rcUF7h_@qCc&ms2&73|8H@vNQB}2SX_Yh)RApnSZ7i+U_Tp@1uj$OX
zRdPa=N^|KgNaU2Lr*Pv>39=&4G-@mL<eP=5dhL5-uVXtT*UaHJZ{EE5c<=Y-O>1N%
zM4)Zdk4vgT$Uivno7NFpzk{$t3}Q&P$W4h#H)SeM<5<3>P-T+L5JQO*L(NGU*aI6?
zg;oP?Ag6Y<n$QM8tLK#UaND*QyOzP6ZVY|+4I$PTAz%wQ*k(wkqnaiqxg;k-4IC$A
zu6+903O{4znMbXHSFydj)#6&AcYW8j1<>x09HEjysBB17$*G2%(+njSSW*o&PQF+D
zV`$LOs9p*rg8b~4hDRN@v|^PDwX)?^X+wpbc+jm?@-}5WKy9x^-Gbb6ssu8|r-i0F
zq(t_lwLP*YbCucU4XT5dq5bqUzn#i5*d|r6=#P$@`n+1GRczN|sq2n+qn1xuj5#G2
zRdd%;Rqw7%Q{Ot}qC=g^4a;*1c53i`^PBg$Vik*g;+3n<gBk<E5VpwQdbkAwp~%l#
zVu<Ue=~@-rG<nE0E7fAHjB?mCf2djI&P>EKHyp~mvg6ur)ikLHhXM?6#c@443VZPh
z(_|iA&$K)UU%uwq3{3GHiUiXLLcj;yg3SPIlOt`sDNEYO?qZWb_hhk!T}vT>Xbbi2
z<+!qsX50Z=>oPz;%|NmWBx^p&GyvoV1-YYxv1<&$a={NpsgG1-O^})wM`Wd|&|@nC
z-6iP`k}ldEv}#NKwMbT45Bl1dy&-2ht1_MR@yC})LRq7z<We%Ba)s3@T&Y-_bP{zM
z+blaC9RazMNbQJ<;713&LfY~1vsr*G@@M4S(RlPlWbEPML$-VU@#>@1r?d5U=Ii6B
zdSv05zR-?wJ1KNJ4vT0MVFKYC!g&O|iJ+UtP#Pe23Uvq=NQO(dNmEv|G%^d_lg0nA
zYoCR7eSG@CY$ai4kk2?&9jrrC!)J?p0tSr$JlSAE=h53X^9Ezkz>F*S+k#9mxPs3a
z5O&B*{`@MCCFQPtiO^v%OUS|{9x8Op!Jb6VzzjpvX~6=pV|&?69zX3K^I{HpVi>S3
z@*@6TJ)V4^{uU9T=({35Q*p)bK-eK!vfjNAC^`+ao#gQ~*suGAuSaP}etJRTb=E*d
z#Z==^6Txy%;logIZ0dc1Po7=@U7KP|_Ff;)!i)AyyRzxsgQt!al3za6-&gD~pV&o!
zEpnuX5B13deR4PY_`;(Lhq2^AEctZ39$VPI_*`Fls{xVH4GcD&Lm2daOnAk>Yp9Uz
zpMYO^z59KJ_<-K%zfq5+_tVey%-i(;zLHK}Yhd!79)VF20q>`3$9=}%eZBuZW>_lT
z=zX>xTipNpx&DFhJ|T%5gwN^JI+Vcsr4W`7mJv=XMwf5`0jmH*2DZsDd?$0q0ZGds
zy#Fu2vN%&1;$K*?9M?1xA^1-71u9~p!cwl+T*pKI+dmi<FRr8aD;7K*aTX>yS8;=Z
zy2$m9+8^u3^b@eb6k}@uO+}KVzsT$#ByyrE(#WoILZCYdsZ#pc`Ku=c`jhamw7k1~
lIF&q@N}doHG~+}KKe%64Vn=HD*VUg_fBCAZ5H&9R_#a;u_eTH#

literal 0
HcmV?d00001

diff --git a/other/YildirimHatice/feature6.py b/other/YildirimHatice/feature6.py
new file mode 100644
index 0000000..949c324
--- /dev/null
+++ b/other/YildirimHatice/feature6.py
@@ -0,0 +1,94 @@
+from abc import ABC, abstractmethod
+import unittest
+
+class IStringCalculator(ABC):
+    @abstractmethod
+    def add(self, numbers: str) -> int:
+        pass
+
+class StringCalculator(IStringCalculator):
+    def add(self, numbers: str) -> int:
+        if not numbers:
+            return 0
+        
+        # Überprüfe, ob ein benutzerdefiniertes Trennzeichen angegeben ist
+        if numbers.startswith("//"):
+            delimiter_line_end = numbers.find("\n")
+            delimiter = numbers[2:delimiter_line_end]  # Extrahiere das Trennzeichen
+            numbers = numbers[delimiter_line_end + 1:]  # Entferne die erste Zeile mit dem Trennzeichen
+            
+        else:
+            delimiter = ','  # Standard-Trennzeichen ist Komma, wenn keine Zeile mit dem Trennzeichen vorhanden ist
+
+        # Ersetze alle Vorkommen des Trennzeichens und teile die Eingabe
+        numbers = numbers.replace("\n", delimiter)
+        nums = numbers.split(delimiter)
+        
+        # Filtere alle Zahlen, die größer als 1000 sind
+        nums = [int(num) for num in nums if int(num) <= 1000]
+        
+        # Prüfe auf negative Zahlen
+        negatives = [num for num in nums if num < 0]
+        
+        if negatives:
+            # Wenn negative Zahlen vorhanden sind, werfe eine Ausnahme
+            raise ValueError(f"Negatives not allowed: {', '.join(map(str, negatives))}")
+        
+        # Berechne die Summe der Zahlen, die <= 1000 sind
+        return sum(nums)
+
+class TestStringCalculator(unittest.TestCase):
+    def setUp(self):
+        self.calculator = StringCalculator()
+    
+    def test_empty_string(self):
+        self.assertEqual(self.calculator.add(""), 0)
+    
+    def test_single_number(self):
+        self.assertEqual(self.calculator.add("1"), 1)
+    
+    def test_two_numbers(self):
+        self.assertEqual(self.calculator.add("1,2"), 3)
+    
+    def test_multiple_numbers(self):
+        self.assertEqual(self.calculator.add("1,2,3,4,5"), 15)
+    
+    def test_numbers_with_newline(self):
+        self.assertEqual(self.calculator.add("1\n2,3"), 6)
+    
+    def test_numbers_with_multiple_newlines(self):
+        self.assertEqual(self.calculator.add("1\n2\n3\n4\n5"), 15)
+    
+    def test_negative_number(self):
+        with self.assertRaises(ValueError) as context:
+            self.calculator.add("1,-2,3")
+        self.assertEqual(str(context.exception), "Negatives not allowed: -2")
+    
+    def test_multiple_negative_numbers(self):
+        with self.assertRaises(ValueError) as context:
+            self.calculator.add("1,-2,-3,4")
+        self.assertEqual(str(context.exception), "Negatives not allowed: -2, -3")
+    
+    def test_custom_delimiter(self):
+        self.assertEqual(self.calculator.add("//;\n1;2"), 3)
+    
+    def test_custom_delimiter_with_newline(self):
+        self.assertEqual(self.calculator.add("//;\n1;2\n3"), 6)
+    
+    def test_custom_delimiter_with_multiple_numbers(self):
+        self.assertEqual(self.calculator.add("//|\n1|2|3|4"), 10)
+    
+    def test_numbers_greater_than_1000(self):
+        self.assertEqual(self.calculator.add("2,1001"), 2)
+    
+    def test_numbers_greater_than_1000_with_custom_delimiter(self):
+        self.assertEqual(self.calculator.add("//;\n2;1001"), 2)
+    
+    def test_long_delimiter(self):
+        self.assertEqual(self.calculator.add("//[***]\n1***2***3"), 6)
+    
+    def test_long_delimiter_with_multiple_numbers(self):
+        self.assertEqual(self.calculator.add("//[---]\n1---2---3---4"), 10)
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/report.md b/report.md
index 8284d84..a4b8de5 100644
--- a/report.md
+++ b/report.md
@@ -8,4 +8,4 @@
 | PikkemaatLasse    | –                | –                 |
 | RafehDaniel       | no               | 2                 |
 | WeishauptOrlando  | –                | –                 |
-| YildirimHatice    | –                | –                 |
+| YildirimHatice    | –                | 10                |
-- 
GitLab