Skip to content
Snippets Groups Projects

Danis Code + Tests

Merged Lasse Pikkemaat requested to merge Danis into develop
4 files
+ 212
8
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 183
0
# 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
from abc import ABC, abstractmethod
import unittest
from src.romannumerals import RomanNumber
from src.interfaces import IRomanNumber
'''
class IConverter(ABC):
@abstractmethod
def convert(self, num: int) -> str:
pass
class Converter(IConverter):
def convert(self, num: int) -> str:
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 = ''
if num == 0:
return "Es gibt keine römische Null"
if isinstance(num, int):
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.converter: IRomanNumber = RomanNumber()
def test_convertOne(self):
res = self.converter.convert(1)
self.assertEqual(res, 'I')
def test_convertTwo(self):
res = self.converter.convert(2)
self.assertEqual(res, 'II')
def test_convertThree(self):
res = self.converter.convert(3)
self.assertEqual(res, 'III')
def test_convertFour(self):
res = self.converter.convert(4)
self.assertEqual(res, 'IV')
def test_convertFive(self):
res = self.converter.convert(5)
self.assertEqual(res, 'V')
def test_convertNine(self):
res = self.converter.convert(9)
self.assertEqual(res, 'IX')
def test_convertTen(self):
res = self.converter.convert(10)
self.assertEqual(res, 'X')
def test_convertTwentyTwo(self):
res = self.converter.convert(21)
self.assertEqual(res, 'XXI')
def test_convertFifty(self):
res = self.converter.convert(50)
self.assertEqual(res, 'L')
def test_convertHundred(self):
res = self.converter.convert(100)
self.assertEqual(res, 'C')
def test_convertFiveHundred(self):
res = self.converter.convert(500)
self.assertEqual(res, 'D')
def test_convertThousand(self):
res = self.converter.convert(1000)
self.assertEqual(res, 'M')
def test_convertFourDigit(self):
res = self.converter.convert(1111)
self.assertEqual(res, 'MCXI')
def test_convertNintyNine(self):
res = self.converter.convert(99)
self.assertEqual(res, 'XCIX')
def test_convertZero(self):
res = self.converter.convert(0)
self.assertEqual(res, 'Es gibt keine römische Null')
def test_convertFourty(self):
res = self.converter.convert(40)
self.assertEqual(res, 'XL')
def test_convertString(self):
res = self.converter.convert('HUIHIN')
self.assertEqual(res, "Bitte ganze Zahlen eingeben")
def test_convertFloat(self):
res = self.converter.convert(4.3)
self.assertEqual(res, "Bitte ganze Zahlen eingeben")
def test_convertNegative(self):
res = self.converter.convert(-4)
self.assertEqual(res, "Es sind nur positive Zahlen zum konvertieren erlaubt")
def test_convertYear(self):
res = self.converter.convert(2025)
self.assertEqual(res, "MMXXV")
def test_convertSign(self):
res = self.converter.convert('!')
self.assertEqual(res, "Bitte ganze Zahlen eingeben")
def test_convertMultipleNum(self):
res = self.converter.convert('4, 3')
self.assertEqual(res, "Bitte nur eine ganze Zahl eingeben")
def test_convertHighNum(self):
res = self.converter.convert(4000)
self.assertEqual(res, "MMMM")
def test_convertThirty(self):
res = self.converter.convert(30)
self.assertEqual(res, "XXX")
def test_convertNinety(self):
res = self.converter.convert(90)
self.assertEqual(res, "XC")
def test_convertEmpty(self):
res = self.converter.convert('')
self.assertEqual(res, "Bitte ganze Zahlen eingeben")
if __name__ == "__main__":
unittest.main()
# python -m unittest others.Dani.DaniRomanConverter -v
\ No newline at end of file
Loading