diff --git a/Lib/test/output/test_userstring b/Lib/test/output/test_userstring
index 7f5f0c2..0290d6c 100644
--- a/Lib/test/output/test_userstring
+++ b/Lib/test/output/test_userstring
@@ -1,4 +1 @@
 test_userstring
-no regression test case for method 'encode'
-no regression test case for method 'isalnum'
-no regression test case for method 'isalpha'
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
new file mode 100644
index 0000000..3c3cbeb
--- /dev/null
+++ b/Lib/test/string_tests.py
@@ -0,0 +1,196 @@
+"""Common tests shared by test_string and test_userstring"""
+
+import string
+
+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'
+
+class Sequence:
+    def __init__(self): self.seq = 'wxyz'
+    def __len__(self): return len(self.seq)
+    def __getitem__(self, i): return self.seq[i]
+
+class BadSeq1(Sequence):
+    def __init__(self): self.seq = [7, 'hello', 123L]
+
+class BadSeq2(Sequence):
+    def __init__(self): self.seq = ['a', 'b', 'c']
+    def __len__(self): return 8
+
+def run_module_tests(test):
+    """Run all tests that exercise a function in the string module"""
+
+    test('atoi', " 1 ", 1)
+    test('atoi', " 1x", ValueError)
+    test('atoi', " x1 ", ValueError)
+    test('atol', "  1  ", 1L)
+    test('atol', "  1x ", ValueError)
+    test('atol', "  x1 ", ValueError)
+    test('atof', "  1  ", 1.0)
+    test('atof', "  1x ", ValueError)
+    test('atof', "  x1 ", ValueError)
+
+    test('maketrans', 'abc', transtable, 'xyz')
+    test('maketrans', 'abc', ValueError, 'xyzq')
+
+    # join now works with any sequence type
+    test('join', ['a', 'b', 'c', 'd'], 'a b c d')
+    test('join', ('a', 'b', 'c', 'd'), 'abcd', '')
+    test('join', Sequence(), 'w x y z')
+    test('join', 7, TypeError)
+
+    test('join', BadSeq1(), TypeError)
+    test('join', BadSeq2(), IndexError)
+#   XXX should this test really raise an exception; lots of other core
+#   code will just ignore the lying __len__ method. 
+#   test('join', BadSeq2(), 'a b c')
+
+    # try a few long ones
+    print string.join(['x' * 100] * 100, ':')
+    print string.join(('x' * 100,) * 100, ':')
+
+
+def run_method_tests(test):
+    """Run all tests that exercise a method of a string object"""
+
+    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('lower', 'hello', 'hello')
+    test('upper', 'HeLLo', 'HELLO')
+    test('upper', 'HELLO', 'HELLO')
+
+    test('title', ' hello ', ' Hello ')
+    test('title', 'hello ', 'Hello ')
+    test('title', "fOrMaT thIs aS titLe String", 'Format This As Title String')
+    test('title', "fOrMaT,thIs-aS*titLe;String", 'Format,This-As*Title;String')
+    test('title', "getInt", 'Getint')
+
+    test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi')
+    test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi', 8)
+    test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab  def\ng   hi', 4)
+    test('expandtabs', 'abc\r\nab\tdef\ng\thi', 'abc\r\nab  def\ng   hi', 4)
+
+    test('islower', 'a', 1)
+    test('islower', 'A', 0)
+    test('islower', '\n', 0)
+    test('islower', 'abc', 1)
+    test('islower', 'aBc', 0)
+    test('islower', 'abc\n', 1)
+
+    test('isupper', 'a', 0)
+    test('isupper', 'A', 1)
+    test('isupper', '\n', 0)
+    test('isupper', 'ABC', 1)
+    test('isupper', 'AbC', 0)
+    test('isupper', 'ABC\n', 1)
+
+    test('istitle', 'a', 0)
+    test('istitle', 'A', 1)
+    test('istitle', '\n', 0)
+    test('istitle', 'A Titlecased Line', 1)
+    test('istitle', 'A\nTitlecased Line', 1)
+    test('istitle', 'A Titlecased, Line', 1)
+    test('istitle', 'Not a capitalized String', 0)
+    test('istitle', 'Not\ta Titlecase String', 0)
+    test('istitle', 'Not--a Titlecase String', 0)
+
+    test('isalpha', 'a', 1)
+    test('isalpha', 'A', 1)
+    test('isalpha', '\n', 0)
+    test('isalpha', 'abc', 1)
+    test('isalpha', 'aBc123', 0)
+    test('isalpha', 'abc\n', 0)
+
+    test('isalnum', 'a', 1)
+    test('isalnum', 'A', 1)
+    test('isalnum', '\n', 0)
+    test('isalnum', '123abc456', 1)
+    test('isalnum', 'a1b3c', 1)
+    test('isalnum', 'aBc000 ', 0)
+    test('isalnum', 'abc\n', 0)
+
+    # join now works with any sequence type
+    test('join', ' ', 'a b c d', ['a', 'b', 'c', 'd'])
+    test('join', '', 'abcd', ('a', 'b', 'c', 'd'))
+    test('join', ' ', 'w x y z', Sequence())
+
+    test('join', ' ', TypeError, BadSeq1())
+    test('join', ' ', IndexError, BadSeq2())
+#   XXX should this test really raise an exception; lots of other core
+#   code will just ignore the lying __len__ method. 
+#   test('join', BadSeq2(), 'a b c')
+
+    test('splitlines', "abc\ndef\n\rghi", ['abc', 'def', '', 'ghi'])
+    test('splitlines', "abc\ndef\n\r\nghi", ['abc', 'def', '', 'ghi'])
+    test('splitlines', "abc\ndef\r\nghi", ['abc', 'def', 'ghi'])
+    test('splitlines', "abc\ndef\r\nghi\n", ['abc', 'def', 'ghi'])
+    test('splitlines', "abc\ndef\r\nghi\n\r", ['abc', 'def', 'ghi', ''])
+    test('splitlines', "\nabc\ndef\r\nghi\n\r", ['', 'abc', 'def', 'ghi', ''])
+    test('splitlines', "\nabc\ndef\r\nghi\n\r", ['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], 1)
+
+    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('split', 'a b c d', ['a', 'b c d'], None, 1)
+    test('split', 'a b c d', ['a', 'b', 'c d'], None, 2)
+    test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 3)
+    test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 4)
+    test('split', 'a b c d', ['a b c d'], None, 0)
+    test('split', 'a  b  c  d', ['a', 'b', 'c  d'], None, 2)
+    test('split', 'a b c d ', ['a', 'b', 'c', 'd'])
+
+    test('strip', '   hello   ', 'hello')
+    test('lstrip', '   hello   ', 'hello   ')
+    test('rstrip', '   hello   ', '   hello')
+    test('strip', 'hello', 'hello')
+
+    test('swapcase', 'HeLLo cOmpUteRs', 'hEllO CoMPuTErS')
+    test('translate', 'xyzabcdef', 'xyzxyz', transtable, 'def')
+
+    table = string.maketrans('a', 'A')
+    test('translate', 'abc', 'Abc', table)
+    test('translate', 'xyz', 'xyz', table)
+
+    test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1)
+    test('replace', 'one!two!three!', 'onetwothree', '!', '')
+    test('replace', 'one!two!three!', 'one@two@three!', '!', '@', 2)
+    test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 3)
+    test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 4)
+    test('replace', 'one!two!three!', 'one!two!three!', '!', '@', 0)
+    test('replace', 'one!two!three!', 'one@two@three@', '!', '@')
+    test('replace', 'one!two!three!', 'one!two!three!', 'x', '@')
+    test('replace', 'one!two!three!', 'one!two!three!', 'x', '@', 2)
+
+    test('startswith', 'hello', 1, 'he')
+    test('startswith', 'hello', 1, 'hello')
+    test('startswith', 'hello', 0, 'hello world')
+    test('startswith', 'hello', 1, '')
+    test('startswith', 'hello', 0, 'ello')
+    test('startswith', 'hello', 1, 'ello', 1)
+    test('startswith', 'hello', 1, 'o', 4)
+    test('startswith', 'hello', 0, 'o', 5)
+    test('startswith', 'hello', 1, '', 5)
+    test('startswith', 'hello', 0, 'lo', 6)
+    test('startswith', 'helloworld', 1, 'lowo', 3)
+    test('startswith', 'helloworld', 1, 'lowo', 3, 7)
+    test('startswith', 'helloworld', 0, 'lowo', 3, 6)
+
+    test('endswith', 'hello', 1, 'lo')
+    test('endswith', 'hello', 0, 'he')
+    test('endswith', 'hello', 1, '')
+    test('endswith', 'hello', 0, 'hello world')
+    test('endswith', 'helloworld', 0, 'worl')
+    test('endswith', 'helloworld', 1, 'worl', 3, 9)
+    test('endswith', 'helloworld', 1, 'world', 3, 12)
+    test('endswith', 'helloworld', 1, 'lowo', 1, 7)
+    test('endswith', 'helloworld', 1, 'lowo', 2, 7)
+    test('endswith', 'helloworld', 1, 'lowo', 3, 7)
+    test('endswith', 'helloworld', 0, 'lowo', 4, 7)
+    test('endswith', 'helloworld', 0, 'lowo', 3, 8)
+    test('endswith', 'ab', 0, 'ab', 0, 1)
+    test('endswith', 'ab', 0, 'ab', 0, 0)
diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
index c7c3e72..84842a0 100644
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -1,4 +1,5 @@
 from test_support import verbose
+import string_tests
 import string, sys
 
 # XXX: kludge... short circuit if strings don't have methods
@@ -28,173 +29,10 @@
         if verbose:
             print 'yes'
 
-test('atoi', " 1 ", 1)
-test('atoi', " 1x", ValueError)
-test('atoi', " x1 ", ValueError)
-test('atol', "  1  ", 1L)
-test('atol', "  1x ", ValueError)
-test('atol', "  x1 ", ValueError)
-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('lower', 'hello', 'hello')
-test('upper', 'HeLLo', 'HELLO')
-test('upper', 'HELLO', 'HELLO')
-
-test('title', ' hello ', ' Hello ')
-test('title', 'hello ', 'Hello ')
-test('title', "fOrMaT thIs aS titLe String", 'Format This As Title String')
-test('title', "fOrMaT,thIs-aS*titLe;String", 'Format,This-As*Title;String')
-test('title', "getInt", 'Getint')
-
-test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi')
-test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi', 8)
-test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab  def\ng   hi', 4)
-test('expandtabs', 'abc\r\nab\tdef\ng\thi', 'abc\r\nab  def\ng   hi', 4)
-
-test('islower', 'a', 1)
-test('islower', 'A', 0)
-test('islower', '\n', 0)
-test('islower', 'abc', 1)
-test('islower', 'aBc', 0)
-test('islower', 'abc\n', 1)
-
-test('isupper', 'a', 0)
-test('isupper', 'A', 1)
-test('isupper', '\n', 0)
-test('isupper', 'ABC', 1)
-test('isupper', 'AbC', 0)
-test('isupper', 'ABC\n', 1)
-
-test('istitle', 'a', 0)
-test('istitle', 'A', 1)
-test('istitle', '\n', 0)
-test('istitle', 'A Titlecased Line', 1)
-test('istitle', 'A\nTitlecased Line', 1)
-test('istitle', 'A Titlecased, Line', 1)
-test('istitle', 'Not a capitalized String', 0)
-test('istitle', 'Not\ta Titlecase String', 0)
-test('istitle', 'Not--a Titlecase String', 0)
-
-test('isalpha', 'a', 1)
-test('isalpha', 'A', 1)
-test('isalpha', '\n', 0)
-test('isalpha', 'abc', 1)
-test('isalpha', 'aBc123', 0)
-test('isalpha', 'abc\n', 0)
-
-test('isalnum', 'a', 1)
-test('isalnum', 'A', 1)
-test('isalnum', '\n', 0)
-test('isalnum', '123abc456', 1)
-test('isalnum', 'a1b3c', 1)
-test('isalnum', 'aBc000 ', 0)
-test('isalnum', 'abc\n', 0)
-
-test('splitlines', "abc\ndef\n\rghi", ['abc', 'def', '', 'ghi'])
-test('splitlines', "abc\ndef\n\r\nghi", ['abc', 'def', '', 'ghi'])
-test('splitlines', "abc\ndef\r\nghi", ['abc', 'def', 'ghi'])
-test('splitlines', "abc\ndef\r\nghi\n", ['abc', 'def', 'ghi'])
-test('splitlines', "abc\ndef\r\nghi\n\r", ['abc', 'def', 'ghi', ''])
-test('splitlines', "\nabc\ndef\r\nghi\n\r", ['', 'abc', 'def', 'ghi', ''])
-test('splitlines', "\nabc\ndef\r\nghi\n\r", ['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], 1)
-
-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('split', 'a b c d', ['a', 'b c d'], None, 1)
-test('split', 'a b c d', ['a', 'b', 'c d'], None, 2)
-test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 3)
-test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 4)
-test('split', 'a b c d', ['a b c d'], None, 0)
-test('split', 'a  b  c  d', ['a', 'b', 'c  d'], None, 2)
-test('split', 'a b c d ', ['a', 'b', 'c', 'd'])
-
-# join now works with any sequence type
-class Sequence:
-    def __init__(self): self.seq = 'wxyz'
-    def __len__(self): return len(self.seq)
-    def __getitem__(self, i): return self.seq[i]
-
-test('join', ['a', 'b', 'c', 'd'], 'a b c d')
-test('join', ('a', 'b', 'c', 'd'), 'abcd', '')
-test('join', Sequence(), 'w x y z')
-test('join', 7, TypeError)
-
-class BadSeq(Sequence):
-    def __init__(self): self.seq = [7, 'hello', 123L]
-
-test('join', BadSeq(), TypeError)
-
-# try a few long ones
-print string.join(['x' * 100] * 100, ':')
-print string.join(('x' * 100,) * 100, ':')
-
-test('strip', '   hello   ', 'hello')
-test('lstrip', '   hello   ', 'hello   ')
-test('rstrip', '   hello   ', '   hello')
-test('strip', 'hello', 'hello')
-
-test('swapcase', 'HeLLo cOmpUteRs', 'hEllO CoMPuTErS')
-test('translate', 'xyzabcdef', 'xyzxyz', transtable, 'def')
-
-table = string.maketrans('a', 'A')
-test('translate', 'abc', 'Abc', table)
-test('translate', 'xyz', 'xyz', table)
-
-test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1)
-test('replace', 'one!two!three!', 'onetwothree', '!', '')
-test('replace', 'one!two!three!', 'one@two@three!', '!', '@', 2)
-test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 3)
-test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 4)
-test('replace', 'one!two!three!', 'one!two!three!', '!', '@', 0)
-test('replace', 'one!two!three!', 'one@two@three@', '!', '@')
-test('replace', 'one!two!three!', 'one!two!three!', 'x', '@')
-test('replace', 'one!two!three!', 'one!two!three!', 'x', '@', 2)
-
-test('startswith', 'hello', 1, 'he')
-test('startswith', 'hello', 1, 'hello')
-test('startswith', 'hello', 0, 'hello world')
-test('startswith', 'hello', 1, '')
-test('startswith', 'hello', 0, 'ello')
-test('startswith', 'hello', 1, 'ello', 1)
-test('startswith', 'hello', 1, 'o', 4)
-test('startswith', 'hello', 0, 'o', 5)
-test('startswith', 'hello', 1, '', 5)
-test('startswith', 'hello', 0, 'lo', 6)
-test('startswith', 'helloworld', 1, 'lowo', 3)
-test('startswith', 'helloworld', 1, 'lowo', 3, 7)
-test('startswith', 'helloworld', 0, 'lowo', 3, 6)
-
-test('endswith', 'hello', 1, 'lo')
-test('endswith', 'hello', 0, 'he')
-test('endswith', 'hello', 1, '')
-test('endswith', 'hello', 0, 'hello world')
-test('endswith', 'helloworld', 0, 'worl')
-test('endswith', 'helloworld', 1, 'worl', 3, 9)
-test('endswith', 'helloworld', 1, 'world', 3, 12)
-test('endswith', 'helloworld', 1, 'lowo', 1, 7)
-test('endswith', 'helloworld', 1, 'lowo', 2, 7)
-test('endswith', 'helloworld', 1, 'lowo', 3, 7)
-test('endswith', 'helloworld', 0, 'lowo', 4, 7)
-test('endswith', 'helloworld', 0, 'lowo', 3, 8)
-test('endswith', 'ab', 0, 'ab', 0, 1)
-test('endswith', 'ab', 0, 'ab', 0, 0)
+string_tests.run_module_tests(test)
+string_tests.run_method_tests(test)
 
 string.whitespace
 string.lowercase
 string.uppercase
+
diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py
index c12f1e2..a47bfdd 100755
--- a/Lib/test/test_userstring.py
+++ b/Lib/test/test_userstring.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 import sys, string
 from test_support import verbose
+import string_tests
 # UserString is a wrapper around the native builtin string type.
 # UserString instances should behave similar to builtin string objects.
 # The test cases were in part derived from 'test_string.py'.
@@ -41,187 +42,4 @@
         if verbose:
             print 'yes'
 
-test('capitalize', ' hello ')
-test('capitalize', 'hello ')
-
-test('center', 'foo', 0)
-test('center', 'foo', 3)
-test('center', 'foo', 16)
-
-test('ljust', 'foo', 0)
-test('ljust', 'foo', 3)
-test('ljust', 'foo', 16)
-
-test('rjust', 'foo', 0)
-test('rjust', 'foo', 3)
-test('rjust', 'foo', 16)
-
-test('count', 'abcabcabc', 'abc')
-test('count', 'abcabcabc', 'abc', 1)
-test('count', 'abcabcabc', 'abc', -1)
-test('count', 'abcabcabc', 'abc', 7)
-test('count', 'abcabcabc', 'abc', 0, 3)
-test('count', 'abcabcabc', 'abc', 0, 333)
-
-test('find', 'abcdefghiabc', 'abc')
-test('find', 'abcdefghiabc', 'abc', 1)
-test('find', 'abcdefghiabc', 'def', 4)
-test('rfind', 'abcdefghiabc', 'abc')
-
-test('index', 'abcabcabc', 'abc')
-test('index', 'abcabcabc', 'abc', 1)
-test('index', 'abcabcabc', 'abc', -1)
-test('index', 'abcabcabc', 'abc', 7)
-test('index', 'abcabcabc', 'abc', 0, 3)
-test('index', 'abcabcabc', 'abc', 0, 333)
-
-test('rindex', 'abcabcabc', 'abc')
-test('rindex', 'abcabcabc', 'abc', 1)
-test('rindex', 'abcabcabc', 'abc', -1)
-test('rindex', 'abcabcabc', 'abc', 7)
-test('rindex', 'abcabcabc', 'abc', 0, 3)
-test('rindex', 'abcabcabc', 'abc', 0, 333)
-
-
-test('lower', 'HeLLo')
-test('lower', 'hello')
-test('upper', 'HeLLo')
-test('upper', 'HELLO')
-
-test('title', ' hello ')
-test('title', 'hello ')
-test('title', "fOrMaT thIs aS titLe String")
-test('title', "fOrMaT,thIs-aS*titLe;String")
-test('title', "getInt")
-
-test('expandtabs', 'abc\rab\tdef\ng\thi')
-test('expandtabs', 'abc\rab\tdef\ng\thi', 8)
-test('expandtabs', 'abc\rab\tdef\ng\thi', 4)
-test('expandtabs', 'abc\r\nab\tdef\ng\thi', 4)
-
-test('islower', 'a')
-test('islower', 'A')
-test('islower', '\n')
-test('islower', 'abc')
-test('islower', 'aBc')
-test('islower', 'abc\n')
-
-test('isupper', 'a')
-test('isupper', 'A')
-test('isupper', '\n')
-test('isupper', 'ABC')
-test('isupper', 'AbC')
-test('isupper', 'ABC\n')
-
-test('isdigit', '  0123456789')
-test('isdigit', '56789')
-test('isdigit', '567.89')
-test('isdigit', '0123456789abc')
-
-test('isspace', '')
-test('isspace', ' ')
-test('isspace', ' \t')
-test('isspace', ' \t\f\n')
-
-test('istitle', 'a')
-test('istitle', 'A')
-test('istitle', '\n')
-test('istitle', 'A Titlecased Line')
-test('istitle', 'A\nTitlecased Line')
-test('istitle', 'A Titlecased, Line')
-test('istitle', 'Not a capitalized String')
-test('istitle', 'Not\ta Titlecase String')
-test('istitle', 'Not--a Titlecase String')
-
-test('splitlines', "abc\ndef\n\rghi")
-test('splitlines', "abc\ndef\n\r\nghi")
-test('splitlines', "abc\ndef\r\nghi")
-test('splitlines', "abc\ndef\r\nghi\n")
-test('splitlines', "abc\ndef\r\nghi\n\r")
-test('splitlines', "\nabc\ndef\r\nghi\n\r")
-test('splitlines', "\nabc\ndef\r\nghi\n\r")
-test('splitlines', "\nabc\ndef\r\nghi\n\r")
-
-test('split', 'this is the split function')
-test('split', 'a|b|c|d', '|')
-test('split', 'a|b|c|d', '|', 2)
-test('split', 'a b c d', None, 1)
-test('split', 'a b c d', None, 2)
-test('split', 'a b c d', None, 3)
-test('split', 'a b c d', None, 4)
-test('split', 'a b c d', None, 0)
-test('split', 'a  b  c  d', None, 2)
-test('split', 'a b c d ')
-
-# join now works with any sequence type
-class Sequence:
-    def __init__(self): self.seq = 'wxyz'
-    def __len__(self): return len(self.seq)
-    def __getitem__(self, i): return self.seq[i]
-
-test('join', '', ('a', 'b', 'c', 'd'))
-test('join', '', Sequence())
-test('join', '', 7)
-
-class BadSeq(Sequence):
-    def __init__(self): self.seq = [7, 'hello', 123L]
-
-test('join', '', BadSeq())
-
-test('strip', '   hello   ')
-test('lstrip', '   hello   ')
-test('rstrip', '   hello   ')
-test('strip', 'hello')
-
-test('swapcase', 'HeLLo cOmpUteRs')
-transtable = string.maketrans("abc", "xyz")
-test('translate', 'xyzabcdef', transtable, 'def')
-
-transtable = string.maketrans('a', 'A')
-test('translate', 'abc', transtable)
-test('translate', 'xyz', transtable)
-
-test('replace', 'one!two!three!', '!', '@', 1)
-test('replace', 'one!two!three!', '!', '')
-test('replace', 'one!two!three!', '!', '@', 2)
-test('replace', 'one!two!three!', '!', '@', 3)
-test('replace', 'one!two!three!', '!', '@', 4)
-test('replace', 'one!two!three!', '!', '@', 0)
-test('replace', 'one!two!three!', '!', '@')
-test('replace', 'one!two!three!', 'x', '@')
-test('replace', 'one!two!three!', 'x', '@', 2)
-
-test('startswith', 'hello', 'he')
-test('startswith', 'hello', 'hello')
-test('startswith', 'hello', 'hello world')
-test('startswith', 'hello', '')
-test('startswith', 'hello', 'ello')
-test('startswith', 'hello', 'ello', 1)
-test('startswith', 'hello', 'o', 4)
-test('startswith', 'hello', 'o', 5)
-test('startswith', 'hello', '', 5)
-test('startswith', 'hello', 'lo', 6)
-test('startswith', 'helloworld', 'lowo', 3)
-test('startswith', 'helloworld', 'lowo', 3, 7)
-test('startswith', 'helloworld', 'lowo', 3, 6)
-
-test('endswith', 'hello', 'lo')
-test('endswith', 'hello', 'he')
-test('endswith', 'hello', '')
-test('endswith', 'hello', 'hello world')
-test('endswith', 'helloworld', 'worl')
-test('endswith', 'helloworld', 'worl', 3, 9)
-test('endswith', 'helloworld', 'world', 3, 12)
-test('endswith', 'helloworld', 'lowo', 1, 7)
-test('endswith', 'helloworld', 'lowo', 2, 7)
-test('endswith', 'helloworld', 'lowo', 3, 7)
-test('endswith', 'helloworld', 'lowo', 4, 7)
-test('endswith', 'helloworld', 'lowo', 3, 8)
-test('endswith', 'ab', 'ab', 0, 1)
-test('endswith', 'ab', 'ab', 0, 0)
-
-# TODO: test cases for: int, long, float, complex, +, * and cmp
-s = ""
-for builtin_method in dir(s):
-    if not tested_methods.has_key(builtin_method):
-        print "no regression test case for method '"+builtin_method+"'"
+string_tests.run_method_tests(test)
