From 91c5950bfacc3f93e43004feb1bb8cf62087e740 Mon Sep 17 00:00:00 2001
From: Marvin Serchimo <marvin.serchimo@student.reutlingen-university.de>
Date: Tue, 1 Apr 2025 22:21:43 +0200
Subject: [PATCH] coverter

---
 test_converter | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 test_converter

diff --git a/test_converter b/test_converter
new file mode 100644
index 0000000..a16ff01
--- /dev/null
+++ b/test_converter
@@ -0,0 +1,86 @@
+import unittest
+from abc import ABC, abstractmethod
+
+# Interface (abstrakte Basisklasse)
+class IConverter(ABC):
+    @abstractmethod
+    def convert(self, input):
+        pass
+
+# Konkrete Implementierung des Interfaces
+class RomanConverter(IConverter):
+    def convert(self, input):
+        # Bei Eingabe mehrerer Zahlen wie "4,3"
+        if isinstance(input, str) and "," in input:
+            return "Bitte nur eine ganze Zahl eingeben"
+
+        # Typprüfung und Fehlerbehandlung
+        try:
+            if isinstance(input, float):
+                return "Bitte ganze Zahlen eingeben"
+            if isinstance(input, str):
+                if not input.isdigit():
+                    return "Bitte ganze Zahlen eingeben"
+                input = int(input)
+            number = int(input)
+        except (ValueError, TypeError):
+            return "Bitte ganze Zahlen eingeben"
+
+        if number == 0:
+            return "Es gibt keine römische Null"
+        if number < 0:
+            return "Es sind nur positive Zahlen zum konvertieren erlaubt"
+
+        roman_numerals = [
+            (1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'),
+            (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'),
+            (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')
+        ]
+
+        result = ""
+        for value, symbol in roman_numerals:
+            while number >= value:
+                result += symbol
+                number -= value
+        return result
+
+# Testklasse mit 8 funktionierenden Tests
+class TestRomanConverter(unittest.TestCase):
+    def setUp(self):
+        self.converter = RomanConverter()
+
+    # Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
+    def test_1(self):
+        self.assertEqual(self.converter.convert(1), "I")
+
+    # Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
+    def test_4(self):
+        self.assertEqual(self.converter.convert(4), "IV")
+
+    # Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
+    def test_21(self):
+        self.assertEqual(self.converter.convert(21), "XXI")
+
+    # Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
+    def test_1000(self):
+        self.assertEqual(self.converter.convert(1000), "M")
+
+    # Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
+    def test_0(self):
+        self.assertEqual(self.converter.convert(0), "Es gibt keine römische Null")
+
+    # Bei Eingabe eines Floats (4.3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden
+    def test_float(self):
+        self.assertEqual(self.converter.convert(4.3), "Bitte ganze Zahlen eingeben")
+
+    # Bei Eingabe eines negativen Werts (-5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
+    def test_negative(self):
+        self.assertEqual(self.converter.convert(-5), "Es sind nur positive Zahlen zum konvertieren erlaubt")
+
+    # Bei Eingabe von mehreren Werten wie "4,3" soll "Bitte nur eine ganze Zahl eingeben" ausgegeben werden
+    def test_multiple_values(self):
+        self.assertEqual(self.converter.convert("4,3"), "Bitte nur eine ganze Zahl eingeben")
+
+# Testausführung
+if __name__ == '__main__':
+    unittest.main()
-- 
GitLab