diff --git a/Lib/test/output/test_binascii b/Lib/test/output/test_binascii deleted file mode 100644 index 7f01d1c53a0..00000000000 --- a/Lib/test/output/test_binascii +++ /dev/null @@ -1,29 +0,0 @@ -test_binascii -Conversion between binary data and ASCII -binascii.Error -binascii.Incomplete -a2b_base64 : (ascii) -> bin. Decode a line of base64 data -b2a_base64 : (bin) -> ascii. Base64-code line of data -a2b_hqx : ascii -> bin, done. Decode .hqx coding -b2a_hqx : Encode .hqx data -crc_hqx : (data, oldcrc) -> newcrc. Compute hqx CRC incrementally -rlecode_hqx : Binhex RLE-code binary data -rledecode_hqx : Decode hexbin RLE-coded string -a2b_uu : (ascii) -> bin. Decode a line of uuencoded data -b2a_uu : (bin) -> ascii. Uuencode line of data -base64 test -VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4NCgABAgMEBQYHCAkK -CwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJD -REVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8 -fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1 -tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u -7/Dx8vP09fb3+Pn6+/z9/v8NCkhlbGxvIHdvcmxkLgo= -uu test -M5&AE('%U:6-K(&)R;W=N(&9O>"!J=6UP7V!A8F-D969G:&EJ:VQM;F]P<7)S='5V=WAY>GM\?7Y_@(&"@X2% -MAH>(B8J+C(V.CY"1DI.4E9:7F)F:FYR=GI^@H:*CI*6FIZBIJJNLK:ZOL+&R -ML[2UMK>XN;J[O+V^O\#!PL/$Q<;'R,G*R\S-SL_0T=+3U-76U]C9VMOKK[.WN[_#Q\O/T]?;W^/GZ^_S]_O\-"DAE;&QO('=O ratio: - c, line = line[0], line[1:] + def test_functions(self): + # Check presence of all functions + funcs = [] + for suffix in "base64", "hqx", "uu", "hex": + prefixes = ["a2b_", "b2a_"] + if suffix == "hqx": + prefixes.extend(["crc_", "rlecode_", "rledecode_"]) + for prefix in prefixes: + name = prefix + suffix + self.assert_(callable(getattr(binascii, name))) + self.assertRaises(TypeError, getattr(binascii, name)) + for name in ("hexlify", "unhexlify"): + self.assert_(callable(getattr(binascii, name))) + self.assertRaises(TypeError, getattr(binascii, name)) + + def test_base64valid(self): + # Test base64 with valid data + MAX_BASE64 = 57 + lines = [] + for i in range(0, len(self.data), MAX_BASE64): + b = self.data[i:i+MAX_BASE64] + a = binascii.b2a_base64(b) + lines.append(a) + res = "" + for line in lines: + b = binascii.a2b_base64(line) + res = res + b + self.assertEqual(res, self.data) + + def test_base64invalid(self): + # Test base64 with random invalid characters sprinkled throughout + # (This requires a new version of binascii.) + MAX_BASE64 = 57 + lines = [] + for i in range(0, len(self.data), MAX_BASE64): + b = self.data[i:i+MAX_BASE64] + a = binascii.b2a_base64(b) + lines.append(a) + + fillers = "" + valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/" + for i in xrange(256): + c = chr(i) + if c not in valid: + fillers += c + def addnoise(line): + noise = fillers + ratio = len(line) // len(noise) + res = "" + while line and noise: + if len(line) // len(noise) > ratio: + c, line = line[0], line[1:] + else: + c, noise = noise[0], noise[1:] + res += c + return res + noise + line + res = "" + for line in map(addnoise, lines): + b = binascii.a2b_base64(line) + res += b + self.assertEqual(res, self.data) + + # Test base64 with just invalid characters, which should return + # empty strings. TBD: shouldn't it raise an exception instead ? + self.assertEqual(binascii.a2b_base64(fillers), '') + + def test_uu(self): + MAX_UU = 45 + lines = [] + for i in range(0, len(self.data), MAX_UU): + b = self.data[i:i+MAX_UU] + a = binascii.b2a_uu(b) + lines.append(a) + res = "" + for line in lines: + b = binascii.a2b_uu(line) + res += b + self.assertEqual(res, self.data) + + self.assertEqual(binascii.a2b_uu("\x7f"), "\x00"*31) + self.assertEqual(binascii.a2b_uu("\x80"), "\x00"*32) + self.assertEqual(binascii.a2b_uu("\xff"), "\x00"*31) + self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00") + self.assertRaises(binascii.Error, binascii.a2b_uu, "!!!!") + + self.assertRaises(binascii.Error, binascii.b2a_uu, 46*"!") + + def test_crc32(self): + crc = binascii.crc32("Test the CRC-32 of") + crc = binascii.crc32(" this string.", crc) + self.assertEqual(crc, 1571220330) + + self.assertRaises(TypeError, binascii.crc32) + + # The hqx test is in test_binhex.py + + def test_hex(self): + # test hexlification + s = '{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000' + t = binascii.b2a_hex(s) + u = binascii.a2b_hex(t) + self.assertEqual(s, u) + self.assertRaises(TypeError, binascii.a2b_hex, t[:-1]) + self.assertRaises(TypeError, binascii.a2b_hex, t[:-1] + 'q') + + # Verify the treatment of Unicode strings + if test_support.have_unicode: + self.assertEqual(binascii.hexlify(unicode('a', 'ascii')), '61') + + def test_qp(self): + # A test for SF bug 534347 (segfaults without the proper fix) + try: + binascii.a2b_qp("", **{1:1}) + except TypeError: + pass else: - c, noise = noise[0], noise[1:] - res = res + c - return res + noise + line -res = "" -for line in map(addnoise, lines): - b = binascii.a2b_base64(line) - res = res + b -verify(res == testdata) + self.fail("binascii.a2b_qp(**{1:1}) didn't raise TypeError") + self.assertEqual(binascii.a2b_qp("= "), "") + self.assertEqual(binascii.a2b_qp("=="), "=") + self.assertEqual(binascii.a2b_qp("=AX"), "=AX") + self.assertRaises(TypeError, binascii.b2a_qp, foo="bar") + self.assertEqual(binascii.a2b_qp("=00\r\n=00"), "\x00\r\n\x00") + self.assertEqual( + binascii.b2a_qp("\xff\r\n\xff\n\xff"), + "=FF\r\n=FF\r\n=FF" + ) + self.assertEqual( + binascii.b2a_qp("0"*75+"\xff\r\n\xff\r\n\xff"), + "0"*75+"=\r\n=FF\r\n=FF\r\n=FF" + ) -# Test base64 with just invalid characters, which should return -# empty strings. TBD: shouldn't it raise an exception instead ? -verify(binascii.a2b_base64(fillers) == '') +def test_main(): + test_support.run_unittest(BinASCIITest) -# Test uu -print "uu test" -MAX_UU = 45 -lines = [] -for i in range(0, len(testdata), MAX_UU): - b = testdata[i:i+MAX_UU] - a = binascii.b2a_uu(b) - lines.append(a) - print a, -res = "" -for line in lines: - b = binascii.a2b_uu(line) - res = res + b -verify(res == testdata) - -# Test crc32() -crc = binascii.crc32("Test the CRC-32 of") -crc = binascii.crc32(" this string.", crc) -if crc != 1571220330: - print "binascii.crc32() failed." - -# The hqx test is in test_binhex.py - -# test hexlification -s = '{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000' -t = binascii.b2a_hex(s) -u = binascii.a2b_hex(t) -if s != u: - print 'binascii hexlification failed' -try: - binascii.a2b_hex(t[:-1]) -except TypeError: - pass -else: - print 'expected TypeError not raised' -try: - binascii.a2b_hex(t[:-1] + 'q') -except TypeError: - pass -else: - print 'expected TypeError not raised' - -# Verify the treatment of Unicode strings -if have_unicode: - verify(binascii.hexlify(unicode('a', 'ascii')) == '61', - "hexlify failed for Unicode") - -# A test for SF bug 534347 (segfaults without the proper fix) -try: - binascii.a2b_qp("", **{1:1}) -except TypeError: - pass -else: - raise TestFailed, "binascii..a2b_qp(**{1:1}) didn't raise TypeError" +if __name__ == "__main__": + test_main()