summaryrefslogtreecommitdiffstats
path: root/Lib/dos-8x3/test_bin.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/dos-8x3/test_bin.py')
-rw-r--r--Lib/dos-8x3/test_bin.py154
1 files changed, 110 insertions, 44 deletions
diff --git a/Lib/dos-8x3/test_bin.py b/Lib/dos-8x3/test_bin.py
index 534fa73..52f817b 100644
--- a/Lib/dos-8x3/test_bin.py
+++ b/Lib/dos-8x3/test_bin.py
@@ -1,46 +1,112 @@
-#! /usr/bin/env python
-"""Test script for the binhex C module
-
- Uses the mechanism of the python binhex module
- Roger E. Masse
-"""
-import binhex
-import tempfile
+"""Test the binascii C module."""
+
from test_support import verbose
+import binascii
+
+# Show module doc string
+print binascii.__doc__
+
+# Show module exceptions
+print binascii.Error
+print binascii.Incomplete
+
+# Check presence and display doc strings of all functions
+funcs = []
+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 data
+testdata = "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 data
+print "base64 test"
+MAX_BASE64 = 57
+lines = []
+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 + b
+assert 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 + 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 = res + c
+ return res + noise + line
+res = ""
+for line in map(addnoise, lines):
+ b = binascii.a2b_base64(line)
+ res = res + b
+assert res == testdata
+
+# 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
+assert 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
-def test():
-
- try:
- fname1 = tempfile.mktemp()
- fname2 = tempfile.mktemp()
- f = open(fname1, 'w')
- except:
- raise ImportError, "Cannot test binhex without a temp file"
-
- start = 'Jack is my hero'
- f.write(start)
- f.close()
-
- binhex.binhex(fname1, fname2)
- if verbose:
- print 'binhex'
-
- binhex.hexbin(fname2, fname1)
- if verbose:
- print 'hexbin'
-
- f = open(fname1, 'r')
- finish = f.readline()
-
- if start <> finish:
- print 'Error: binhex <> hexbin'
- elif verbose:
- print 'binhex == hexbin'
-
- try:
- import os
- os.unlink(fname1)
- os.unlink(fname2)
- except:
- pass
-test()
+# 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'