예제 #1
0
 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"))
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
 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
예제 #9
0
 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")
예제 #10
0
 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)
예제 #11
0
 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"
예제 #12
0
    def test_create_roman_from_str(self):
        r = RomanNumeral('X')

        self.assertEqual(r.value, 10)
        self.assertEqual(r.string, 'X')