diff --git a/other/RafehDaniel/__pycache__/converter.cpython-313.pyc b/other/RafehDaniel/__pycache__/converter.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47897e9076ba2d5f8d6359aadb6406769179d865 Binary files /dev/null and b/other/RafehDaniel/__pycache__/converter.cpython-313.pyc differ diff --git a/other/RafehDaniel/converter.py b/other/RafehDaniel/converter.py new file mode 100644 index 0000000000000000000000000000000000000000..1d5eff48258d339da12cee00fa9dd6dd640c6911 --- /dev/null +++ b/other/RafehDaniel/converter.py @@ -0,0 +1,182 @@ +# 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 soll "Bitte ganze Zahlen eingeben" ausgegeben werden -> geändert aufgrund der Aufgabenstellung +# Bei Eingabe von Float-Werten (z.B. 4,3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden. +# Bei Eingabe von negativen Werten (z.B. -5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden +# Bei Eingabe der Zahl 2025 soll "MMXXV" ausgegeben werden +# Bei Eingabe von Zeichen wie ! soll "Bitte ganze Zahlen eingeben" ausgegeben werden +# Bei Eingabe mehrerer Zahlen wie 4, 3 soll "Bitte nur eine ganze Zahl eingeben" augegeben werden +# Bei Eingabe größerer Zahlen wie z.B. 4000 soll "MMMM" ausgegeben werden +# Bei Eingabe der Zahl 30 soll "XXX" ausgegeben werden +# Bei Eingabe der Zahl 90 soll "90" ausgegeben werden +# Bei Eingabe eines leeren Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden + +import unittest +from abc import ABC, abstractmethod + +class IConverter(ABC): + @abstractmethod + def convert(self, num: int) -> str: + pass + +class Converter(IConverter): + def convert(self, num: int) -> str: + + '''Sicherstellen, dass nur eine ganze Zahl eingegeben wurde.''' + if isinstance(num, str) and len(num.split(',')) > 1: + return 'Bitte nur eine ganze Zahl eingeben' + + roman_numbers = [(1000, 'M'), (500, 'D'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')] + + roman_str = '' + + '''Wenn eine 0 eingegeben wird muss eine Exception folgen''' + if num == 0: + return "Es gibt keine römische Null" + + + '''Sicherstellen, dass keine Zeichen oder Strings eingegeben werden''' + if isinstance(num, int): + + '''Sicherstellen, dass keine negativen Zahlen eingegeben werden''' + if num < 0: + return "Es sind nur positive Zahlen zum konvertieren erlaubt" + + for value, numeral in roman_numbers: + + while num >= value: + roman_str += numeral + num -= value + + return roman_str + else: + return "Bitte ganze Zahlen eingeben" + + +class TestConverter(unittest.TestCase): + def setUp(self): + self.c = Converter() + + def test_convertOne(self): + res = self.c.convert(1) + self.assertEqual(res, 'I') + + def test_convertTwo(self): + res = self.c.convert(2) + self.assertEqual(res, 'II') + + def test_convertThree(self): + res = self.c.convert(3) + self.assertEqual(res, 'III') + + def test_convertFour(self): + res = self.c.convert(4) + self.assertEqual(res, 'IV') + + def test_convertFive(self): + res = self.c.convert(5) + self.assertEqual(res, 'V') + + def test_convertNine(self): + res = self.c.convert(9) + self.assertEqual(res, 'IX') + + def test_convertTen(self): + res = self.c.convert(10) + self.assertEqual(res, 'X') + + def test_convertTwentyTwo(self): + res = self.c.convert(21) + self.assertEqual(res, 'XXI') + + def test_convertFifty(self): + res = self.c.convert(50) + self.assertEqual(res, 'L') + + def test_convertHundred(self): + res = self.c.convert(100) + self.assertEqual(res, 'C') + + def test_convertFiveHundred(self): + res = self.c.convert(500) + self.assertEqual(res, 'D') + + def test_convertThousand(self): + res = self.c.convert(1000) + self.assertEqual(res, 'M') + + def test_convertFourDigit(self): + res = self.c.convert(1111) + self.assertEqual(res, 'MCXI') + + def test_convertNintyNine(self): + res = self.c.convert(99) + self.assertEqual(res, 'XCIX') + + def test_convertZero(self): + res = self.c.convert(0) + self.assertEqual(res, 'Es gibt keine römische Null') + + def test_convertFourty(self): + res = self.c.convert(40) + self.assertEqual(res, 'XL') + + def test_convertString(self): + res = self.c.convert('HUIHIN') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertFloat(self): + res = self.c.convert(4.3) + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertNegative(self): + res = self.c.convert(-4) + self.assertEqual(res, "Es sind nur positive Zahlen zum konvertieren erlaubt") + + def test_convertYear(self): + res = self.c.convert(2025) + self.assertEqual(res, "MMXXV") + + def test_convertSign(self): + res = self.c.convert('!') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + def test_convertMultipleNum(self): + res = self.c.convert('4, 3') + self.assertEqual(res, "Bitte nur eine ganze Zahl eingeben") + + def test_convertHighNum(self): + res = self.c.convert(4000) + self.assertEqual(res, "MMMM") + + def test_convertThirty(self): + res = self.c.convert(30) + self.assertEqual(res, "XXX") + + def test_convertNinety(self): + res = self.c.convert(90) + self.assertEqual(res, "XC") + + def test_convertEmpty(self): + res = self.c.convert('') + self.assertEqual(res, "Bitte ganze Zahlen eingeben") + + + + +if __name__ == "__main__": + unittest.main() diff --git a/report.md b/report.md index 1b4c82c400df1f1467d150d4b56dc5ca1db6a6d3..c852b179dbfa67691cc3e225d035f7b6d7a97e13 100644 --- a/report.md +++ b/report.md @@ -4,3 +4,4 @@ |-----------------|------------------|----------------------------------------------------------------------------------| | BerishaAlma | no | test_1, test_4, test_21, test_1000, test_0, test_float, test_negative, test_multiple_values | | GotsisWasilios | yes | all | +| RafehDaniel | no | none \ No newline at end of file diff --git a/test_converter b/test_converter index 8995adbf63434721391a1c7e89c7dd983503698a..065e064fa40b184637d9a2b6bf328045c4f2d064 100644 --- a/test_converter +++ b/test_converter @@ -10,7 +10,8 @@ import unittest from abc import ABC, abstractmethod -from other.GotsisWasilios.TDD_Converter import TestRomanNumber as Wasili +from other.RafehDaniel.converter import Converter as Dani + # Interface (abstrakte Basisklasse) class IConverter(ABC): @@ -58,7 +59,7 @@ class RomanConverter(IConverter): # Testklasse mit 8 funktionierenden Tests class TestRomanConverter(unittest.TestCase): def setUp(self): - self.converter = Wasili() + self.converter = Dani() # Bei Eingabe der Zahl 1 soll "I" ausgegeben werden def test_1(self):