From dd0b392a7840ae3673210616b04eddfcae5e7c1d Mon Sep 17 00:00:00 2001
From: linopino <lasse.pikkemaat@web.de>
Date: Sun, 6 Apr 2025 17:01:10 +0200
Subject: [PATCH] Alma Code + Tests

---
 others/Alma/AlmaRomanConverter.py | 42 +++++++++++++++++++++++++++++++
 others/Alma/reportAlmaImp.md      |  7 ++++++
 others/Alma/reportAlmaTests.md    |  0
 tests/test_romannumerals.py       | 19 ++++++++------
 4 files changed, 60 insertions(+), 8 deletions(-)
 create mode 100644 others/Alma/AlmaRomanConverter.py
 create mode 100644 others/Alma/reportAlmaImp.md
 create mode 100644 others/Alma/reportAlmaTests.md

diff --git a/others/Alma/AlmaRomanConverter.py b/others/Alma/AlmaRomanConverter.py
new file mode 100644
index 0000000..e5a434c
--- /dev/null
+++ b/others/Alma/AlmaRomanConverter.py
@@ -0,0 +1,42 @@
+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 = {
+            3: "III",  6: "VI", 8: "VIII",
+            12: "XII",  17: "XVII", 29: "XXIX",
+            34: "XXXIV",  55: "LV", 101: "CI",
+            501: "DI",  1003: "MIII"
+        }
+        return roman_numerals.get(n, "")
+'''
+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(3), "III")
+        self.assertEqual(self.converter.convert(6), "VI")
+        self.assertEqual(self.converter.convert(8), "VIII")
+        self.assertEqual(self.converter.convert(12), "XII")
+        self.assertEqual(self.converter.convert(17), "XVII")
+        self.assertEqual(self.converter.convert(29), "XXIX")
+        self.assertEqual(self.converter.convert(34), "XXXIV")
+        self.assertEqual(self.converter.convert(55), "LV")
+        self.assertEqual(self.converter.convert(101), "CI")
+        self.assertEqual(self.converter.convert(501), "DI")
+        self.assertEqual(self.converter.convert(1003), "MIII")
+
+if __name__ == "__main__":
+    unittest.main()
+
+#python -m unittest others.Alma.AlmaRomanConverter -v
\ No newline at end of file
diff --git a/others/Alma/reportAlmaImp.md b/others/Alma/reportAlmaImp.md
new file mode 100644
index 0000000..a083411
--- /dev/null
+++ b/others/Alma/reportAlmaImp.md
@@ -0,0 +1,7 @@
+| Name | Interface break | Failed Testcases                                                               |                                       |
+|------|-----------------|--------------------------------------------------------------------------------|---------------------------------------|
+| Alma | no              | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... FAIL      | AssertionError: '' != 'II' + II       |
+| Alma | no              | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... FAIL       | AssertionError: ValueError not raised |
+| Alma | no              | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'MI' + MI       |
+| Alma | no              | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... FAIL         | AssertionError: '' != 'XIV' + XIV     |
+| Alma | no              | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... FAIL   | AssertionError: '' != 'IV' + IV       |
\ No newline at end of file
diff --git a/others/Alma/reportAlmaTests.md b/others/Alma/reportAlmaTests.md
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_romannumerals.py b/tests/test_romannumerals.py
index 2ea7d7c..578d302 100644
--- a/tests/test_romannumerals.py
+++ b/tests/test_romannumerals.py
@@ -52,22 +52,25 @@ from others.Orlando.OrlandoInterfaces import IRomanConverter
 
 import unittest
 from others.Dani.DaniRomanConverter import Converter, IConverter
-'''
+
 
 import unittest
 from others.Momo.MomoRomanConverter import convert
+'''
+import unittest
+from others.Alma.AlmaRomanConverter import IRomanNumber, RomanNumber
 
 class TestRomanNumber(unittest.TestCase):
     def setUp(self):
-        self.converter: convert()
+        self.converter: IRomanNumber = RomanNumber()
 
     def test_convert_subtraction(self):
-        self.assertEqual(self.convert(4), "IV")
-        self.assertEqual(self.convert(9), "IX")
-        self.assertEqual(self.convert(40), "XL")
-        self.assertEqual(self.convert(90), "XC")
-        self.assertEqual(self.convert(400), "CD")
-        self.assertEqual(self.convert(900), "CM")
+        self.assertEqual(self.converter.convert(4), "IV")
+        self.assertEqual(self.converter.convert(9), "IX")
+        self.assertEqual(self.converter.convert(40), "XL")
+        self.assertEqual(self.converter.convert(90), "XC")
+        self.assertEqual(self.converter.convert(400), "CD")
+        self.assertEqual(self.converter.convert(900), "CM")
 
     def test_convert_addition(self):
         self.assertEqual(self.converter.convert(2), "II")
-- 
GitLab