mirror of
https://github.com/python/cpython.git
synced 2025-07-28 21:55:21 +00:00
Patch #1435422: zlib's compress and decompress objects now have a
copy() method.
This commit is contained in:
parent
5f5d99c215
commit
8d3342b489
4 changed files with 175 additions and 0 deletions
|
@ -302,6 +302,63 @@ class CompressObjectTestCase(unittest.TestCase):
|
|||
dco = zlib.decompressobj()
|
||||
self.assertEqual(dco.flush(), "") # Returns nothing
|
||||
|
||||
def test_compresscopy(self):
|
||||
# Test copying a compression object
|
||||
data0 = HAMLET_SCENE
|
||||
data1 = HAMLET_SCENE.swapcase()
|
||||
c0 = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
|
||||
bufs0 = []
|
||||
bufs0.append(c0.compress(data0))
|
||||
|
||||
c1 = c0.copy()
|
||||
bufs1 = bufs0[:]
|
||||
|
||||
bufs0.append(c0.compress(data0))
|
||||
bufs0.append(c0.flush())
|
||||
s0 = ''.join(bufs0)
|
||||
|
||||
bufs1.append(c1.compress(data1))
|
||||
bufs1.append(c1.flush())
|
||||
s1 = ''.join(bufs1)
|
||||
|
||||
self.assertEqual(zlib.decompress(s0),data0+data0)
|
||||
self.assertEqual(zlib.decompress(s1),data0+data1)
|
||||
|
||||
def test_badcompresscopy(self):
|
||||
# Test copying a compression object in an inconsistent state
|
||||
c = zlib.compressobj()
|
||||
c.compress(HAMLET_SCENE)
|
||||
c.flush()
|
||||
self.assertRaises(ValueError, c.copy)
|
||||
|
||||
def test_decompresscopy(self):
|
||||
# Test copying a decompression object
|
||||
data = HAMLET_SCENE
|
||||
comp = zlib.compress(data)
|
||||
|
||||
d0 = zlib.decompressobj()
|
||||
bufs0 = []
|
||||
bufs0.append(d0.decompress(comp[:32]))
|
||||
|
||||
d1 = d0.copy()
|
||||
bufs1 = bufs0[:]
|
||||
|
||||
bufs0.append(d0.decompress(comp[32:]))
|
||||
s0 = ''.join(bufs0)
|
||||
|
||||
bufs1.append(d1.decompress(comp[32:]))
|
||||
s1 = ''.join(bufs1)
|
||||
|
||||
self.assertEqual(s0,s1)
|
||||
self.assertEqual(s0,data)
|
||||
|
||||
def test_baddecompresscopy(self):
|
||||
# Test copying a compression object in an inconsistent state
|
||||
data = zlib.compress(HAMLET_SCENE)
|
||||
d = zlib.decompressobj()
|
||||
d.decompress(data)
|
||||
d.flush()
|
||||
self.assertRaises(ValueError, d.copy)
|
||||
|
||||
def genblock(seed, length, step=1024, generator=random):
|
||||
"""length-byte stream of random data from a seed (in step-byte blocks)."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue