from .. import base32 import unittest class Base32Tests(unittest.TestCase): def tests(self): def c(number: int, pad_to_length: int, encoded: str): self.assertEqual(base32.encode(number, pad_to_length), encoded) self.assertEqual(base32.decode(encoded), number) B32_345678 = (1 * 32**5 + 2 * 32**4 + 3 * 32**3 + 4 * 32**2 + 5 * 32**1 + 6 * 32**0) B32_base32 = ( 9 * 32**5 + 8 * 32**4 + 24 * 32**3 + 12 * 32**2 + 1 * 32**1 + 0 * 32**0) c( 0, 0, ''); c( 0, 1, '2'); c( 0, 7, '2222222'); c( 1, 0, '3'); c( 1, 1, '3'); c( 1, 20, '22222222222222222223'); c( 32, 0, '32'); c( 32, 1, '32'); c( 32, 2, '32'); c( 32, 3, '232'); c(B32_345678, 0, '345678'); c(B32_base32, 0, 'base32'); c(B32_345678, 20, '22222222222222345678'); c(B32_base32, 20, '22222222222222base32'); c(2**100 - 1, 0, 'zzzzzzzzzzzzzzzzzzzz') # This implementation supports arbitrary length, no truncation. c(1459980823972598128486511383358617792788444579872, 0, 'zyxwvutsrqpnmkjihgfedcba98765432') c(0, 1000, '2' * 1000) c(32**1000 - 1, 0, 'z' * 1000)