]> granicus.if.org Git - python/commitdiff
Add test case from bug #124981: zlib decompress of sync-flushed data
authorAndrew M. Kuchling <amk@amk.ca>
Wed, 21 Feb 2001 02:17:01 +0000 (02:17 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Wed, 21 Feb 2001 02:17:01 +0000 (02:17 +0000)
    fails

Lib/test/output/test_zlib
Lib/test/test_zlib.py

index 6995c11457443e54ca2ec5c6b5e5f89081b594a7..61c33cf21488017528274a0a5832af3474f5fd31 100644 (file)
@@ -8,3 +8,4 @@ normal compression/decompression succeeded
 compress/decompression obj succeeded
 decompress with init options succeeded
 decompressobj with init options succeeded
+Testing on 17K of random data
index 70da76d6c2cc0dba1e1f0098cebebb815d6f6c22..3b783999d5aeebfe66138617c5ec7fe0503c652f 100644 (file)
@@ -1,4 +1,5 @@
 import zlib
+from test_support import TestFailed
 import sys
 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)
         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():
     """An empty function with a big string.