def test_both(self): for x in xrange(10): chars = string.ascii_uppercase + string.digits seq = generator(1024*16, chars) encode_seq = mtf.encode(chars, seq) decode_seq = mtf.decode(chars, encode_seq) self.assertEqual(decode_seq, list(seq))
def decompress(compf, f): """ Decompress a file. """ # read alphabet alphabet = cPickle.load(compf) print "alphabet:\n%r" % alphabet count = 0 while True: header = compf.read(8) if header == '': break print "block %r:" % count nbits, I = struct.unpack('>2I', header) freqs = load_freqs(compf) #print freqs nbyte = (nbits+7) / 8 huff_encode = to01(compf.read(nbyte))[:nbits] #print "huff_encode:\n%r" % huff_encode coding, root = huff.generate_coding(freqs) #print "coding:\n%r" % coding huff_decode = huff.decode(huff_encode, root) mtf_decode = mtf.decode(alphabet, huff_decode) bwt_decode = bwt.decode(mtf_decode, I, reverse = True) content = ''.join(bwt_decode) f.write(content) print "nbits = %r, I = %r, length = %r" % (nbits, I, len(content)) count = count + 1
def test_decode(self): l = mtf.decode('abcr', [2, 1, 3, 1, 0, 3]) self.assertEqual(l, list('caraab'))