def test_round_trip(self, b):
        """test inverting generate_compressed and generate_uncompressed"""

        orig_text = b
        freq = make_freq_dict(orig_text)
        assume(len(freq) > 1)
        tree = huffman_tree(freq)
        codes = get_codes(tree)
        compressed = generate_compressed(orig_text, codes)
        uncompressed = generate_uncompressed(tree, compressed, len(orig_text))
        assert orig_text == uncompressed, '\n'.join([
            str(list(orig_text)),
            byte_to_bits(compressed[0]),
            str(list(uncompressed)),
            str(codes)
        ])
    def test_byte_to_bits(self, b):
        """byte_to_bits produces binary strings of length 8"""

        self.assertTrue(set(byte_to_bits(b)).issubset({"0", "1"}))
        self.assertEqual(len(byte_to_bits(b)), 8)