@@ -41,12 +41,12 @@ def test_penguins(self):
4141 self .assertEqual (zlib .adler32 (b"penguin" ),zlib .adler32 (b"penguin" ,1 ))
4242
4343 def test_crc32_adler32_unsigned (self ):
44- foo = 'abcdefghijklmnop'
44+ foo = b 'abcdefghijklmnop'
4545 # explicitly test signed behavior
4646 self .assertEqual (zlib .crc32 (foo ), 2486878355 )
47- self .assertEqual (zlib .crc32 ('spam' ), 1138425661 )
47+ self .assertEqual (zlib .crc32 (b 'spam' ), 1138425661 )
4848 self .assertEqual (zlib .adler32 (foo + foo ), 3573550353 )
49- self .assertEqual (zlib .adler32 ('spam' ), 72286642 )
49+ self .assertEqual (zlib .adler32 (b 'spam' ), 72286642 )
5050
5151 def test_same_as_binascii_crc32 (self ):
5252 foo = b'abcdefghijklmnop'
@@ -63,7 +63,18 @@ def test_badlevel(self):
6363 # specifying compression level out of range causes an error
6464 # (but -1 is Z_DEFAULT_COMPRESSION and apparently the zlib
6565 # accepts 0 too)
66- self .assertRaises (zlib .error , zlib .compress , 'ERROR' , 10 )
66+ self .assertRaises (zlib .error , zlib .compress , b'ERROR' , 10 )
67+
68+ def test_badargs (self ):
69+ self .assertRaises (TypeError , zlib .adler32 )
70+ self .assertRaises (TypeError , zlib .crc32 )
71+ self .assertRaises (TypeError , zlib .compress )
72+ self .assertRaises (TypeError , zlib .decompress )
73+ for arg in (42 , None , '' , 'abc' , (), []):
74+ self .assertRaises (TypeError , zlib .adler32 , arg )
75+ self .assertRaises (TypeError , zlib .crc32 , arg )
76+ self .assertRaises (TypeError , zlib .compress , arg )
77+ self .assertRaises (TypeError , zlib .decompress , arg )
6778
6879 def test_badcompressobj (self ):
6980 # verify failure on building compress object with bad params
@@ -93,26 +104,32 @@ def test_speech128(self):
93104 # compress more data
94105 data = HAMLET_SCENE * 128
95106 x = zlib .compress (data )
96- self .assertEqual (zlib .decompress (x ), data )
97-
107+ self .assertEqual (zlib .compress (bytearray (data )), x )
108+ for ob in x , bytearray (x ):
109+ self .assertEqual (zlib .decompress (ob ), data )
98110
99111
100112
101113class CompressObjectTestCase (unittest .TestCase ):
102114 # Test compression object
103115 def test_pair (self ):
104116 # straightforward compress/decompress objects
105- data = HAMLET_SCENE * 128
106- co = zlib .compressobj ()
107- x1 = co .compress (data )
108- x2 = co .flush ()
109- self .assertRaises (zlib .error , co .flush ) # second flush should not work
110- dco = zlib .decompressobj ()
111- y1 = dco .decompress (x1 + x2 )
112- y2 = dco .flush ()
113- self .assertEqual (data , y1 + y2 )
114- self .assertTrue (isinstance (dco .unconsumed_tail , bytes ))
115- self .assertTrue (isinstance (dco .unused_data , bytes ))
117+ datasrc = HAMLET_SCENE * 128
118+ datazip = zlib .compress (datasrc )
119+ # should compress both bytes and bytearray data
120+ for data in (datasrc , bytearray (datasrc )):
121+ co = zlib .compressobj ()
122+ x1 = co .compress (data )
123+ x2 = co .flush ()
124+ self .assertRaises (zlib .error , co .flush ) # second flush should not work
125+ self .assertEqual (x1 + x2 , datazip )
126+ for v1 , v2 in ((x1 , x2 ), (bytearray (x1 ), bytearray (x2 ))):
127+ dco = zlib .decompressobj ()
128+ y1 = dco .decompress (v1 + v2 )
129+ y2 = dco .flush ()
130+ self .assertEqual (data , y1 + y2 )
131+ self .assertIsInstance (dco .unconsumed_tail , bytes )
132+ self .assertIsInstance (dco .unused_data , bytes )
116133
117134 def test_compressoptions (self ):
118135 # specify lots of options to compressobj()
@@ -173,7 +190,7 @@ def test_decompinc(self, flush=False, source=None, cx=256, dcx=64):
173190 bufs .append (dco .flush ())
174191 else :
175192 while True :
176- chunk = dco .decompress ('' )
193+ chunk = dco .decompress (b '' )
177194 if chunk :
178195 bufs .append (chunk )
179196 else :
@@ -241,7 +258,7 @@ def test_decompressmaxlen(self, flush=False):
241258 bufs .append (dco .flush ())
242259 else :
243260 while chunk :
244- chunk = dco .decompress ('' , max_length )
261+ chunk = dco .decompress (b '' , max_length )
245262 self .assertFalse (len (chunk ) > max_length ,
246263 'chunk too big (%d>%d)' % (len (chunk ),max_length ))
247264 bufs .append (chunk )
@@ -253,7 +270,7 @@ def test_decompressmaxlenflush(self):
253270 def test_maxlenmisc (self ):
254271 # Misc tests of max_length
255272 dco = zlib .decompressobj ()
256- self .assertRaises (ValueError , dco .decompress , "" , - 1 )
273+ self .assertRaises (ValueError , dco .decompress , b "" , - 1 )
257274 self .assertEqual (b'' , dco .unconsumed_tail )
258275
259276 def test_flushes (self ):
0 commit comments