import unittest from . import utils class TestValueNumber(unittest.TestCase): __test_ints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 123, 1234, 12345, 123456, 1234567, 12345678, 123456789, 1234567890] def test_numbers(self): result = utils.list_tokens(" ".join(map(str, range(0, 101))) + " 1000000000000000000000") self.assertEqual(len(result), 102) for original, i in zip(range(0, 101), result[:-1]): self.assertEqual(i.type, "VALUE_NUMBER") self.assertEqual(i.value, original) self.assertEqual(result[-1].type, "VALUE_NUMBER") self.assertEqual(result[-1].value, 1000000000000000000000) def test_all_number_chars(self): result = utils.list_tokens("1234567890123456789") self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, 1234567890123456789) def test_no_leading_zero(self): # Test zero result = utils.list_tokens("0") self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, 0) # Test leading zero with self.assertRaises(utils.LexError) as context: utils.list_tokens("0123456789") self.assertTrue( "Leading zero of a numer is not allowed %s." % (str(context),)) def test_dez(self): for i in self.__test_ints: result = utils.list_tokens(str(i)) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_bin_lower(self): for i in self.__test_ints: result = utils.list_tokens(bin(i).lower()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_bin_upper(self): for i in self.__test_ints: result = utils.list_tokens(bin(i).upper()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_octal_lower(self): for i in self.__test_ints: result = utils.list_tokens(oct(i).lower()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_octal_upper(self): for i in self.__test_ints: result = utils.list_tokens(oct(i).upper()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_hex_lower(self): for i in self.__test_ints: result = utils.list_tokens(hex(i).lower()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i) def test_hex_upper(self): for i in self.__test_ints: result = utils.list_tokens(hex(i).upper()) self.assertEqual(len(result), 1) self.assertEqual(result[0].type, "VALUE_NUMBER") self.assertEqual(result[0].value, i)