Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if __name__ == "__main__":
- import random
- import time
- xrange = range
- try:
- from StringIO import StringIO
- except ImportError:
- from io import BytesIO as StringIO
- # Generates random data for the test
- targetdata = ''.join([chr(random.randint(0, 127)) for n in range(1<<16)])
- chunks = [targetdata[i:i+2048] for i in xrange(0, 1<<17, 2048)]
- for i in xrange(8):
- a, b = (
- random.randrange(0, len(chunks)), random.randrange(0, len(chunks)))
- chunks[a], chunks[b] = chunks[b], chunks[a]
- hostdata = ''.join(chunks)
- # targetstream: file to be patched
- # hoststream: what the unpatched target needs to become
- # mergedstream: output after patching
- # Python 3 bytes compatibility
- mergedstream = StringIO()
- if __builtins__.bytes == str:
- targetstream = StringIO(targetdata)
- hoststream = StringIO(hostdata)
- else:
- targetstream = StringIO(bytes(targetdata, "ascii"))
- hoststream = StringIO(bytes(hostdata, "ascii"))
- targetchecksums = blockchecksums(targetstream)
- binarypatch = rsyncdelta(hoststream, targetchecksums)
- patchstream(targetstream, mergedstream, binarypatch)
- mergedstream.seek(0)
- patcheddata = mergedstream.read()
- if __builtins__.bytes == str:
- assert patcheddata == hostdata
- else:
- assert str(patcheddata, 'ascii') == hostdata
- print("Test passed.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement