def main(): # read file data file_data = AT.get_file_data('./data/data2.txt', False) # encode data and serialize compressed data encoded_data = AT.Encoder(file_data).encode() AT.serialize_data('output/output.bin', encoded_data, True) # decode data and serialize original data decoded_data = AT.Decoder(encoded_data).decode() AT.serialize_data('output/output.txt', decoded_data, False)
def test_encode_success_small_file_data(self): original_huffman_coding = huffman.codebook(collections.Counter(file_data_big).items()) encoded_data = AT.Encoder(file_data_big).encode() data_stream = bitstring.ConstBitStream(encoded_data) huffman_coding_num_bytes = int.from_bytes(data_stream.read('bytes:1'), byteorder='big') self.assertEqual(huffman_coding_num_bytes, 1) huffman_coding_size = int.from_bytes(data_stream.read("bytes:{}".format(huffman_coding_num_bytes)), byteorder='big') huffman_bin_data = data_stream.read("bytes:{}".format(huffman_coding_size)) unpacked_huffman_coding = msgpack.unpackb(huffman_bin_data, raw=False) self.assertEqual(original_huffman_coding, unpacked_huffman_coding) self.assertEqual(len(original_huffman_coding), len(unpacked_huffman_coding))
def test_encode_with_non_ascii_character(self): with self.assertRaises(ValueError) as context: AT.Encoder(non_ascii_file_data).encode() self.assertTrue('Non-ASCII character found' in str(context.exception))
def test_encode_with_null_data(self): with self.assertRaises(ValueError) as context: AT.Encoder(None).encode() self.assertTrue('Input parameter (data) cannot be Null' in str(context.exception))