import unittest import os import filecmp import shutil import subprocess import hashlib TEST_FILES = [ 'tests/resources/testfile1.bin', 'tests/resources/testfile2.bin', 'tests/resources/testfile3.bin', 'tests/resources/testfile4.bin', ] EXPECTED_MD5 = [ 'd1b520eac79e5b2acc7ad49023da4bf3', 'e2277a6ac23fd320275448add3e257ad', '0b7fd4fd1edef574e2a6db15412eebb3', '1d6260598f95c6bd880cca06c1c54c70' ] EXEC_FILE = './huffman' def hash_file(path): hasher = hashlib.md5() with open(path, 'rb') as file: hasher.update(file.read()) return hasher.hexdigest() class TestHuffman(unittest.TestCase): def test_huffman(self): """ Create .deflate files for each example binary and compare their checksum with known values """ for filename, md5 in zip(TEST_FILES, EXPECTED_MD5): subprocess.run([EXEC_FILE, filename]) output_filename = filename + '.deflate' self.assertTrue(os.path.exists(output_filename)) self.assertEqual(hash_file(output_filename), md5) os.remove(output_filename) if __name__ == '__main__': unittest.main()