@@ -192,37 +192,106 @@ def test_hex(self):
192192 self .assertEqual (binascii .unhexlify (self .type2test (t )), u )
193193
194194 def test_qp (self ):
195- binascii .a2b_qp (data = b"" , header = False ) # Keyword arguments allowed
195+ type2test = self .type2test
196+ a2b_qp = binascii .a2b_qp
197+ b2a_qp = binascii .b2a_qp
198+
199+ a2b_qp (data = b"" , header = False ) # Keyword arguments allowed
196200
197201 # A test for SF bug 534347 (segfaults without the proper fix)
198202 try :
199- binascii . a2b_qp (b"" , ** {1 :1 })
203+ a2b_qp (b"" , ** {1 :1 })
200204 except TypeError :
201205 pass
202206 else :
203207 self .fail ("binascii.a2b_qp(**{1:1}) didn't raise TypeError" )
204208
205- self .assertEqual (binascii .a2b_qp (b"= " ), b"= " )
206- self .assertEqual (binascii .a2b_qp (b"==" ), b"=" )
207- self .assertEqual (binascii .a2b_qp (b"=AX" ), b"=AX" )
208- self .assertRaises (TypeError , binascii .b2a_qp , foo = "bar" )
209- self .assertEqual (binascii .a2b_qp (b"=00\r \n =00" ), b"\x00 \r \n \x00 " )
210- self .assertEqual (
211- binascii .b2a_qp (b"\xff \r \n \xff \n \xff " ),
212- b"=FF\r \n =FF\r \n =FF" )
213- self .assertEqual (
214- binascii .b2a_qp (b"0" * 75 + b"\xff \r \n \xff \r \n \xff " ),
215- b"0" * 75 + b"=\r \n =FF\r \n =FF\r \n =FF" )
216-
217- self .assertEqual (binascii .b2a_qp (b'\0 \n ' ), b'=00\n ' )
218- self .assertEqual (binascii .b2a_qp (b'\0 \n ' , quotetabs = True ), b'=00\n ' )
219- self .assertEqual (binascii .b2a_qp (b'foo\t bar\t \n ' ), b'foo\t bar=09\n ' )
220- self .assertEqual (binascii .b2a_qp (b'foo\t bar\t \n ' , quotetabs = True ),
221- b'foo=09bar=09\n ' )
222-
223- self .assertEqual (binascii .b2a_qp (b'.' ), b'=2E' )
224- self .assertEqual (binascii .b2a_qp (b'.\n ' ), b'=2E\n ' )
225- self .assertEqual (binascii .b2a_qp (b'a.\n ' ), b'a.\n ' )
209+ self .assertEqual (a2b_qp (type2test (b"=" )), b"" )
210+ self .assertEqual (a2b_qp (type2test (b"= " )), b"= " )
211+ self .assertEqual (a2b_qp (type2test (b"==" )), b"=" )
212+ self .assertEqual (a2b_qp (type2test (b"=\n AB" )), b"AB" )
213+ self .assertEqual (a2b_qp (type2test (b"=\r \n AB" )), b"AB" )
214+ self .assertEqual (a2b_qp (type2test (b"=\r AB" )), b"" ) # ?
215+ self .assertEqual (a2b_qp (type2test (b"=\r AB\n CD" )), b"CD" ) # ?
216+ self .assertEqual (a2b_qp (type2test (b"=AB" )), b"\xab " )
217+ self .assertEqual (a2b_qp (type2test (b"=ab" )), b"\xab " )
218+ self .assertEqual (a2b_qp (type2test (b"=AX" )), b"=AX" )
219+ self .assertEqual (a2b_qp (type2test (b"=XA" )), b"=XA" )
220+ self .assertEqual (a2b_qp (type2test (b"=AB" )[:- 1 ]), b"=A" )
221+
222+ self .assertEqual (a2b_qp (type2test (b'_' )), b'_' )
223+ self .assertEqual (a2b_qp (type2test (b'_' ), header = True ), b' ' )
224+
225+ self .assertRaises (TypeError , b2a_qp , foo = "bar" )
226+ self .assertEqual (a2b_qp (type2test (b"=00\r \n =00" )), b"\x00 \r \n \x00 " )
227+ self .assertEqual (b2a_qp (type2test (b"\xff \r \n \xff \n \xff " )),
228+ b"=FF\r \n =FF\r \n =FF" )
229+ self .assertEqual (b2a_qp (type2test (b"0" * 75 + b"\xff \r \n \xff \r \n \xff " )),
230+ b"0" * 75 + b"=\r \n =FF\r \n =FF\r \n =FF" )
231+
232+ self .assertEqual (b2a_qp (type2test (b'\x7f ' )), b'=7F' )
233+ self .assertEqual (b2a_qp (type2test (b'=' )), b'=3D' )
234+
235+ self .assertEqual (b2a_qp (type2test (b'_' )), b'_' )
236+ self .assertEqual (b2a_qp (type2test (b'_' ), header = True ), b'=5F' )
237+ self .assertEqual (b2a_qp (type2test (b'x y' ), header = True ), b'x_y' )
238+ self .assertEqual (b2a_qp (type2test (b'x ' ), header = True ), b'x=20' )
239+ self .assertEqual (b2a_qp (type2test (b'x y' ), header = True , quotetabs = True ),
240+ b'x=20y' )
241+ self .assertEqual (b2a_qp (type2test (b'x\t y' ), header = True ), b'x\t y' )
242+
243+ self .assertEqual (b2a_qp (type2test (b' ' )), b'=20' )
244+ self .assertEqual (b2a_qp (type2test (b'\t ' )), b'=09' )
245+ self .assertEqual (b2a_qp (type2test (b' x' )), b' x' )
246+ self .assertEqual (b2a_qp (type2test (b'\t x' )), b'\t x' )
247+ self .assertEqual (b2a_qp (type2test (b' x' )[:- 1 ]), b'=20' )
248+ self .assertEqual (b2a_qp (type2test (b'\t x' )[:- 1 ]), b'=09' )
249+ self .assertEqual (b2a_qp (type2test (b'\0 ' )), b'=00' )
250+
251+ self .assertEqual (b2a_qp (type2test (b'\0 \n ' )), b'=00\n ' )
252+ self .assertEqual (b2a_qp (type2test (b'\0 \n ' ), quotetabs = True ), b'=00\n ' )
253+
254+ self .assertEqual (b2a_qp (type2test (b'x y\t z' )), b'x y\t z' )
255+ self .assertEqual (b2a_qp (type2test (b'x y\t z' ), quotetabs = True ),
256+ b'x=20y=09z' )
257+ self .assertEqual (b2a_qp (type2test (b'x y\t z' ), istext = False ),
258+ b'x y\t z' )
259+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' )),
260+ b'x=20\n y=09\n ' )
261+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' ), quotetabs = True ),
262+ b'x=20\n y=09\n ' )
263+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' ), istext = False ),
264+ b'x =0Ay\t =0A' )
265+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' )),
266+ b'x \r y\t \r ' )
267+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' ), quotetabs = True ),
268+ b'x=20\r y=09\r ' )
269+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' ), istext = False ),
270+ b'x =0Dy\t =0D' )
271+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' )),
272+ b'x=20\r \n y=09\r \n ' )
273+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' ), quotetabs = True ),
274+ b'x=20\r \n y=09\r \n ' )
275+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' ), istext = False ),
276+ b'x =0D=0Ay\t =0D=0A' )
277+
278+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ]), b'x \r ' )
279+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ]), b'x\t \r ' )
280+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ], quotetabs = True ),
281+ b'x=20\r ' )
282+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ], quotetabs = True ),
283+ b'x=09\r ' )
284+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ], istext = False ),
285+ b'x =0D' )
286+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ], istext = False ),
287+ b'x\t =0D' )
288+
289+ self .assertEqual (b2a_qp (type2test (b'.' )), b'=2E' )
290+ self .assertEqual (b2a_qp (type2test (b'.\n ' )), b'=2E\n ' )
291+ self .assertEqual (b2a_qp (type2test (b'.\r ' )), b'=2E\r ' )
292+ self .assertEqual (b2a_qp (type2test (b'.\0 ' )), b'=2E=00' )
293+ self .assertEqual (b2a_qp (type2test (b'a.\n ' )), b'a.\n ' )
294+ self .assertEqual (b2a_qp (type2test (b'.a' )[:- 1 ]), b'=2E' )
226295
227296 def test_empty_string (self ):
228297 # A test for SF bug #1022953. Make sure SystemError is not raised.
0 commit comments