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