| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 1 | """Common tests shared by test_string and test_userstring""" | 
 | 2 |  | 
 | 3 | import string | 
| Barry Warsaw | 817918c | 2002-08-06 16:58:21 +0000 | [diff] [blame] | 4 | from test.test_support import verify, vereq, verbose, TestFailed, have_unicode | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 5 |  | 
 | 6 | 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' | 
 | 7 |  | 
| Jeremy Hylton | 20f41b6 | 2000-07-11 03:31:55 +0000 | [diff] [blame] | 8 | from UserList import UserList | 
 | 9 |  | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 10 | class Sequence: | 
 | 11 |     def __init__(self): self.seq = 'wxyz' | 
 | 12 |     def __len__(self): return len(self.seq) | 
 | 13 |     def __getitem__(self, i): return self.seq[i] | 
 | 14 |  | 
 | 15 | class BadSeq1(Sequence): | 
 | 16 |     def __init__(self): self.seq = [7, 'hello', 123L] | 
 | 17 |  | 
 | 18 | class BadSeq2(Sequence): | 
 | 19 |     def __init__(self): self.seq = ['a', 'b', 'c'] | 
 | 20 |     def __len__(self): return 8 | 
 | 21 |  | 
 | 22 | def run_module_tests(test): | 
 | 23 |     """Run all tests that exercise a function in the string module""" | 
 | 24 |  | 
 | 25 |     test('atoi', " 1 ", 1) | 
 | 26 |     test('atoi', " 1x", ValueError) | 
 | 27 |     test('atoi', " x1 ", ValueError) | 
 | 28 |     test('atol', "  1  ", 1L) | 
 | 29 |     test('atol', "  1x ", ValueError) | 
 | 30 |     test('atol', "  x1 ", ValueError) | 
 | 31 |     test('atof', "  1  ", 1.0) | 
 | 32 |     test('atof', "  1x ", ValueError) | 
 | 33 |     test('atof', "  x1 ", ValueError) | 
 | 34 |  | 
 | 35 |     test('maketrans', 'abc', transtable, 'xyz') | 
 | 36 |     test('maketrans', 'abc', ValueError, 'xyzq') | 
 | 37 |  | 
 | 38 |     # join now works with any sequence type | 
 | 39 |     test('join', ['a', 'b', 'c', 'd'], 'a b c d') | 
 | 40 |     test('join', ('a', 'b', 'c', 'd'), 'abcd', '') | 
 | 41 |     test('join', Sequence(), 'w x y z') | 
 | 42 |     test('join', 7, TypeError) | 
 | 43 |  | 
 | 44 |     test('join', BadSeq1(), TypeError) | 
| Jeremy Hylton | 20f41b6 | 2000-07-11 03:31:55 +0000 | [diff] [blame] | 45 |     test('join', BadSeq2(), 'a b c') | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 46 |  | 
 | 47 |     # try a few long ones | 
| Eric S. Raymond | fc170b1 | 2001-02-09 11:51:27 +0000 | [diff] [blame] | 48 |     print ":".join(['x' * 100] * 100) | 
 | 49 |     print ":".join(('x' * 100,) * 100) | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 50 |  | 
 | 51 |  | 
 | 52 | def run_method_tests(test): | 
 | 53 |     """Run all tests that exercise a method of a string object""" | 
 | 54 |  | 
 | 55 |     test('capitalize', ' hello ', ' hello ') | 
 | 56 |     test('capitalize', 'hello ', 'Hello ') | 
| Marc-André Lemburg | fde66e1 | 2001-01-29 11:14:16 +0000 | [diff] [blame] | 57 |     test('capitalize', 'aaaa', 'Aaaa') | 
 | 58 |     test('capitalize', 'AaAa', 'Aaaa') | 
| Marc-André Lemburg | 3a645e4 | 2001-01-16 11:54:12 +0000 | [diff] [blame] | 59 |  | 
 | 60 |     test('count', 'aaa', 3, 'a') | 
 | 61 |     test('count', 'aaa', 0, 'b') | 
| Tim Peters | d2bf3b7 | 2001-01-18 02:22:22 +0000 | [diff] [blame] | 62 |  | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 63 |     test('find', 'abcdefghiabc', 0, 'abc') | 
 | 64 |     test('find', 'abcdefghiabc', 9, 'abc', 1) | 
 | 65 |     test('find', 'abcdefghiabc', -1, 'def', 4) | 
 | 66 |     test('rfind', 'abcdefghiabc', 9, 'abc') | 
 | 67 |     test('lower', 'HeLLo', 'hello') | 
 | 68 |     test('lower', 'hello', 'hello') | 
 | 69 |     test('upper', 'HeLLo', 'HELLO') | 
 | 70 |     test('upper', 'HELLO', 'HELLO') | 
 | 71 |  | 
 | 72 |     test('title', ' hello ', ' Hello ') | 
 | 73 |     test('title', 'hello ', 'Hello ') | 
 | 74 |     test('title', "fOrMaT thIs aS titLe String", 'Format This As Title String') | 
 | 75 |     test('title', "fOrMaT,thIs-aS*titLe;String", 'Format,This-As*Title;String') | 
 | 76 |     test('title', "getInt", 'Getint') | 
 | 77 |  | 
 | 78 |     test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi') | 
 | 79 |     test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab      def\ng       hi', 8) | 
 | 80 |     test('expandtabs', 'abc\rab\tdef\ng\thi', 'abc\rab  def\ng   hi', 4) | 
 | 81 |     test('expandtabs', 'abc\r\nab\tdef\ng\thi', 'abc\r\nab  def\ng   hi', 4) | 
 | 82 |  | 
 | 83 |     test('islower', 'a', 1) | 
 | 84 |     test('islower', 'A', 0) | 
 | 85 |     test('islower', '\n', 0) | 
 | 86 |     test('islower', 'abc', 1) | 
 | 87 |     test('islower', 'aBc', 0) | 
 | 88 |     test('islower', 'abc\n', 1) | 
 | 89 |  | 
 | 90 |     test('isupper', 'a', 0) | 
 | 91 |     test('isupper', 'A', 1) | 
 | 92 |     test('isupper', '\n', 0) | 
 | 93 |     test('isupper', 'ABC', 1) | 
 | 94 |     test('isupper', 'AbC', 0) | 
 | 95 |     test('isupper', 'ABC\n', 1) | 
 | 96 |  | 
 | 97 |     test('istitle', 'a', 0) | 
 | 98 |     test('istitle', 'A', 1) | 
 | 99 |     test('istitle', '\n', 0) | 
 | 100 |     test('istitle', 'A Titlecased Line', 1) | 
 | 101 |     test('istitle', 'A\nTitlecased Line', 1) | 
 | 102 |     test('istitle', 'A Titlecased, Line', 1) | 
 | 103 |     test('istitle', 'Not a capitalized String', 0) | 
 | 104 |     test('istitle', 'Not\ta Titlecase String', 0) | 
 | 105 |     test('istitle', 'Not--a Titlecase String', 0) | 
 | 106 |  | 
 | 107 |     test('isalpha', 'a', 1) | 
 | 108 |     test('isalpha', 'A', 1) | 
 | 109 |     test('isalpha', '\n', 0) | 
 | 110 |     test('isalpha', 'abc', 1) | 
 | 111 |     test('isalpha', 'aBc123', 0) | 
 | 112 |     test('isalpha', 'abc\n', 0) | 
 | 113 |  | 
 | 114 |     test('isalnum', 'a', 1) | 
 | 115 |     test('isalnum', 'A', 1) | 
 | 116 |     test('isalnum', '\n', 0) | 
 | 117 |     test('isalnum', '123abc456', 1) | 
 | 118 |     test('isalnum', 'a1b3c', 1) | 
 | 119 |     test('isalnum', 'aBc000 ', 0) | 
 | 120 |     test('isalnum', 'abc\n', 0) | 
 | 121 |  | 
 | 122 |     # join now works with any sequence type | 
 | 123 |     test('join', ' ', 'a b c d', ['a', 'b', 'c', 'd']) | 
 | 124 |     test('join', '', 'abcd', ('a', 'b', 'c', 'd')) | 
 | 125 |     test('join', ' ', 'w x y z', Sequence()) | 
| Jeremy Hylton | 20f41b6 | 2000-07-11 03:31:55 +0000 | [diff] [blame] | 126 |     test('join', 'a', 'abc', ('abc',)) | 
 | 127 |     test('join', 'a', 'z', UserList(['z'])) | 
| Martin v. Löwis | 339d0f7 | 2001-08-17 18:39:25 +0000 | [diff] [blame] | 128 |     if have_unicode: | 
 | 129 |         test('join', unicode('.'), unicode('a.b.c'), ['a', 'b', 'c']) | 
 | 130 |         test('join', '.', unicode('a.b.c'), [unicode('a'), 'b', 'c']) | 
 | 131 |         test('join', '.', unicode('a.b.c'), ['a', unicode('b'), 'c']) | 
 | 132 |         test('join', '.', unicode('a.b.c'), ['a', 'b', unicode('c')]) | 
 | 133 |         test('join', '.', TypeError, ['a', unicode('b'), 3]) | 
| Jeremy Hylton | 88887aa | 2000-07-11 20:55:38 +0000 | [diff] [blame] | 134 |     for i in [5, 25, 125]: | 
 | 135 |         test('join', '-', ((('a' * i) + '-') * i)[:-1], | 
 | 136 |              ['a' * i] * i) | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 137 |  | 
 | 138 |     test('join', ' ', TypeError, BadSeq1()) | 
| Jeremy Hylton | 20f41b6 | 2000-07-11 03:31:55 +0000 | [diff] [blame] | 139 |     test('join', ' ', 'a b c', BadSeq2()) | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 140 |  | 
 | 141 |     test('splitlines', "abc\ndef\n\rghi", ['abc', 'def', '', 'ghi']) | 
 | 142 |     test('splitlines', "abc\ndef\n\r\nghi", ['abc', 'def', '', 'ghi']) | 
 | 143 |     test('splitlines', "abc\ndef\r\nghi", ['abc', 'def', 'ghi']) | 
 | 144 |     test('splitlines', "abc\ndef\r\nghi\n", ['abc', 'def', 'ghi']) | 
 | 145 |     test('splitlines', "abc\ndef\r\nghi\n\r", ['abc', 'def', 'ghi', '']) | 
 | 146 |     test('splitlines', "\nabc\ndef\r\nghi\n\r", ['', 'abc', 'def', 'ghi', '']) | 
 | 147 |     test('splitlines', "\nabc\ndef\r\nghi\n\r", ['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], 1) | 
 | 148 |  | 
 | 149 |     test('split', 'this is the split function', | 
 | 150 |          ['this', 'is', 'the', 'split', 'function']) | 
 | 151 |     test('split', 'a|b|c|d', ['a', 'b', 'c', 'd'], '|') | 
 | 152 |     test('split', 'a|b|c|d', ['a', 'b', 'c|d'], '|', 2) | 
 | 153 |     test('split', 'a b c d', ['a', 'b c d'], None, 1) | 
 | 154 |     test('split', 'a b c d', ['a', 'b', 'c d'], None, 2) | 
 | 155 |     test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 3) | 
 | 156 |     test('split', 'a b c d', ['a', 'b', 'c', 'd'], None, 4) | 
 | 157 |     test('split', 'a b c d', ['a b c d'], None, 0) | 
 | 158 |     test('split', 'a  b  c  d', ['a', 'b', 'c  d'], None, 2) | 
 | 159 |     test('split', 'a b c d ', ['a', 'b', 'c', 'd']) | 
 | 160 |  | 
 | 161 |     test('strip', '   hello   ', 'hello') | 
 | 162 |     test('lstrip', '   hello   ', 'hello   ') | 
 | 163 |     test('rstrip', '   hello   ', '   hello') | 
 | 164 |     test('strip', 'hello', 'hello') | 
 | 165 |  | 
| Guido van Rossum | 018b0eb | 2002-04-13 00:56:08 +0000 | [diff] [blame] | 166 |     # strip/lstrip/rstrip with None arg | 
 | 167 |     test('strip', '   hello   ', 'hello', None) | 
 | 168 |     test('lstrip', '   hello   ', 'hello   ', None) | 
 | 169 |     test('rstrip', '   hello   ', '   hello', None) | 
 | 170 |     test('strip', 'hello', 'hello', None) | 
 | 171 |  | 
| Walter Dörwald | de02bcb | 2002-04-22 17:42:37 +0000 | [diff] [blame] | 172 |     # strip/lstrip/rstrip with str arg | 
| Guido van Rossum | 018b0eb | 2002-04-13 00:56:08 +0000 | [diff] [blame] | 173 |     test('strip', 'xyzzyhelloxyzzy', 'hello', 'xyz') | 
 | 174 |     test('lstrip', 'xyzzyhelloxyzzy', 'helloxyzzy', 'xyz') | 
 | 175 |     test('rstrip', 'xyzzyhelloxyzzy', 'xyzzyhello', 'xyz') | 
 | 176 |     test('strip', 'hello', 'hello', 'xyz') | 
 | 177 |  | 
| Walter Dörwald | de02bcb | 2002-04-22 17:42:37 +0000 | [diff] [blame] | 178 |     # strip/lstrip/rstrip with unicode arg | 
| Michael W. Hudson | f207277 | 2002-05-20 14:48:16 +0000 | [diff] [blame] | 179 |     if have_unicode: | 
| Tim Peters | 8ac1495 | 2002-05-23 15:15:30 +0000 | [diff] [blame] | 180 |         test('strip', 'xyzzyhelloxyzzy', | 
| Michael W. Hudson | f207277 | 2002-05-20 14:48:16 +0000 | [diff] [blame] | 181 |              unicode('hello', 'ascii'), unicode('xyz', 'ascii')) | 
| Tim Peters | 8ac1495 | 2002-05-23 15:15:30 +0000 | [diff] [blame] | 182 |         test('lstrip', 'xyzzyhelloxyzzy', | 
| Michael W. Hudson | f207277 | 2002-05-20 14:48:16 +0000 | [diff] [blame] | 183 |              unicode('helloxyzzy', 'ascii'), unicode('xyz', 'ascii')) | 
 | 184 |         test('rstrip', 'xyzzyhelloxyzzy', | 
 | 185 |              unicode('xyzzyhello', 'ascii'), unicode('xyz', 'ascii')) | 
| Tim Peters | 8ac1495 | 2002-05-23 15:15:30 +0000 | [diff] [blame] | 186 |         test('strip', 'hello', | 
| Michael W. Hudson | f207277 | 2002-05-20 14:48:16 +0000 | [diff] [blame] | 187 |              unicode('hello', 'ascii'), unicode('xyz', 'ascii')) | 
| Walter Dörwald | de02bcb | 2002-04-22 17:42:37 +0000 | [diff] [blame] | 188 |  | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 189 |     test('swapcase', 'HeLLo cOmpUteRs', 'hEllO CoMPuTErS') | 
 | 190 |     test('translate', 'xyzabcdef', 'xyzxyz', transtable, 'def') | 
 | 191 |  | 
 | 192 |     table = string.maketrans('a', 'A') | 
 | 193 |     test('translate', 'abc', 'Abc', table) | 
 | 194 |     test('translate', 'xyz', 'xyz', table) | 
 | 195 |  | 
 | 196 |     test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1) | 
 | 197 |     test('replace', 'one!two!three!', 'onetwothree', '!', '') | 
 | 198 |     test('replace', 'one!two!three!', 'one@two@three!', '!', '@', 2) | 
 | 199 |     test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 3) | 
 | 200 |     test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 4) | 
 | 201 |     test('replace', 'one!two!three!', 'one!two!three!', '!', '@', 0) | 
 | 202 |     test('replace', 'one!two!three!', 'one@two@three@', '!', '@') | 
 | 203 |     test('replace', 'one!two!three!', 'one!two!three!', 'x', '@') | 
 | 204 |     test('replace', 'one!two!three!', 'one!two!three!', 'x', '@', 2) | 
| Guido van Rossum | 8b1a6d6 | 2002-08-23 18:21:28 +0000 | [diff] [blame] | 205 |     test('replace', 'abc', '-a-b-c-', '', '-') | 
 | 206 |     test('replace', 'abc', '-a-b-c', '', '-', 3) | 
 | 207 |     test('replace', 'abc', 'abc', '', '-', 0) | 
 | 208 |     test('replace', '', '', '', '') | 
| Tim Peters | 1a7b3ee | 2001-05-09 23:00:26 +0000 | [diff] [blame] | 209 |     # Next three for SF bug 422088: [OSF1 alpha] string.replace(); died with | 
 | 210 |     # MemoryError due to empty result (platform malloc issue when requesting | 
 | 211 |     # 0 bytes). | 
 | 212 |     test('replace', '123', '', '123', '') | 
 | 213 |     test('replace', '123123', '', '123', '') | 
 | 214 |     test('replace', '123x123', 'x', '123', '') | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 215 |  | 
 | 216 |     test('startswith', 'hello', 1, 'he') | 
 | 217 |     test('startswith', 'hello', 1, 'hello') | 
 | 218 |     test('startswith', 'hello', 0, 'hello world') | 
 | 219 |     test('startswith', 'hello', 1, '') | 
 | 220 |     test('startswith', 'hello', 0, 'ello') | 
 | 221 |     test('startswith', 'hello', 1, 'ello', 1) | 
 | 222 |     test('startswith', 'hello', 1, 'o', 4) | 
 | 223 |     test('startswith', 'hello', 0, 'o', 5) | 
 | 224 |     test('startswith', 'hello', 1, '', 5) | 
 | 225 |     test('startswith', 'hello', 0, 'lo', 6) | 
 | 226 |     test('startswith', 'helloworld', 1, 'lowo', 3) | 
 | 227 |     test('startswith', 'helloworld', 1, 'lowo', 3, 7) | 
 | 228 |     test('startswith', 'helloworld', 0, 'lowo', 3, 6) | 
 | 229 |  | 
| Neal Norwitz | 1f68fc7 | 2002-06-14 00:50:42 +0000 | [diff] [blame] | 230 |     # test negative indices in startswith | 
 | 231 |     test('startswith', 'hello', 1, 'he', 0, -1) | 
 | 232 |     test('startswith', 'hello', 1, 'he', -53, -1) | 
 | 233 |     test('startswith', 'hello', 0, 'hello', 0, -1) | 
 | 234 |     test('startswith', 'hello', 0, 'hello world', -1, -10) | 
 | 235 |     test('startswith', 'hello', 0, 'ello', -5) | 
 | 236 |     test('startswith', 'hello', 1, 'ello', -4) | 
 | 237 |     test('startswith', 'hello', 0, 'o', -2) | 
 | 238 |     test('startswith', 'hello', 1, 'o', -1) | 
 | 239 |     test('startswith', 'hello', 1, '', -3, -3) | 
 | 240 |     test('startswith', 'hello', 0, 'lo', -9) | 
 | 241 |  | 
| Jeremy Hylton | f82b04e | 2000-07-10 17:08:42 +0000 | [diff] [blame] | 242 |     test('endswith', 'hello', 1, 'lo') | 
 | 243 |     test('endswith', 'hello', 0, 'he') | 
 | 244 |     test('endswith', 'hello', 1, '') | 
 | 245 |     test('endswith', 'hello', 0, 'hello world') | 
 | 246 |     test('endswith', 'helloworld', 0, 'worl') | 
 | 247 |     test('endswith', 'helloworld', 1, 'worl', 3, 9) | 
 | 248 |     test('endswith', 'helloworld', 1, 'world', 3, 12) | 
 | 249 |     test('endswith', 'helloworld', 1, 'lowo', 1, 7) | 
 | 250 |     test('endswith', 'helloworld', 1, 'lowo', 2, 7) | 
 | 251 |     test('endswith', 'helloworld', 1, 'lowo', 3, 7) | 
 | 252 |     test('endswith', 'helloworld', 0, 'lowo', 4, 7) | 
 | 253 |     test('endswith', 'helloworld', 0, 'lowo', 3, 8) | 
 | 254 |     test('endswith', 'ab', 0, 'ab', 0, 1) | 
 | 255 |     test('endswith', 'ab', 0, 'ab', 0, 0) | 
| Marc-André Lemburg | 2d92041 | 2001-05-15 12:00:02 +0000 | [diff] [blame] | 256 |  | 
| Neal Norwitz | 1f68fc7 | 2002-06-14 00:50:42 +0000 | [diff] [blame] | 257 |     # test negative indices in endswith | 
 | 258 |     test('endswith', 'hello', 1, 'lo', -2) | 
 | 259 |     test('endswith', 'hello', 0, 'he', -2) | 
 | 260 |     test('endswith', 'hello', 1, '', -3, -3) | 
 | 261 |     test('endswith', 'hello', 0, 'hello world', -10, -2) | 
 | 262 |     test('endswith', 'helloworld', 0, 'worl', -6) | 
 | 263 |     test('endswith', 'helloworld', 1, 'worl', -5, -1) | 
 | 264 |     test('endswith', 'helloworld', 1, 'worl', -5, 9) | 
 | 265 |     test('endswith', 'helloworld', 1, 'world', -7, 12) | 
 | 266 |     test('endswith', 'helloworld', 1, 'lowo', -99, -3) | 
 | 267 |     test('endswith', 'helloworld', 1, 'lowo', -8, -3) | 
 | 268 |     test('endswith', 'helloworld', 1, 'lowo', -7, -3) | 
 | 269 |     test('endswith', 'helloworld', 0, 'lowo', 3, -4) | 
 | 270 |     test('endswith', 'helloworld', 0, 'lowo', -8, -2) | 
 | 271 |  | 
| Walter Dörwald | 068325e | 2002-04-15 13:36:47 +0000 | [diff] [blame] | 272 |     test('zfill', '123', '123', 2) | 
 | 273 |     test('zfill', '123', '123', 3) | 
 | 274 |     test('zfill', '123', '0123', 4) | 
 | 275 |     test('zfill', '+123', '+123', 3) | 
 | 276 |     test('zfill', '+123', '+123', 4) | 
 | 277 |     test('zfill', '+123', '+0123', 5) | 
 | 278 |     test('zfill', '-123', '-123', 3) | 
 | 279 |     test('zfill', '-123', '-123', 4) | 
 | 280 |     test('zfill', '-123', '-0123', 5) | 
 | 281 |     test('zfill', '', '000', 3) | 
| Andrew M. Kuchling | c6c9c4a | 2002-03-29 16:00:13 +0000 | [diff] [blame] | 282 |     test('zfill', '34', '34', 1) | 
 | 283 |     test('zfill', '34', '0034', 4) | 
| Tim Peters | 863ac44 | 2002-04-16 01:38:40 +0000 | [diff] [blame] | 284 |  | 
| Neil Schemenauer | b981df9 | 2002-11-18 16:12:11 +0000 | [diff] [blame^] | 285 |     test('__mod__', '+%s+', '+hello+', 'hello') | 
 | 286 |     test('__mod__', '+%d+', '+10+', 10) | 
 | 287 |  | 
| Marc-André Lemburg | 2d92041 | 2001-05-15 12:00:02 +0000 | [diff] [blame] | 288 |     # Encoding/decoding | 
 | 289 |     codecs = [('rot13', 'uryyb jbeyq'), | 
 | 290 |               ('base64', 'aGVsbG8gd29ybGQ=\n'), | 
 | 291 |               ('hex', '68656c6c6f20776f726c64'), | 
 | 292 |               ('uu', 'begin 666 <data>\n+:&5L;&\\@=V]R;&0 \n \nend\n')] | 
 | 293 |     for encoding, data in codecs: | 
 | 294 |         test('encode', 'hello world', data, encoding) | 
 | 295 |         test('decode', data, 'hello world', encoding) | 
 | 296 |     # zlib is optional, so we make the test optional too... | 
 | 297 |     try: | 
 | 298 |         import zlib | 
 | 299 |     except ImportError: | 
 | 300 |         pass | 
 | 301 |     else: | 
 | 302 |         data = 'x\x9c\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x1a\x0b\x04]' | 
 | 303 |         verify('hello world'.encode('zlib') == data) | 
 | 304 |         verify(data.decode('zlib') == 'hello world') | 
| Barry Warsaw | 817918c | 2002-08-06 16:58:21 +0000 | [diff] [blame] | 305 |  | 
 | 306 | def test_exception(lhs, rhs, msg): | 
 | 307 |     try: | 
 | 308 |         lhs in rhs | 
 | 309 |     except TypeError: | 
 | 310 |         pass | 
 | 311 |     else: | 
 | 312 |         raise TestFailed, msg | 
 | 313 |  | 
 | 314 | def run_contains_tests(test): | 
| Raymond Hettinger | 8da9da0 | 2002-08-09 00:43:38 +0000 | [diff] [blame] | 315 |     test('__contains__', '', True, '')         # vereq('' in '', True) | 
 | 316 |     test('__contains__', 'abc', True, '')      # vereq('' in 'abc', True) | 
 | 317 |     test('__contains__', 'abc', False, '\0')   # vereq('\0' in 'abc', False) | 
 | 318 |     test('__contains__', '\0abc', True, '\0')  # vereq('\0' in '\0abc', True) | 
 | 319 |     test('__contains__', 'abc\0', True, '\0')  # vereq('\0' in 'abc\0', True) | 
 | 320 |     test('__contains__', '\0abc', True, 'a')   # vereq('a' in '\0abc', True) | 
 | 321 |     test('__contains__', 'asdf', True, 'asdf') # vereq('asdf' in 'asdf', True) | 
 | 322 |     test('__contains__', 'asd', False, 'asdf') # vereq('asdf' in 'asd', False) | 
 | 323 |     test('__contains__', '', False, 'asdf')    # vereq('asdf' in '', False) | 
| Raymond Hettinger | c35491e | 2002-08-09 01:37:06 +0000 | [diff] [blame] | 324 |  | 
 | 325 | def run_inplace_tests(constructor): | 
 | 326 |     # Verify clearing of SF bug #592573 | 
 | 327 |     s = t = constructor('abc') | 
 | 328 |     s += constructor('def') | 
 | 329 |     verify(s != t, 'in-place concatenate should create a new object') |