Esempio n. 1
0
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)
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))
Esempio n. 4
0
    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))