def write_patch(fo, len_dst, tcontrol, bdiff, bextra): """write a BSDIFF4-format patch to stream 'fo' """ fo.write(MAGIC) faux = StringIO() # write control tuples as series of offts for c in tcontrol: for x in c: faux.write(core.encode_int64(x)) # compress each block bcontrol = bz2.compress(faux.getvalue()) bdiff = bz2.compress(bdiff) bextra = bz2.compress(bextra) for n in len(bcontrol), len(bdiff), len_dst: fo.write(core.encode_int64(n)) fo.write(bcontrol) fo.write(bdiff) fo.write(bextra)
def test_special_values(self): for n, b in [ (-N, b'\xff\xff\xff\xff\xff\xff\xff\xff'), (-256, b'\x00\x01\x00\x00\x00\x00\x00\x80'), (-128, b'\x80\x00\x00\x00\x00\x00\x00\x80'), (-1, b'\x01\x00\x00\x00\x00\x00\x00\x80'), (0, b'\x00\x00\x00\x00\x00\x00\x00\x00'), (1, b'\x01\x00\x00\x00\x00\x00\x00\x00'), (127, b'\x7f\x00\x00\x00\x00\x00\x00\x00'), (128, b'\x80\x00\x00\x00\x00\x00\x00\x00'), (129, b'\x81\x00\x00\x00\x00\x00\x00\x00'), (255, b'\xff\x00\x00\x00\x00\x00\x00\x00'), (256, b'\x00\x01\x00\x00\x00\x00\x00\x00'), (257, b'\x01\x01\x00\x00\x00\x00\x00\x00'), (N, b'\xff\xff\xff\xff\xff\xff\xff\x7f'), ]: self.assertEqual(core.encode_int64(n), b) self.assertEqual(core.decode_int64(b), n)
def test_special_values(self): for n, s in [ (-N, '\xff\xff\xff\xff\xff\xff\xff\xff'), (-256, '\x00\x01\x00\x00\x00\x00\x00\x80'), (-128, '\x80\x00\x00\x00\x00\x00\x00\x80'), (-1, '\x01\x00\x00\x00\x00\x00\x00\x80'), (0, '\x00\x00\x00\x00\x00\x00\x00\x00'), (1, '\x01\x00\x00\x00\x00\x00\x00\x00'), (127, '\x7f\x00\x00\x00\x00\x00\x00\x00'), (128, '\x80\x00\x00\x00\x00\x00\x00\x00'), (129, '\x81\x00\x00\x00\x00\x00\x00\x00'), (255, '\xff\x00\x00\x00\x00\x00\x00\x00'), (256, '\x00\x01\x00\x00\x00\x00\x00\x00'), (257, '\x01\x01\x00\x00\x00\x00\x00\x00'), (N, '\xff\xff\xff\xff\xff\xff\xff\x7f'), ]: b = to_bytes(s) self.assertEqual(core.encode_int64(n), b) self.assertEqual(core.decode_int64(b), n)
def test_special_values(self): for n, s in [ (-N, '\xff\xff\xff\xff\xff\xff\xff\xff'), (-256, '\x00\x01\x00\x00\x00\x00\x00\x80'), (-128, '\x80\x00\x00\x00\x00\x00\x00\x80'), (-1, '\x01\x00\x00\x00\x00\x00\x00\x80'), (0, '\x00\x00\x00\x00\x00\x00\x00\x00'), (1, '\x01\x00\x00\x00\x00\x00\x00\x00'), (127, '\x7f\x00\x00\x00\x00\x00\x00\x00'), (128, '\x80\x00\x00\x00\x00\x00\x00\x00'), (129, '\x81\x00\x00\x00\x00\x00\x00\x00'), (255, '\xff\x00\x00\x00\x00\x00\x00\x00'), (256, '\x00\x01\x00\x00\x00\x00\x00\x00'), (257, '\x01\x01\x00\x00\x00\x00\x00\x00'), (N, '\xff\xff\xff\xff\xff\xff\xff\x7f'), ]: b = to_bytes(s) self.assertEqual(core.encode_int64(n), b) self.assertEqual(core.decode_int64(b), n)
def test_random(self): for dum in range(1000): n = random.randint(-N, N) b = core.encode_int64(n) self.assertEqual(len(b), 8) self.assertEqual(core.decode_int64(b), n)
def test_random(self): for dum in range(1000): n = random.randint(-N, N) b = core.encode_int64(n) self.assertEqual(len(b), 8) self.assertEqual(core.decode_int64(b), n)