[Python-checkins] CVS: python/dist/src/Lib/test string_tests.py,NONE,1.1 test_string.py,1.9,1.10 test_userstring.py,1.1,1.2
Jeremy Hylton
python-dev@python.org
Mon, 10 Jul 2000 10:08:44 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory slayer.i.sourceforge.net:/tmp/cvs-serv7964/test
Modified Files:
test_string.py test_userstring.py
Added Files:
string_tests.py
Log Message:
factor out test definitions to string_tests module
test_string and test_userstring run same tests for string methods
--- NEW FILE ---
"""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)
Index: test_string.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_string.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** test_string.py 2000/07/05 09:46:26 1.9
--- test_string.py 2000/07/10 17:08:42 1.10
***************
*** 1,3 ****
--- 1,4 ----
from test_support import verbose
+ import string_tests
import string, sys
***************
*** 29,200 ****
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.whitespace
string.lowercase
string.uppercase
--- 30,38 ----
print 'yes'
! string_tests.run_module_tests(test)
! string_tests.run_method_tests(test)
string.whitespace
string.lowercase
string.uppercase
+
Index: test_userstring.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_userstring.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** test_userstring.py 2000/04/03 03:51:50 1.1
--- test_userstring.py 2000/07/10 17:08:42 1.2
***************
*** 2,5 ****
--- 2,6 ----
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.
***************
*** 42,227 ****
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+"'"
--- 43,45 ----
print 'yes'
! string_tests.run_method_tests(test)