#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

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()