1 """Test the binascii C module."""
3 from test_support
import 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 assert 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 assert 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 assert res
== testdata
87 # The hqx test is in test_binhex.py