looplang/looplang/test/test_values_number.py

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)