@@ -178,37 +178,106 @@ def test_hex(self):
178178 self .assertEqual (binascii .unhexlify (self .type2test (t )), u )
179179
180180 def test_qp (self ):
181- binascii .a2b_qp (data = b"" , header = False ) # Keyword arguments allowed
181+ type2test = self .type2test
182+ a2b_qp = binascii .a2b_qp
183+ b2a_qp = binascii .b2a_qp
184+
185+ a2b_qp (data = b"" , header = False ) # Keyword arguments allowed
182186
183187 # A test for SF bug 534347 (segfaults without the proper fix)
184188 try :
185- binascii . a2b_qp (b"" , ** {1 :1 })
189+ a2b_qp (b"" , ** {1 :1 })
186190 except TypeError :
187191 pass
188192 else :
189193 self .fail ("binascii.a2b_qp(**{1:1}) didn't raise TypeError" )
190194
191- self .assertEqual (binascii .a2b_qp (b"= " ), b"= " )
192- self .assertEqual (binascii .a2b_qp (b"==" ), b"=" )
193- self .assertEqual (binascii .a2b_qp (b"=AX" ), b"=AX" )
194- self .assertRaises (TypeError , binascii .b2a_qp , foo = "bar" )
195- self .assertEqual (binascii .a2b_qp (b"=00\r \n =00" ), b"\x00 \r \n \x00 " )
196- self .assertEqual (
197- binascii .b2a_qp (b"\xff \r \n \xff \n \xff " ),
198- b"=FF\r \n =FF\r \n =FF" )
199- self .assertEqual (
200- binascii .b2a_qp (b"0" * 75 + b"\xff \r \n \xff \r \n \xff " ),
201- b"0" * 75 + b"=\r \n =FF\r \n =FF\r \n =FF" )
202-
203- self .assertEqual (binascii .b2a_qp (b'\0 \n ' ), b'=00\n ' )
204- self .assertEqual (binascii .b2a_qp (b'\0 \n ' , quotetabs = True ), b'=00\n ' )
205- self .assertEqual (binascii .b2a_qp (b'foo\t bar\t \n ' ), b'foo\t bar=09\n ' )
206- self .assertEqual (binascii .b2a_qp (b'foo\t bar\t \n ' , quotetabs = True ),
207- b'foo=09bar=09\n ' )
208-
209- self .assertEqual (binascii .b2a_qp (b'.' ), b'=2E' )
210- self .assertEqual (binascii .b2a_qp (b'.\n ' ), b'=2E\n ' )
211- self .assertEqual (binascii .b2a_qp (b'a.\n ' ), b'a.\n ' )
195+ self .assertEqual (a2b_qp (type2test (b"=" )), b"" )
196+ self .assertEqual (a2b_qp (type2test (b"= " )), b"= " )
197+ self .assertEqual (a2b_qp (type2test (b"==" )), b"=" )
198+ self .assertEqual (a2b_qp (type2test (b"=\n AB" )), b"AB" )
199+ self .assertEqual (a2b_qp (type2test (b"=\r \n AB" )), b"AB" )
200+ self .assertEqual (a2b_qp (type2test (b"=\r AB" )), b"" ) # ?
201+ self .assertEqual (a2b_qp (type2test (b"=\r AB\n CD" )), b"CD" ) # ?
202+ self .assertEqual (a2b_qp (type2test (b"=AB" )), b"\xab " )
203+ self .assertEqual (a2b_qp (type2test (b"=ab" )), b"\xab " )
204+ self .assertEqual (a2b_qp (type2test (b"=AX" )), b"=AX" )
205+ self .assertEqual (a2b_qp (type2test (b"=XA" )), b"=XA" )
206+ self .assertEqual (a2b_qp (type2test (b"=AB" )[:- 1 ]), b"=A" )
207+
208+ self .assertEqual (a2b_qp (type2test (b'_' )), b'_' )
209+ self .assertEqual (a2b_qp (type2test (b'_' ), header = True ), b' ' )
210+
211+ self .assertRaises (TypeError , b2a_qp , foo = "bar" )
212+ self .assertEqual (a2b_qp (type2test (b"=00\r \n =00" )), b"\x00 \r \n \x00 " )
213+ self .assertEqual (b2a_qp (type2test (b"\xff \r \n \xff \n \xff " )),
214+ b"=FF\r \n =FF\r \n =FF" )
215+ self .assertEqual (b2a_qp (type2test (b"0" * 75 + b"\xff \r \n \xff \r \n \xff " )),
216+ b"0" * 75 + b"=\r \n =FF\r \n =FF\r \n =FF" )
217+
218+ self .assertEqual (b2a_qp (type2test (b'\x7f ' )), b'=7F' )
219+ self .assertEqual (b2a_qp (type2test (b'=' )), b'=3D' )
220+
221+ self .assertEqual (b2a_qp (type2test (b'_' )), b'_' )
222+ self .assertEqual (b2a_qp (type2test (b'_' ), header = True ), b'=5F' )
223+ self .assertEqual (b2a_qp (type2test (b'x y' ), header = True ), b'x_y' )
224+ self .assertEqual (b2a_qp (type2test (b'x ' ), header = True ), b'x=20' )
225+ self .assertEqual (b2a_qp (type2test (b'x y' ), header = True , quotetabs = True ),
226+ b'x=20y' )
227+ self .assertEqual (b2a_qp (type2test (b'x\t y' ), header = True ), b'x\t y' )
228+
229+ self .assertEqual (b2a_qp (type2test (b' ' )), b'=20' )
230+ self .assertEqual (b2a_qp (type2test (b'\t ' )), b'=09' )
231+ self .assertEqual (b2a_qp (type2test (b' x' )), b' x' )
232+ self .assertEqual (b2a_qp (type2test (b'\t x' )), b'\t x' )
233+ self .assertEqual (b2a_qp (type2test (b' x' )[:- 1 ]), b'=20' )
234+ self .assertEqual (b2a_qp (type2test (b'\t x' )[:- 1 ]), b'=09' )
235+ self .assertEqual (b2a_qp (type2test (b'\0 ' )), b'=00' )
236+
237+ self .assertEqual (b2a_qp (type2test (b'\0 \n ' )), b'=00\n ' )
238+ self .assertEqual (b2a_qp (type2test (b'\0 \n ' ), quotetabs = True ), b'=00\n ' )
239+
240+ self .assertEqual (b2a_qp (type2test (b'x y\t z' )), b'x y\t z' )
241+ self .assertEqual (b2a_qp (type2test (b'x y\t z' ), quotetabs = True ),
242+ b'x=20y=09z' )
243+ self .assertEqual (b2a_qp (type2test (b'x y\t z' ), istext = False ),
244+ b'x y\t z' )
245+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' )),
246+ b'x=20\n y=09\n ' )
247+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' ), quotetabs = True ),
248+ b'x=20\n y=09\n ' )
249+ self .assertEqual (b2a_qp (type2test (b'x \n y\t \n ' ), istext = False ),
250+ b'x =0Ay\t =0A' )
251+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' )),
252+ b'x \r y\t \r ' )
253+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' ), quotetabs = True ),
254+ b'x=20\r y=09\r ' )
255+ self .assertEqual (b2a_qp (type2test (b'x \r y\t \r ' ), istext = False ),
256+ b'x =0Dy\t =0D' )
257+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' )),
258+ b'x=20\r \n y=09\r \n ' )
259+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' ), quotetabs = True ),
260+ b'x=20\r \n y=09\r \n ' )
261+ self .assertEqual (b2a_qp (type2test (b'x \r \n y\t \r \n ' ), istext = False ),
262+ b'x =0D=0Ay\t =0D=0A' )
263+
264+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ]), b'x \r ' )
265+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ]), b'x\t \r ' )
266+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ], quotetabs = True ),
267+ b'x=20\r ' )
268+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ], quotetabs = True ),
269+ b'x=09\r ' )
270+ self .assertEqual (b2a_qp (type2test (b'x \r \n ' )[:- 1 ], istext = False ),
271+ b'x =0D' )
272+ self .assertEqual (b2a_qp (type2test (b'x\t \r \n ' )[:- 1 ], istext = False ),
273+ b'x\t =0D' )
274+
275+ self .assertEqual (b2a_qp (type2test (b'.' )), b'=2E' )
276+ self .assertEqual (b2a_qp (type2test (b'.\n ' )), b'=2E\n ' )
277+ self .assertEqual (b2a_qp (type2test (b'.\r ' )), b'=2E\r ' )
278+ self .assertEqual (b2a_qp (type2test (b'.\0 ' )), b'=2E=00' )
279+ self .assertEqual (b2a_qp (type2test (b'a.\n ' )), b'a.\n ' )
280+ self .assertEqual (b2a_qp (type2test (b'.a' )[:- 1 ]), b'=2E' )
212281
213282 def test_empty_string (self ):
214283 # A test for SF bug #1022953. Make sure SystemError is not raised.
0 commit comments