Skip to content
Snippets Groups Projects
Commit f9770699 authored by linopino's avatar linopino
Browse files

Danis Code + Tests

parent 31527682
No related branches found
No related tags found
2 merge requests!9Develop,!4Danis Code + Tests
# 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
| Name | Interface break | Failed Testcases | |
|------|-----------------|---------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| Dani | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... ERROR | TypeError: Converter.convert() missing 1 required positional argument: 'num' |
| Dani | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... ERROR | TypeError: Converter.convert() missing 1 required positional argument: 'num' |
| Dani | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... ERROR | TypeError: Converter.convert() missing 1 required positional argument: 'num' |
| Dani | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... ERROR | TypeError: Converter.convert() missing 1 required positional argument: 'num' |
| Dani | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... ERROR | TypeError: Converter.convert() missing 1 required positional argument: 'num' |
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|------|-----------------|----------------------------------------------------------------------------------|--------------------------------------|
| Dani | no | test_convertEmpty (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Dani | no | test_convertFloat (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Dani | no | test_convertHighNum (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Zahl muss zwischen 1 und 3999 liegen |
| Dani | no | test_convertMultipleNum (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Dani | no | test_convertNegative (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Zahl muss zwischen 1 und 3999 liegen |
| Dani | no | test_convertSign (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Dani | no | test_convertString (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Dani | no | test_convertZero (others.Dani.DaniRomanConverter.TestConverter) ... ERROR | Zahl muss zwischen 1 und 3999 liegen |
\ No newline at end of file
...@@ -44,22 +44,26 @@ ...@@ -44,22 +44,26 @@
import unittest import unittest
from src.romannumerals import RomanNumber from src.romannumerals import RomanNumber
from src.interfaces import IRomanNumber from src.interfaces import IRomanNumber
'''
import unittest import unittest
from others.Orlando.OrlandoRomanConverter import RomanConverter from others.Orlando.OrlandoRomanConverter import RomanConverter
from others.Orlando.OrlandoInterfaces import IRomanConverter from others.Orlando.OrlandoInterfaces import IRomanConverter
'''
import unittest
from others.Dani.DaniRomanConverter import Converter, IConverter
class TestRomanNumber(unittest.TestCase): class TestRomanNumber(unittest.TestCase):
def setUp(self): def setUp(self):
self.converter: IRomanConverter = RomanConverter self.converter: IConverter = Converter
def test_convert_subtraction(self): def test_convert_subtraction(self):
self.assertEqual(self.converter.roman_to_int(4), "IV") self.assertEqual(self.converter.convert(4), "IV")
self.assertEqual(self.converter.roman_to_int(9), "IX") self.assertEqual(self.converter.convert(9), "IX")
self.assertEqual(self.converter.roman_to_int(40), "XL") self.assertEqual(self.converter.convert(40), "XL")
self.assertEqual(self.converter.roman_to_int(90), "XC") self.assertEqual(self.converter.convert(90), "XC")
self.assertEqual(self.converter.roman_to_int(400), "CD") self.assertEqual(self.converter.convert(400), "CD")
self.assertEqual(self.converter.roman_to_int(900), "CM") self.assertEqual(self.converter.convert(900), "CM")
def test_convert_addition(self): def test_convert_addition(self):
self.assertEqual(self.converter.convert(2), "II") self.assertEqual(self.converter.convert(2), "II")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment