1 """Test the binascii C module."""
3 from test_support
import verify
, verbose
6 # Show module doc string
9 # Show module exceptions
11 print binascii
.Incomplete
13 # Check presence and display doc strings of all functions
15 for suffix
in "base64", "hqx", "uu":
16 prefixes
= ["a2b_", "b2a_"]
18 prefixes
.extend(["crc_", "rlecode_", "rledecode_"])
19 for prefix
in prefixes
:
20 name
= prefix
+ suffix
21 funcs
.append(getattr(binascii
, name
))
23 print "%-15s: %s" % (func
.__name
__, func
.__doc
__)
25 # Create binary test data
26 testdata
= "The quick brown fox jumps over the lazy dog.\r\n"
28 # Be slow so we don't depend on other modules
29 testdata
= testdata
+ chr(i
)
30 testdata
= testdata
+ "\r\nHello world.\n"
32 # Test base64 with valid data
36 for i
in range(0, len(testdata
), MAX_BASE64
):
37 b
= testdata
[i
:i
+MAX_BASE64
]
38 a
= binascii
.b2a_base64(b
)
43 b
= binascii
.a2b_base64(line
)
45 verify(res
== testdata
)
47 # Test base64 with random invalid characters sprinkled throughout
48 # (This requires a new version of binascii.)
50 valid
= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
57 ratio
= len(line
) // len(noise
)
60 if len(line
) // len(noise
) > ratio
:
61 c
, line
= line
[0], line
[1:]
63 c
, noise
= noise
[0], noise
[1:]
65 return res
+ noise
+ line
67 for line
in map(addnoise
, lines
):
68 b
= binascii
.a2b_base64(line
)
70 verify(res
== testdata
)
76 for i
in range(0, len(testdata
), MAX_UU
):
77 b
= testdata
[i
:i
+MAX_UU
]
78 a
= binascii
.b2a_uu(b
)
83 b
= binascii
.a2b_uu(line
)
85 verify(res
== testdata
)
88 crc
= binascii
.crc32("Test the CRC-32 of")
89 crc
= binascii
.crc32(" this string.", crc
)
91 print "binascii.crc32() failed."
93 # The hqx test is in test_binhex.py
96 s
= '{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000'
97 t
= binascii
.b2a_hex(s
)
98 u
= binascii
.a2b_hex(t
)
100 print 'binascii hexlification failed'
102 binascii
.a2b_hex(t
[:-1])
106 print 'expected TypeError not raised'
108 binascii
.a2b_hex(t
[:-1] + 'q')
112 print 'expected TypeError not raised'
114 # Verify the treatment of Unicode strings
115 verify(binascii
.hexlify(u
'a') == '61', "hexlify failed for Unicode")