1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | Lib/test/test_strop.py
import warnings warnings.filterwarnings("ignore", "strop functions are obsolete;", DeprecationWarning, r'test.test_strop|unittest') import strop import unittest import sys from test import test_support class StropFunctionTestCase(unittest.TestCase): def test_atoi(self): self.assertTrue(strop.atoi(" 1 ") == 1) self.assertRaises(ValueError, strop.atoi, " 1x") self.assertRaises(ValueError, strop.atoi, " x1 ") def test_atol(self): self.assertTrue(strop.atol(" 1 ") == 1L) self.assertRaises(ValueError, strop.atol, " 1x") self.assertRaises(ValueError, strop.atol, " x1 ") def test_atof(self): self.assertTrue(strop.atof(" 1 ") == 1.0) self.assertRaises(ValueError, strop.atof, " 1x") self.assertRaises(ValueError, strop.atof, " x1 ") def test_capitalize(self): self.assertTrue(strop.capitalize(" hello ") == " hello ") self.assertTrue(strop.capitalize("hello ") == "Hello ") def test_find(self): self.assertTrue(strop.find("abcdefghiabc", "abc") == 0) self.assertTrue(strop.find("abcdefghiabc", "abc", 1) == 9) self.assertTrue(strop.find("abcdefghiabc", "def", 4) == -1) def test_rfind(self): self.assertTrue(strop.rfind("abcdefghiabc", "abc") == 9) def test_lower(self): self.assertTrue(strop.lower("HeLLo") == "hello") def test_upper(self): self.assertTrue(strop.upper("HeLLo") == "HELLO") def test_swapcase(self): self.assertTrue(strop.swapcase("HeLLo cOmpUteRs") == "hEllO CoMPuTErS") def test_strip(self): self.assertTrue(strop.strip(" \t\n hello \t\n ") == "hello") def test_lstrip(self): self.assertTrue(strop.lstrip(" \t\n hello \t\n ") == "hello \t\n ") def test_rstrip(self): self.assertTrue(strop.rstrip(" \t\n hello \t\n ") == " \t\n hello") def test_replace(self): replace = strop.replace self.assertTrue(replace("one!two!three!", '!', '@', 1) == "one@two!three!") self.assertTrue(replace("one!two!three!", '!', '@', 2) == "one@two@three!") self.assertTrue(replace("one!two!three!", '!', '@', 3) == "one@two@three@") self.assertTrue(replace("one!two!three!", '!', '@', 4) == "one@two@three@") # CAUTION: a replace count of 0 means infinity only to strop, # not to the string .replace() method or to the # string.replace() function. self.assertTrue(replace("one!two!three!", '!', '@', 0) == "one@two@three@") self.assertTrue(replace("one!two!three!", '!', '@') == "one@two@three@") self.assertTrue(replace("one!two!three!", 'x', '@') == "one!two!three!") self.assertTrue(replace("one!two!three!", 'x', '@', 2) == "one!two!three!") def test_split(self): split = strop.split self.assertTrue(split("this is the split function") == ['this', 'is', 'the', 'split', 'function']) self.assertTrue(split("a|b|c|d", '|') == ['a', 'b', 'c', 'd']) self.assertTrue(split("a|b|c|d", '|', 2) == ['a', 'b', 'c|d']) self.assertTrue(split("a b c d", None, 1) == ['a', 'b c d']) self.assertTrue(split("a b c d", None, 2) == ['a', 'b', 'c d']) self.assertTrue(split("a b c d", None, 3) == ['a', 'b', 'c', 'd']) self.assertTrue(split("a b c d", None, 4) == ['a', 'b', 'c', 'd']) self.assertTrue(split("a b c d", None, 0) == ['a', 'b', 'c', 'd']) self.assertTrue(split("a b c d", None, 2) == ['a', 'b', 'c d']) def test_join(self): self.assertTrue(strop.join(['a', 'b', 'c', 'd']) == 'a b c d') self.assertTrue(strop.join(('a', 'b', 'c', 'd'), '') == 'abcd') self.assertTrue(strop.join(Sequence()) == 'w x y z') # try a few long ones self.assertTrue(strop.join(['x' * 100] * 100, ':') == (('x' * 100) + ":") * 99 + "x" * 100) self.assertTrue(strop.join(('x' * 100,) * 100, ':') == (('x' * 100) + ":") * 99 + "x" * 100) def test_maketrans(self): self.assertTrue(strop.maketrans("abc", "xyz") == transtable) self.assertRaises(ValueError, strop.maketrans, "abc", "xyzq") def test_translate(self): self.assertTrue(strop.translate("xyzabcdef", transtable, "def") == "xyzxyz") def test_data_attributes(self): strop.lowercase strop.uppercase strop.whitespace @unittest.skipUnless(sys.maxsize == 2147483647, "only for 32-bit") def test_expandtabs_overflow(self): s = '\t\n' * 0x10000 + 'A' * 0x1000000 self.assertRaises(OverflowError, strop.expandtabs, s, 0x10001) @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=5) def test_stropjoin_huge_list(self, size): a = "A" * size try: r = strop.join([a, a], a) except OverflowError: pass else: self.assertEqual(len(r), len(a) * 3) @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=1) def test_stropjoin_huge_tup(self, size): a = "A" * size try: r = strop.join((a, a), a) except OverflowError: pass # acceptable on 32-bit else: self.assertEqual(len(r), len(a) * 3) @unittest.skipUnless(sys.maxsize == 2147483647, "only for 32-bit") def test_stropreplace_overflow(self): a = "A" * 0x10000 self.assertRaises(MemoryError, strop.replace, a, "A", a) 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' # 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] def test_main(): test_support.run_unittest(StropFunctionTestCase) if __name__ == "__main__": test_main() |