116 lines
6.0 KiB
Python
116 lines
6.0 KiB
Python
import unittest
|
|
import os, sys
|
|
parentPath = os.path.abspath("..")
|
|
if parentPath not in sys.path:
|
|
sys.path.insert(0, parentPath)
|
|
from pybtc import tools
|
|
|
|
|
|
|
|
def print_bytes(b):
|
|
for i in range(len(b)):
|
|
print(bin(b[i])[2:].rjust(8, '0'), end = ' ')
|
|
print("\n", end="")
|
|
|
|
class IntegerFunctionsTests(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
print("\nTesting compressed/variable int functions:\n")
|
|
|
|
def test_compressed_integer(self):
|
|
# print()
|
|
for i in range(126, 130):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 2)
|
|
for i in range(16382, 16386):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 3)
|
|
for i in range(2097149, 2097154):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 4)
|
|
for i in range(268435454, 268435458):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 5)
|
|
for i in range(34359738366, 34359738370):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 6)
|
|
for i in range(4398046511102, 4398046511106):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 7)
|
|
for i in range(562949953421310, 562949953421314):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 8)
|
|
for i in range(72057594037927934, 72057594037927938):
|
|
# print(i, "[", len(tools.int_to_c_int(i)), "]", end=" : " )
|
|
# print_bytes(tools.int_to_c_int(i))
|
|
# print(bin(tools.c_int_to_int((tools.int_to_c_int(i)))))
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 9)
|
|
i = 16250249101024000000
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 10)
|
|
|
|
i = 0
|
|
self.assertEqual(tools.c_int_to_int((tools.int_to_c_int(i))), i)
|
|
self.assertEqual(tools.c_int_len(i), len(tools.int_to_c_int(i)))
|
|
self.assertEqual(len(tools.int_to_c_int(i)), 1)
|
|
|
|
def test_variable_integer(self):
|
|
for i in range(0, 0xfd):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
self.assertEqual(tools.var_int_len(i), 1)
|
|
for i in range(0xfd, 0xfff):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(len(tools.int_to_var_int(i)), 3)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
for i in range(0xfff0, 0xffff):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(len(tools.int_to_var_int(i)), 3)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
for i in range(0x10000, 0x10010):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(len(tools.int_to_var_int(i)), 5)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
for i in range(0xffffff00, 0xffffffff):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(len(tools.int_to_var_int(i)), 5)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
for i in range(0x100000000, 0x100001000):
|
|
self.assertEqual(tools.var_int_to_int((tools.int_to_var_int(i))), i)
|
|
self.assertEqual(len(tools.int_to_var_int(i)), 9)
|
|
self.assertEqual(tools.var_int_len(i), len(tools.int_to_var_int(i)))
|
|
|
|
|
|
|