Skip to content
Snippets Groups Projects
Commit 92247693 authored by Lasse Pikkemaat's avatar Lasse Pikkemaat
Browse files

Merge branch 'develop' into 'main'

Develop

See merge request !9
parents b1e93961 6153804c
No related branches found
No related tags found
1 merge request!9Develop
Showing
with 589 additions and 2 deletions
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
| 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
# 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
#Bei Eingabe von Zahlen, die in der Liste definiert sind, sollen römische Zhalen zurückgegeben werden.
#Bei Eingabe von Zahlen, die nicht in der Liste definiert ist, soll ein "" ausgeben werden.
'''
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 = {
1: "I", 2: "II", 3: "III",
4: "IV", 5: "V", 9: "IX",
21: "XXI", 50: "L", 100: "C",
500: "D", 1000: "M"
}
return roman_numerals.get(n, "")
'''
import unittest
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(1), "I")
self.assertEqual(self.converter.convert(2), "II")
self.assertEqual(self.converter.convert(3), "III")
self.assertEqual(self.converter.convert(4), "IV")
self.assertEqual(self.converter.convert(5), "V")
self.assertEqual(self.converter.convert(9), "IX")
self.assertEqual(self.converter.convert(21), "XXI")
self.assertEqual(self.converter.convert(50), "L")
self.assertEqual(self.converter.convert(100), "C")
self.assertEqual(self.converter.convert(500), "D")
self.assertEqual(self.converter.convert(1000), "M")
def test_inivalid_numbers(self):
self.assertEqual(self.converter.convert(6), "")
self.assertEqual(self.converter.convert(99), "")
self.assertEqual(self.converter.convert(-1), "")
if __name__ == "__main__":
unittest.main()
#python -m unittest others.Hatice.HaticeRomanConverter -v
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|--------|-----------------|--------------------------------------------------------------------------------|---------------------------------------|
| Hatice | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'II' + II |
| Hatice | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: ValueError not raised |
| Hatice | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'MI' + MI |
| Hatice | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'XIV' + XIV |
| Hatice | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... FAIL | AssertionError: '' != 'IV' + IV |
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|--------|-----------------|----------------------------------------------------------------------------------------|---------------------------------|
| Hatice | no | test_inivalid_numbers (others.Hatice.HaticeRomanConverter.TestRomanConverter) ... FAIL | AssertionError: 'VI' != '' - VI |
\ No newline at end of file
#Test_Converter_Römische_Zahlen
'''
import unittest
def convert(n: int) -> str:
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 in sorted(roman_numerals.keys(), reverse=True): #Schleife, die über die Schlüssel (die Dezimalzahlen) des roman_numerals-Dictionaries iteriert und in absteigender reienfolge zurück gibt durch value nimmt in jeder Iteration den Wert des nächsten sortierten Schlüssels an
while n >= value: #Dies startet eine while-Schleife, die so lange ausgeführt wird, wie der Wert von n größer oder gleich dem aktuellen value (der Dezimalzahl) ist
result += roman_numerals[value] #fügt die entsprechende römische Ziffer (den Wert aus dem roman_numerals-Dictionary) zur result-Zeichenkette hinzu.
n -= value # aktuelle value - n
return result
'''
import unittest
from src.romannumerals import RomanNumber
from src.interfaces import IRomanNumber
class TestRomanConverter(unittest.TestCase):
def test_1(self):
self.assertEqual(convert(1), "I") # Erwartet "I" für 1
def test_10(self):
self.assertEqual(convert(10), "X") # Erwartet "X" für 10
def test_21(self):
self.assertEqual(convert(21), "XXI") # Erwartet "XXI" für 21
def test_50(self):
self.assertEqual(convert(50), "L") # Erwartet "L" für 50
def test_100(self):
self.assertEqual(convert(100), "C") # Erwartet "C" für 100
def test_1000(self):
self.assertEqual(convert(1000), "M") # Erwartet "M" für 1000
def test_1999(self):
self.assertEqual(convert(1999), "MCMXCIX") #Erwartet "MCMXCIX" für 1999
if __name__ == "__main__":
unittest.main()
#python -m unittest others.Momo.MomoRomanConverter -v
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|------|-----------------|---------------------------------------------------------------------------------|-----------------------------------------------------------------------|
| Momo | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'converter' |
| Momo | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'converter' |
| Momo | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'converter' |
| Momo | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'converter' |
| Momo | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'converter' |
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|------|-----------------|-------------------------------------------------------------------------|------------------------------------------|
| Momo | no | test_1 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_10 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_100 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_1000 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_1999 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_21 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
| Momo | no | test_50 (others.Momo.MomoRomanConverter.TestRomanConverter) ... ERROR | NameError: name 'convert' is not defined |
\ No newline at end of file
from abc import ABC, abstractmethod
class IRomanConverter(ABC):
@abstractmethod
def roman_to_int(self, s: str) -> int:
"""Konvertiert eine römische Zahl (String) in eine Dezimalzahl."""
pass
from others.Orlando.OrlandoInterfaces import IRomanConverter
def int_to_roman(num: int) -> str:
"""Konvertiert eine Dezimalzahl in eine römische Zahl."""
val = [
1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4,
1
]
syb = [
"M", "CM", "D", "CD",
"C", "XC", "L", "XL",
"X", "IX", "V", "IV",
"I"
]
roman_num = ''
i = 0
while num > 0:
for _ in range(num // val[i]):
roman_num += syb[i]
num -= val[i]
i += 1
return roman_num
class RomanConverter(IRomanConverter):
def roman_to_int(self, s: str) -> int:
"""Konvertiert eine römische Zahl (String) in eine Dezimalzahl."""
roman_values = {
'I': 1, 'V': 5, 'X': 10, 'L': 50,
'C': 100, 'D': 500, 'M': 1000
}
total = 0
prev_value = 0
# Iteriere über die Zeichen der römischen Zahl von rechts nach links
for char in reversed(s.upper()):
value = roman_values.get(char)
if value is None:
raise ValueError(f"Ungültiges Zeichen '{char}' in der römischen Zahl.")
if value < prev_value:
total -= value
else:
total += value
prev_value = value
return total
| Name | Interface break | Failed Testcases | |
|---------|-----------------|---------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| Orlando | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Römische Zahl sein. Testet von Dezimalzahlen auf Römische Zahlen |
| Orlando | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Römische Zahl sein. Testet von Dezimalzahlen auf Römische Zahlen |
| Orlando | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Römische Zahl sein. Testet von Dezimalzahlen auf Römische Zahlen |
| Orlando | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Römische Zahl sein. Testet von Dezimalzahlen auf Römische Zahlen |
| Orlando | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Römische Zahl sein. Testet von Dezimalzahlen auf Römische Zahlen |
\ No newline at end of file
import unittest
from abc import ABC, abstractmethod
from src.romannumerals import RomanNumber
from src.interfaces import IRomanNumber
'''
#Interface für Counter
class IRomanNumber(ABC):
@abstractmethod
def convert_int_to_str(self, n: int) -> str:
pass
# Implementierung Converter Klasse
class RomanNumber(IRomanNumber):
def convert_int_to_str(self, n: int) -> str:
#Eingabe anders als int
if not isinstance(n, int):
return "Fehler: Bitte Zahl eingeben"
#Int Eingabe kleiner gleich 0
if n <= 0:
return "Integer muss größer als 0 sein"
# Bekannte Werte umwandeln
roman_convert = {1: "I", 21: "XXI", 1000: "M"}
return roman_convert.get(n)
'''
# Testklasse (TestConverter)
class TestRomanNumber (unittest.TestCase):
def setUp(self):
self.r = RomanNumber()
def test_convert_1(self):
self.assertEqual(self.r.convert(1), "I")
def test_convert_21(self):
self.assertEqual(self.r.convert(21), "XXI")
def test_convert_empty(self):
self.assertEqual(self.r.convert(None), "Fehler: Bitte Zahl eingeben")
def test_convert_string(self):
self.assertEqual(self.r.convert("Hello"), "Fehler: Bitte Zahl eingeben")
def test_convert_downzero(self):
self.assertEqual(self.r.convert(-5), "Integer muss größer als 0 sein")
def test_convert_downzero(self):
self.assertEqual(self.r.convert(1000), "M")
if __name__ == "__main__":
unittest.main()
# python -m unittest others.Wasili.WasiliRomanConverter -v
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|--------|-----------------|---------------------------------------------------------------------------------|---------------------------------------------------------------|
| Wasili | no | test_convert_addition (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' |
| Wasili | no | test_convert_invalid (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' |
| Wasili | no | test_convert_large_numbers (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' |
| Wasili | no | test_convert_mixed (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' |
| Wasili | no | test_convert_subtraction (tests.test_romannumerals.TestRomanNumber) ... ERROR | AttributeError: 'TestRomanNumber' object has no attribute 'r' |
\ No newline at end of file
| Name | Interface break | Failed Testcases | |
|--------|-----------------|------------------------------------------------------------------------------------|-----------------------------------|
| Wasili | no | test_convert_empty (others.Wasili.WasiliRomanConverter.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Zahl sein |
| Wasili | no | test_convert_string (others.Wasili.WasiliRomanConverter.TestRomanNumber) ... ERROR | Eingabe muss eine ganze Zahl sein |
\ No newline at end of file
......@@ -40,11 +40,29 @@
# Bei Eingabe der Zeichenfolge "ABC" erhalte ich eine Fehlermeldung
# Bei Eingabe von None erhalte ich eine Fehlermeldung
# Bei Eingabe der Zahl 3.14 erhalte ich eine Fehlermeldung
'''
import unittest
from src.romannumerals import RomanNumber
from src.interfaces import IRomanNumber
import unittest
from others.Orlando.OrlandoRomanConverter import RomanConverter
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
'''
import unittest
from others.Hatice.HaticeRomanConverter import IRomanNumber, RomanNumber
class TestRomanNumber(unittest.TestCase):
def setUp(self):
self.converter: IRomanNumber = RomanNumber()
......@@ -97,5 +115,5 @@ class TestRomanNumber(unittest.TestCase):
if __name__ == "__main__":
unittest.main()
# python -m unittest tests.test_romannumerals
# python -m unittest tests.test_romannumerals -v
# python -m unittest discover -s tests
\ No newline at end of file
# Testfälle roman_to_int, str -> int
# 1. Einzelne römische Ziffern
# Eingabe: "I" → Erwartete Ausgabe: 1
# Eingabe: "V" → Erwartete Ausgabe: 5
# Eingabe: "X" → Erwartete Ausgabe: 10
# Eingabe: "L" → Erwartete Ausgabe: 50
# Eingabe: "C" → Erwartete Ausgabe: 100
# Eingabe: "D" → Erwartete Ausgabe: 500
# Eingabe: "M" → Erwartete Ausgabe: 1000
#2. Mehrere gleiche Ziffern hintereinander (einfache Addition)
# Eingabe: "II" → Erwartete Ausgabe: 2
# Eingabe: "XX" → Erwartete Ausgabe: 20
# Eingabe: "CC" → Erwartete Ausgabe: 200
# Eingabe: "MM" → Erwartete Ausgabe: 2000
#3. Subtraktive Notation
# Eingabe: "IV" → Erwartete Ausgabe: 4
# Eingabe: "IX" → Erwartete Ausgabe: 9
# Eingabe: "XL" → Erwartete Ausgabe: 40
# Eingabe: "XC" → Erwartete Ausgabe: 90
# Eingabe: "CD" → Erwartete Ausgabe: 400
# Eingabe: "CM" → Erwartete Ausgabe: 900
#4. Komplexe Zahlen
# Eingabe: "MCMXCIV" → Erwartete Ausgabe: 1994
#Eingabe: "XIV" → Erwartete Ausgabe: 14
#Eingabe: "CDXLIV" → Erwartete Ausgabe: 444
import sys
import os
import unittest
# Füge das src-Verzeichnis zum Python-Pfad hinzu
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
from src.romannumerals import RomanNumber # Importiere die zu testende Klasse
class TestRomanConverter(unittest.TestCase):
def setUp(self):
self.converter = RomanNumber()
def test_single_digits(self):
self.assertEqual(self.converter.convert("I"), 1)
self.assertEqual(self.converter.convert("V"), 5)
self.assertEqual(self.converter.convert("X"), 10)
def test_multiple_digits(self):
self.assertEqual(self.converter.convert("II"), 2)
self.assertEqual(self.converter.convert("XX"), 20)
self.assertEqual(self.converter.convert("VI"), 6)
def test_subtractive_notation(self):
self.assertEqual(self.converter.convert("IV"), 4)
self.assertEqual(self.converter.convert("IX"), 9)
self.assertEqual(self.converter.convert("XL"), 40)
self.assertEqual(self.converter.convert("XC"), 90)
def test_complex_numbers(self):
self.assertEqual(self.converter.convert("MCMXCIV"), 1994)
self.assertEqual(self.converter.convert("CDXLIV"), 444)
if __name__ == "__main__":
unittest.main()
# python -m unittest testsothers.OrlandoTestRoman -v
\ No newline at end of file
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