Add test case from bug #124981: zlib decompress of sync-flushed data

fails
This commit is contained in:
Andrew M. Kuchling 2001-02-21 02:17:01 +00:00
parent 9aff4a2ad0
commit 9a0f98e0a1
2 changed files with 27 additions and 0 deletions

View file

@ -8,3 +8,4 @@ normal compression/decompression succeeded
compress/decompression obj succeeded compress/decompression obj succeeded
decompress with init options succeeded decompress with init options succeeded
decompressobj with init options succeeded decompressobj with init options succeeded
Testing on 17K of random data

View file

@ -1,4 +1,5 @@
import zlib import zlib
from test_support import TestFailed
import sys import sys
import imp import imp
@ -88,6 +89,31 @@ for sync in [zlib.Z_NO_FLUSH, zlib.Z_SYNC_FLUSH, zlib.Z_FULL_FLUSH]:
print "Decompress failed: flush mode=%i, level=%i" % (sync,level) print "Decompress failed: flush mode=%i, level=%i" % (sync,level)
del obj del obj
# Test for the odd flushing bugs noted in 2.0, and hopefully fixed in 2.1
import random
random.seed(1)
print 'Testing on 17K of random data'
# Create compressor and decompressor objects
c=zlib.compressobj(9)
d=zlib.decompressobj()
# Try 17K of data
# generate random data stream
a=""
for i in range(17*1024):
a=a+chr(random.randint(0,255))
# compress, sync-flush, and decompress
t = d.decompress( c.compress(a)+c.flush(zlib.Z_SYNC_FLUSH) )
# if decompressed data is different from the input data, choke.
if len(t) != len(a):
print len(a),len(t),len(d.unused_data)
raise TestFailed, "output of 17K doesn't match"
def ignore(): def ignore():
"""An empty function with a big string. """An empty function with a big string.