Adds shuffle/scramble to list_utils.
[python_utils.git] / tests / letter_compress_test.py
1 #!/usr/bin/env python3
2
3 import math
4 import random
5 import unittest
6
7 import bootstrap
8 import letter_compress
9 import unittest_utils as uu
10
11
12 class TestLetterCompress(unittest.TestCase):
13     def test_with_random_strings(self):
14         alphabet = 'abcdefghijklmnopqrstuvwxyz .,"-'
15         for n in range(20):
16             message = ""
17             for letter in random.choices(alphabet, k=random.randrange(10, 5000)):
18                 message += letter
19             mlen = len(message)
20             compressed = letter_compress.compress(message)
21             clen = len(compressed)
22             self.assertEqual(math.ceil(mlen * 5.0 / 8.0), clen)
23             decompressed = letter_compress.decompress(compressed)
24             self.assertEqual(decompressed, message, f'The bad message string was "{message}"')
25
26
27 if __name__ == '__main__':
28     bootstrap.initialize(unittest.main)()