83 lines
3.3 KiB
Python
83 lines
3.3 KiB
Python
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)
|