From 37d09d6ac30c8c66477149b7c73139c3e6782468 Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Mon, 27 Sep 2021 08:47:39 -0700 Subject: Compress small text messages by just restricting the alphabet. Adds bidict. --- tests/letter_compress_test.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 tests/letter_compress_test.py (limited to 'tests') diff --git a/tests/letter_compress_test.py b/tests/letter_compress_test.py new file mode 100755 index 0000000..a466277 --- /dev/null +++ b/tests/letter_compress_test.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import random +import math +import unittest + +import bootstrap +import letter_compress +import unittest_utils as uu + + +class TestLetterCompress(unittest.TestCase): + + def test_with_random_strings(self): + alphabet = 'abcdefghijklmnopqrstuvwxyz .,"-' + for n in range(20): + message = "" + for letter in random.choices(alphabet, k=random.randrange(10, 5000)): + message += letter + mlen = len(message) + compressed = letter_compress.compress(message) + clen = len(compressed) + self.assertEqual(math.ceil(mlen * 5.0 / 8.0), clen) + decompressed = letter_compress.decompress(compressed) + self.assertEqual(decompressed, message, f'The bad message string was "{message}"') + + +if __name__ == '__main__': + bootstrap.initialize(unittest.main)() -- cgit v1.3