test_binascii.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 120 行

PY
120
字号
"""Test the binascii C module."""from test_support import verify, verboseimport binascii# Show module doc stringprint binascii.__doc__# Show module exceptionsprint binascii.Errorprint binascii.Incomplete# Check presence and display doc strings of all functionsfuncs = []for suffix in "base64", "hqx", "uu":    prefixes = ["a2b_", "b2a_"]    if suffix == "hqx":        prefixes.extend(["crc_", "rlecode_", "rledecode_"])    for prefix in prefixes:        name = prefix + suffix        funcs.append(getattr(binascii, name))for func in funcs:    print "%-15s: %s" % (func.__name__, func.__doc__)# Create binary test datatestdata = "The quick brown fox jumps over the lazy dog.\r\n"for i in range(256):    # Be slow so we don't depend on other modules    testdata = testdata + chr(i)testdata = testdata + "\r\nHello world.\n"# Test base64 with valid dataprint "base64 test"MAX_BASE64 = 57lines = []for i in range(0, len(testdata), MAX_BASE64):    b = testdata[i:i+MAX_BASE64]    a = binascii.b2a_base64(b)    lines.append(a)    print a,res = ""for line in lines:    b = binascii.a2b_base64(line)    res = res + bverify(res == testdata)# Test base64 with random invalid characters sprinkled throughout# (This requires a new version of binascii.)fillers = ""valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"for i in range(256):    c = chr(i)    if c not in valid:        fillers = fillers + cdef 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 = res + c    return res + noise + lineres = ""for line in map(addnoise, lines):    b = binascii.a2b_base64(line)    res = res + bverify(res == testdata)# Test base64 with just invalid characters, which should return# empty strings.verify(binascii.a2b_base64(fillers) == '')# Test uuprint "uu test"MAX_UU = 45lines = []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 + bverify(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 hexlifications = '{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:    passelse:    print 'expected TypeError not raised'try:    binascii.a2b_hex(t[:-1] + 'q')except TypeError:    passelse:    print 'expected TypeError not raised'# Verify the treatment of Unicode stringsverify(binascii.hexlify(u'a') == '61', "hexlify failed for Unicode")

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?