1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()