diff --git a/Lib/dos-8x3/test_arr.py b/Lib/dos-8x3/test_arr.py
new file mode 100644
index 0000000..74fcd45
--- /dev/null
+++ b/Lib/dos-8x3/test_arr.py
@@ -0,0 +1,40 @@
+#! /usr/bin/env python
+"""Test the arraymodule.
+Roger E. Masse
+"""
+import array
+
+def testtype(type, example):
+
+    
+	a = array.array(type)
+	a.append(example)
+	#print 40*'*'
+	#print 'array after append: ', a
+	a.typecode
+	a.itemsize
+	if a.typecode in ('i', 'b', 'h', 'l'):
+	    a.byteswap()
+
+	if a.typecode == 'c':
+	    f = open('/etc/passwd', 'r')
+	    a.fromfile(f, 10)
+	    #print 'char array with 10 bytes of /etc/passwd appended: ', a
+	    a.fromlist(['a', 'b', 'c'])
+	    #print 'char array with list appended: ', a
+
+	a.insert(0, example)
+	#print 'array of %s after inserting another:' % a.typecode, a
+	f = open('/dev/null', 'w')
+	a.tofile(f)
+	a.tolist()
+	a.tostring()
+	#print 'array of %s converted to a list: ' % a.typecode, a.tolist()
+	#print 'array of %s converted to a string: ' % a.typecode, a.tostring()
+
+testtype('c', 'c')
+
+for type in (['b', 'h', 'i', 'l', 'f', 'd']):
+    testtype(type, 1)
+
+	
diff --git a/Lib/dos-8x3/test_cma.py b/Lib/dos-8x3/test_cma.py
new file mode 100644
index 0000000..8c452d7
--- /dev/null
+++ b/Lib/dos-8x3/test_cma.py
@@ -0,0 +1,22 @@
+#! /usr/bin/env python
+""" Simple test script for cmathmodule.c
+Roger E. Masse
+"""
+import cmath
+
+cmath.acos(1.0)
+cmath.acosh(1.0)
+cmath.asin(1.0)
+cmath.asinh(1.0)
+cmath.atan(0.2)
+cmath.atanh(0.3)
+cmath.cos(1.0)
+cmath.cosh(1.0)
+cmath.exp(1.0)
+cmath.log(1.0)
+cmath.log10(1.0)
+cmath.sin(1.0)
+cmath.sinh(1.0)
+cmath.sqrt(1.0)
+cmath.tan(1.0)
+cmath.tanh(1.0)
diff --git a/Lib/dos-8x3/test_cry.py b/Lib/dos-8x3/test_cry.py
new file mode 100644
index 0000000..08e6b61
--- /dev/null
+++ b/Lib/dos-8x3/test_cry.py
@@ -0,0 +1,6 @@
+#! /usr/bin/env python
+"""Simple test script for cryptmodule.c
+   Roger E. Masse
+"""
+import crypt
+print 'Test encryption: ', crypt.crypt('mypassword', 'ab')
diff --git a/Lib/dos-8x3/test_str.py b/Lib/dos-8x3/test_str.py
index 6028b0d..424cf52 100644
--- a/Lib/dos-8x3/test_str.py
+++ b/Lib/dos-8x3/test_str.py
@@ -1,9 +1,9 @@
 import strop, sys
 
-def test(name, input, output):
+def test(name, input, output, *args):
     f = getattr(strop, name)
     try:
-	value = f(input)
+	value = apply(f, (input,) + args)
     except:
 	 value = sys.exc_type
     if value != output:
@@ -18,3 +18,36 @@
 test('atof', "  1  ", 1.0)
 test('atof', "  1x ", ValueError)
 test('atof', "  x1 ", ValueError)
+
+test('capitalize', ' hello ', ' hello ')
+test('capitalize', 'hello ', 'Hello ')
+test('find', 'abcdefghiabc', 0, 'abc')
+test('find', 'abcdefghiabc', 9, 'abc', 1)
+test('find', 'abcdefghiabc', -1, 'def', 4)
+test('rfind', 'abcdefghiabc', 9, 'abc')
+test('lower', 'HeLLo', 'hello')
+test('upper', 'HeLLo', 'HELLO')
+
+transtable = '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
+
+test('maketrans', 'abc', transtable, 'xyz')
+test('maketrans', 'abc', ValueError, 'xyzq')
+
+test('split', 'this is the split function',
+     ['this', 'is', 'the', 'split', 'function'])
+test('split', 'a|b|c|d', ['a', 'b', 'c', 'd'], '|')
+test('split', 'a|b|c|d', ['a', 'b', 'c|d'], '|', 2)
+
+test('join', ['a', 'b', 'c', 'd'], 'a b c d')
+test('join', ['a', 'b', 'c', 'd'], 'abcd', '')
+
+test('strip', '   hello   ', 'hello')
+test('lstrip', '   hello   ', 'hello   ')
+test('rstrip', '   hello   ', '   hello')
+
+test('swapcase', 'HeLLo cOmpUteRs', 'hEllO CoMPuTErS')
+test('translate', 'xyzabcdef', 'xyzxyz', transtable, 'def')
+
+strop.whitespace
+strop.lowercase
+strop.uppercase
diff --git a/Lib/dos-8x3/test_tim.py b/Lib/dos-8x3/test_tim.py
new file mode 100644
index 0000000..bfc768a
--- /dev/null
+++ b/Lib/dos-8x3/test_tim.py
@@ -0,0 +1,36 @@
+import time
+
+time.altzone
+time.clock()
+t = time.time()
+time.asctime(time.gmtime(t))
+if time.ctime(t) <> time.asctime(time.localtime(t)):
+    print 'time.ctime(t) <> time.asctime(time.localtime(t))'
+
+time.daylight
+if int(time.mktime(time.localtime(t))) <> int(t):
+    print 'time.mktime(time.localtime(t)) <> t'
+
+time.sleep(1.2)
+tt = time.gmtime(t)
+for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'E', 'H', 'I',
+		  'j', 'm', 'M', 'n', 'N', 'o', 'p', 'S', 't',
+		  'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
+    format = '%' + directive
+    time.strftime(format, tt)
+
+time.timezone
+time.tzname
+
+# expected errors
+try:
+    time.asctime(0)
+except TypeError:
+    pass
+
+try:
+    time.mktime((999999, 999999, 999999, 999999,
+		 999999, 999999, 999999, 999999,
+		 999999))
+except OverflowError:
+    pass
diff --git a/Lib/dos_8x3/test_arr.py b/Lib/dos_8x3/test_arr.py
new file mode 100644
index 0000000..74fcd45
--- /dev/null
+++ b/Lib/dos_8x3/test_arr.py
@@ -0,0 +1,40 @@
+#! /usr/bin/env python
+"""Test the arraymodule.
+Roger E. Masse
+"""
+import array
+
+def testtype(type, example):
+
+    
+	a = array.array(type)
+	a.append(example)
+	#print 40*'*'
+	#print 'array after append: ', a
+	a.typecode
+	a.itemsize
+	if a.typecode in ('i', 'b', 'h', 'l'):
+	    a.byteswap()
+
+	if a.typecode == 'c':
+	    f = open('/etc/passwd', 'r')
+	    a.fromfile(f, 10)
+	    #print 'char array with 10 bytes of /etc/passwd appended: ', a
+	    a.fromlist(['a', 'b', 'c'])
+	    #print 'char array with list appended: ', a
+
+	a.insert(0, example)
+	#print 'array of %s after inserting another:' % a.typecode, a
+	f = open('/dev/null', 'w')
+	a.tofile(f)
+	a.tolist()
+	a.tostring()
+	#print 'array of %s converted to a list: ' % a.typecode, a.tolist()
+	#print 'array of %s converted to a string: ' % a.typecode, a.tostring()
+
+testtype('c', 'c')
+
+for type in (['b', 'h', 'i', 'l', 'f', 'd']):
+    testtype(type, 1)
+
+	
diff --git a/Lib/dos_8x3/test_cma.py b/Lib/dos_8x3/test_cma.py
new file mode 100644
index 0000000..8c452d7
--- /dev/null
+++ b/Lib/dos_8x3/test_cma.py
@@ -0,0 +1,22 @@
+#! /usr/bin/env python
+""" Simple test script for cmathmodule.c
+Roger E. Masse
+"""
+import cmath
+
+cmath.acos(1.0)
+cmath.acosh(1.0)
+cmath.asin(1.0)
+cmath.asinh(1.0)
+cmath.atan(0.2)
+cmath.atanh(0.3)
+cmath.cos(1.0)
+cmath.cosh(1.0)
+cmath.exp(1.0)
+cmath.log(1.0)
+cmath.log10(1.0)
+cmath.sin(1.0)
+cmath.sinh(1.0)
+cmath.sqrt(1.0)
+cmath.tan(1.0)
+cmath.tanh(1.0)
diff --git a/Lib/dos_8x3/test_cry.py b/Lib/dos_8x3/test_cry.py
new file mode 100644
index 0000000..08e6b61
--- /dev/null
+++ b/Lib/dos_8x3/test_cry.py
@@ -0,0 +1,6 @@
+#! /usr/bin/env python
+"""Simple test script for cryptmodule.c
+   Roger E. Masse
+"""
+import crypt
+print 'Test encryption: ', crypt.crypt('mypassword', 'ab')
diff --git a/Lib/dos_8x3/test_str.py b/Lib/dos_8x3/test_str.py
index 6028b0d..424cf52 100644
--- a/Lib/dos_8x3/test_str.py
+++ b/Lib/dos_8x3/test_str.py
@@ -1,9 +1,9 @@
 import strop, sys
 
-def test(name, input, output):
+def test(name, input, output, *args):
     f = getattr(strop, name)
     try:
-	value = f(input)
+	value = apply(f, (input,) + args)
     except:
 	 value = sys.exc_type
     if value != output:
@@ -18,3 +18,36 @@
 test('atof', "  1  ", 1.0)
 test('atof', "  1x ", ValueError)
 test('atof', "  x1 ", ValueError)
+
+test('capitalize', ' hello ', ' hello ')
+test('capitalize', 'hello ', 'Hello ')
+test('find', 'abcdefghiabc', 0, 'abc')
+test('find', 'abcdefghiabc', 9, 'abc', 1)
+test('find', 'abcdefghiabc', -1, 'def', 4)
+test('rfind', 'abcdefghiabc', 9, 'abc')
+test('lower', 'HeLLo', 'hello')
+test('upper', 'HeLLo', 'HELLO')
+
+transtable = '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
+
+test('maketrans', 'abc', transtable, 'xyz')
+test('maketrans', 'abc', ValueError, 'xyzq')
+
+test('split', 'this is the split function',
+     ['this', 'is', 'the', 'split', 'function'])
+test('split', 'a|b|c|d', ['a', 'b', 'c', 'd'], '|')
+test('split', 'a|b|c|d', ['a', 'b', 'c|d'], '|', 2)
+
+test('join', ['a', 'b', 'c', 'd'], 'a b c d')
+test('join', ['a', 'b', 'c', 'd'], 'abcd', '')
+
+test('strip', '   hello   ', 'hello')
+test('lstrip', '   hello   ', 'hello   ')
+test('rstrip', '   hello   ', '   hello')
+
+test('swapcase', 'HeLLo cOmpUteRs', 'hEllO CoMPuTErS')
+test('translate', 'xyzabcdef', 'xyzxyz', transtable, 'def')
+
+strop.whitespace
+strop.lowercase
+strop.uppercase
diff --git a/Lib/dos_8x3/test_tim.py b/Lib/dos_8x3/test_tim.py
new file mode 100644
index 0000000..bfc768a
--- /dev/null
+++ b/Lib/dos_8x3/test_tim.py
@@ -0,0 +1,36 @@
+import time
+
+time.altzone
+time.clock()
+t = time.time()
+time.asctime(time.gmtime(t))
+if time.ctime(t) <> time.asctime(time.localtime(t)):
+    print 'time.ctime(t) <> time.asctime(time.localtime(t))'
+
+time.daylight
+if int(time.mktime(time.localtime(t))) <> int(t):
+    print 'time.mktime(time.localtime(t)) <> t'
+
+time.sleep(1.2)
+tt = time.gmtime(t)
+for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'E', 'H', 'I',
+		  'j', 'm', 'M', 'n', 'N', 'o', 'p', 'S', 't',
+		  'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
+    format = '%' + directive
+    time.strftime(format, tt)
+
+time.timezone
+time.tzname
+
+# expected errors
+try:
+    time.asctime(0)
+except TypeError:
+    pass
+
+try:
+    time.mktime((999999, 999999, 999999, 999999,
+		 999999, 999999, 999999, 999999,
+		 999999))
+except OverflowError:
+    pass
