Migration from old pyutilz package name (which, in turn, came from
[pyutils.git] / tests / compress / letter_compress_test.py
1 #!/usr/bin/env python3
2
3 # © Copyright 2021-2022, Scott Gasch
4
5 """letter_compress unittest."""
6
7 import math
8 import random
9 import unittest
10
11 from pyutils import bootstrap
12 from pyutils import unittest_utils as uu
13 from pyutils.compress import letter_compress
14
15
16 class TestLetterCompress(unittest.TestCase):
17     def test_with_random_strings(self):
18         alphabet = 'abcdefghijklmnopqrstuvwxyz .,"-'
19         for n in range(20):
20             message = ""
21             for letter in random.choices(alphabet, k=random.randrange(10, 5000)):
22                 message += letter
23             mlen = len(message)
24             compressed = letter_compress.compress(message)
25             clen = len(compressed)
26             self.assertEqual(math.ceil(mlen * 5.0 / 8.0), clen)
27             decompressed = letter_compress.decompress(compressed)
28             self.assertEqual(
29                 decompressed, message, f'The bad message string was "{message}"'
30             )
31
32
33 if __name__ == '__main__':
34     bootstrap.initialize(unittest.main)()