def test_adding(self): sixty_five = RomanNumeral("LXV") eighty_seven = RomanNumeral("LXXXVII") self.assertEqual(int(sixty_five + eighty_seven), 152) self.assertEqual(type(sixty_five + eighty_seven), RomanNumeral) self.assertEqual(int(sixty_five + 87), 152) self.assertEqual(type(sixty_five + 87), RomanNumeral) self.assertEqual(str(sixty_five + 87), str("CLII"))
def test_roman_addition(self): x = 2000 for y in range(1, 4000): if 0 < x + y < 4000: roman_math = RomanNumeral(x) + RomanNumeral(y) self.assertEqual(roman_math, RomanNumeral(x + y)) else: self.assertRaises(OutOfRangeError, RomanNumeral, x + y)
def test_roman_multiplication(self): x = 10 for y in range(1, 4000): if 0 < x * y < 4000: roman_math = RomanNumeral(x) * RomanNumeral(y) self.assertEqual(roman_math, RomanNumeral(x * y)) else: self.assertRaises(OutOfRangeError, RomanNumeral, x * y)
def test_roman_subtraction(self): x = 2000 for y in range(1, 4000): if 0 < x - y < 4000: roman_math = RomanNumeral(x) - RomanNumeral(y) self.assertEqual(roman_math, RomanNumeral(x - y)) else: self.assertRaises(OutOfRangeError, RomanNumeral, x - y)
def test_roman_exponent(self): x = 2 for y in range(1, 60): if 0 < x**y < 4000: roman_math = RomanNumeral(x)**RomanNumeral(y) self.assertEqual(roman_math, RomanNumeral(x**y)) else: self.assertRaises(OutOfRangeError, RomanNumeral, x**y)
def test_roman_division(self): x = 3999 for y in range(1, 4000): if 0 < x / y < 4000: roman_math = RomanNumeral(x) / RomanNumeral(y) self.assertEqual(roman_math, RomanNumeral(x // y)) else: self.assertRaises(OutOfRangeError, RomanNumeral, x // y)
def test_create_roman_exhaustive(self): for n in range(10000): if n == 0 or n >= 4000: self.assertRaises(OutOfRangeError, RomanNumeral, n) else: r = RomanNumeral(n) self.assertEqual(r.value, n)
def test_romans(self): roman = RomanNumeral("VI") assert int(roman) == 6 roman = RomanNumeral("IV") assert int(roman) == 4 roman = RomanNumeral("XIV") assert int(roman) == 14 roman = RomanNumeral("VIII") assert int(roman) == 8 assert str(RomanNumeral.from_int(6)) == "VI" assert int(RomanNumeral("VIIIIIIIIII")) == 15
def test_from_int_and_string_representation(self): self.assertEqual(str(RomanNumeral("I")), "I") self.assertEqual(repr(RomanNumeral("CD")), "RomanNumeral('CD')") self.assertEqual(str(RomanNumeral.from_int(1)), str(RomanNumeral("I"))) self.assertEqual(str(RomanNumeral.from_int(10)), "X") self.assertEqual(str(RomanNumeral.from_int(21)), "XXI") self.assertEqual(str(RomanNumeral.from_int(600)), "DC") self.assertEqual(str(RomanNumeral.from_int(2000)), "MM") self.assertEqual(str(RomanNumeral.from_int(12)), "XII") self.assertEqual(str(RomanNumeral.from_int(25)), "XXV") self.assertEqual(str(RomanNumeral.from_int(6)), "VI") self.assertEqual(str(RomanNumeral.from_int(4)), "IV") self.assertEqual(str(RomanNumeral.from_int(9)), "IX") self.assertEqual(str(RomanNumeral.from_int(14)), "XIV") self.assertEqual(str(RomanNumeral.from_int(1888)), "MDCCCLXXXVIII") self.assertEqual(str(RomanNumeral.from_int(1999)), "MCMXCIX") self.assertEqual(str(RomanNumeral.from_int(1948)), "MCMXLVIII")
def verify(self, integer, numeral): self.assertEqual(int(RomanNumeral(numeral)), integer) self.assertNotEqual(int(RomanNumeral(numeral)), integer + 1) self.assertNotEqual(int(RomanNumeral(numeral)), integer - 1)
def test_equality_and_ordering(self): self.assertEqual(RomanNumeral("I"), 1) self.assertNotEqual(RomanNumeral("I"), 2) self.assertEqual(RomanNumeral("I"), "I") self.assertEqual(RomanNumeral.from_int(10), "X") self.assertEqual(RomanNumeral.from_int(21), "XXI") self.assertEqual(RomanNumeral.from_int(600), "DC") self.assertEqual(RomanNumeral.from_int(2000), "MM") self.assertEqual(RomanNumeral.from_int(12), "XII") self.assertEqual(RomanNumeral.from_int(25), "XXV") self.assertEqual(RomanNumeral.from_int(6), "VI") self.assertEqual(RomanNumeral.from_int(4), "IV") self.assertEqual(RomanNumeral.from_int(9), "IX") self.assertEqual(RomanNumeral.from_int(14), "XIV") self.assertEqual(RomanNumeral.from_int(1888), "MDCCCLXXXVIII") self.assertEqual(RomanNumeral.from_int(1999), "MCMXCIX") self.assertEqual(RomanNumeral.from_int(1948), "MCMXLVIII") self.assertLess(RomanNumeral("MCMXLVIII"), RomanNumeral("MCMXCIX")) self.assertGreater(RomanNumeral("MCMXCIX"), RomanNumeral("MCMXLVIII")) self.assertGreaterEqual(RomanNumeral("IX"), RomanNumeral("III")) self.assertLessEqual(RomanNumeral("III"), RomanNumeral("IX")) self.assertGreaterEqual(RomanNumeral("X"), RomanNumeral("X")) self.assertLessEqual(RomanNumeral("IIII"), RomanNumeral("IV")) self.assertFalse(RomanNumeral("V") < RomanNumeral("IV")) self.assertFalse(RomanNumeral("V") > RomanNumeral("IX")) self.assertFalse(RomanNumeral("V") <= RomanNumeral("IV")) self.assertFalse(RomanNumeral("V") >= RomanNumeral("IX")) with self.assertRaises(TypeError): RomanNumeral("X") < "XX" with self.assertRaises(TypeError): RomanNumeral("X") <= "XX" with self.assertRaises(TypeError): RomanNumeral("X") > "XX" with self.assertRaises(TypeError): RomanNumeral("X") >= "XX" self.assertFalse(RomanNumeral("V") < 4) self.assertFalse(RomanNumeral("V") > 9) self.assertFalse(RomanNumeral("V") <= 4) self.assertFalse(RomanNumeral("V") >= 9) with self.assertRaises(TypeError): RomanNumeral("X") < "XX" with self.assertRaises(TypeError): RomanNumeral("X") <= "XX" with self.assertRaises(TypeError): RomanNumeral("X") > "XX" with self.assertRaises(TypeError): RomanNumeral("X") >= "XX"
def test_create_roman_from_str(self): r = RomanNumeral('X') self.assertEqual(r.value, 10) self.assertEqual(r.string, 'X')