From 8b1190da7f51bb51799940923d8e4fab25552cdd Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Sun, 6 Apr 2025 17:08:37 +0200
Subject: [PATCH] Hatice Code + Tests

---
 others/Hatice/HaticeRomanConverter.py | 55 +++++++++++++++++++++++++++
 others/Hatice/reportHaticeImp.md      |  7 ++++
 others/Hatice/reportHaticeTests.md    |  3 ++
 tests/test_romannumerals.py           |  5 ++-
 4 files changed, 69 insertions(+), 1 deletion(-)
 create mode 100644 others/Hatice/HaticeRomanConverter.py
 create mode 100644 others/Hatice/reportHaticeImp.md
 create mode 100644 others/Hatice/reportHaticeTests.md

diff --git a/others/Hatice/HaticeRomanConverter.py b/others/Hatice/HaticeRomanConverter.py
new file mode 100644
index 0000000..37d8b16
--- /dev/null
+++ b/others/Hatice/HaticeRomanConverter.py
@@ -0,0 +1,55 @@
+#Bei Eingabe von Zahlen, die in der Liste definiert sind, sollen römische Zhalen zurückgegeben werden.
+#Bei Eingabe von Zahlen, die nicht in der Liste definiert ist, soll ein "" ausgeben werden.
+'''
+import unittest
+from abc import ABC, abstractmethod
+
+class IRomanNumber(ABC):
+    @abstractmethod
+    def convert(self, n:int) -> str:
+        pass
+
+class RomanNumber(IRomanNumber):
+    def convert(self, n: int) -> str:
+        roman_numerals = {
+            1: "I",  2: "II", 3: "III", 
+            4: "IV",  5: "V", 9: "IX", 
+            21: "XXI",  50: "L", 100: "C",
+            500: "D",  1000: "M" 
+        }
+        return roman_numerals.get(n, "")
+'''
+import unittest
+from src.romannumerals import RomanNumber
+from src.interfaces import IRomanNumber
+
+class TestRomanConverter(unittest.TestCase):
+    def setUp(self):
+        self.converter = RomanNumber()
+
+    def test_single_value(self):
+        self.assertEqual(self.converter.convert(1), "I")
+        self.assertEqual(self.converter.convert(2), "II")
+        self.assertEqual(self.converter.convert(3), "III")
+        self.assertEqual(self.converter.convert(4), "IV")
+        self.assertEqual(self.converter.convert(5), "V")
+        self.assertEqual(self.converter.convert(9), "IX")
+        self.assertEqual(self.converter.convert(21), "XXI")
+        self.assertEqual(self.converter.convert(50), "L")
+        self.assertEqual(self.converter.convert(100), "C")
+        self.assertEqual(self.converter.convert(500), "D")
+        self.assertEqual(self.converter.convert(1000), "M")
+    
+    def test_inivalid_numbers(self):
+        self.assertEqual(self.converter.convert(6), "")
+        self.assertEqual(self.converter.convert(99), "")
+        self.assertEqual(self.converter.convert(-1), "")
+        
+
+
+
+
+if __name__ == "__main__":
+    unittest.main()
+
+#python -m unittest others.Hatice.HaticeRomanConverter -v
\ No newline at end of file
diff --git a/others/Hatice/reportHaticeImp.md b/others/Hatice/reportHaticeImp.md
new file mode 100644
index 0000000..b03fd0b
--- /dev/null
+++ b/others/Hatice/reportHaticeImp.md
@@ -0,0 +1,7 @@
+| Name   | Interface break | Failed Testcases                                                               |                                       |
+|--------|-----------------|--------------------------------------------------------------------------------|---------------------------------------|
+| Hatice | no              | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... FAIL      | AssertionError: '' != 'II' + II       |
+| Hatice | no              | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... FAIL       | AssertionError: ValueError not raised |
+| Hatice | no              | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'MI' + MI       |
+| Hatice | no              | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... FAIL         | AssertionError: '' != 'XIV' + XIV     |
+| Hatice | no              | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... FAIL   | AssertionError: '' != 'IV' + IV       |
\ No newline at end of file
diff --git a/others/Hatice/reportHaticeTests.md b/others/Hatice/reportHaticeTests.md
new file mode 100644
index 0000000..5a4d3b6
--- /dev/null
+++ b/others/Hatice/reportHaticeTests.md
@@ -0,0 +1,3 @@
+| Name   | Interface break | Failed Testcases                                                                       |                                 |
+|--------|-----------------|----------------------------------------------------------------------------------------|---------------------------------|
+| Hatice | no              | test_inivalid_numbers (others.Hatice.HaticeRomanConverter.TestRomanConverter) ... FAIL | AssertionError: 'VI' != '' - VI |
\ No newline at end of file
diff --git a/tests/test_romannumerals.py b/tests/test_romannumerals.py
index 578d302..1a97477 100644
--- a/tests/test_romannumerals.py
+++ b/tests/test_romannumerals.py
@@ -56,9 +56,12 @@ from others.Dani.DaniRomanConverter import Converter, IConverter
 
 import unittest
 from others.Momo.MomoRomanConverter import convert
-'''
+
 import unittest
 from others.Alma.AlmaRomanConverter import IRomanNumber, RomanNumber
+'''
+import unittest
+from others.Hatice.HaticeRomanConverter import IRomanNumber, RomanNumber
 
 class TestRomanNumber(unittest.TestCase):
     def setUp(self):
-- 
GitLab