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 read_patch(fi, header_only=False): """read a BSDIFF4-format patch from stream 'fi' """ magic = fi.read(8) assert magic[:7] == MAGIC[:7] # length headers len_control = core.decode_int64(fi.read(8)) len_diff = core.decode_int64(fi.read(8)) len_dst = core.decode_int64(fi.read(8)) # read the control header bcontrol = bz2.decompress(fi.read(len_control)) tcontrol = [(core.decode_int64(bcontrol[i:i + 8]), core.decode_int64(bcontrol[i + 8:i + 16]), core.decode_int64(bcontrol[i + 16:i + 24])) for i in range(0, len(bcontrol), 24)] if header_only: return len_control, len_diff, len_dst, tcontrol # read the diff and extra blocks bdiff = bz2.decompress(fi.read(len_diff)) bextra = bz2.decompress(fi.read()) return len_dst, tcontrol, bdiff, bextra
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)