(self)
| 91 | getattr(obj, methodname)(*args) |
| 92 | |
| 93 | def test_count(self): |
| 94 | self.checkequal(3, 'aaa', 'count', 'a') |
| 95 | self.checkequal(0, 'aaa', 'count', 'b') |
| 96 | self.checkequal(3, 'aaa', 'count', 'a') |
| 97 | self.checkequal(0, 'aaa', 'count', 'b') |
| 98 | self.checkequal(3, 'aaa', 'count', 'a') |
| 99 | self.checkequal(0, 'aaa', 'count', 'b') |
| 100 | self.checkequal(0, 'aaa', 'count', 'b') |
| 101 | self.checkequal(2, 'aaa', 'count', 'a', 1) |
| 102 | self.checkequal(0, 'aaa', 'count', 'a', 10) |
| 103 | self.checkequal(1, 'aaa', 'count', 'a', -1) |
| 104 | self.checkequal(3, 'aaa', 'count', 'a', -10) |
| 105 | self.checkequal(1, 'aaa', 'count', 'a', 0, 1) |
| 106 | self.checkequal(3, 'aaa', 'count', 'a', 0, 10) |
| 107 | self.checkequal(2, 'aaa', 'count', 'a', 0, -1) |
| 108 | self.checkequal(0, 'aaa', 'count', 'a', 0, -10) |
| 109 | self.checkequal(3, 'aaa', 'count', '', 1) |
| 110 | self.checkequal(1, 'aaa', 'count', '', 3) |
| 111 | self.checkequal(0, 'aaa', 'count', '', 10) |
| 112 | self.checkequal(2, 'aaa', 'count', '', -1) |
| 113 | self.checkequal(4, 'aaa', 'count', '', -10) |
| 114 | |
| 115 | self.checkequal(1, '', 'count', '') |
| 116 | self.checkequal(0, '', 'count', '', 1, 1) |
| 117 | self.checkequal(0, '', 'count', '', sys.maxsize, 0) |
| 118 | |
| 119 | self.checkequal(0, '', 'count', 'xx') |
| 120 | self.checkequal(0, '', 'count', 'xx', 1, 1) |
| 121 | self.checkequal(0, '', 'count', 'xx', sys.maxsize, 0) |
| 122 | |
| 123 | self.checkraises(TypeError, 'hello', 'count') |
| 124 | |
| 125 | if self.contains_bytes: |
| 126 | self.checkequal(0, 'hello', 'count', 42) |
| 127 | else: |
| 128 | self.checkraises(TypeError, 'hello', 'count', 42) |
| 129 | |
| 130 | # For a variety of combinations, |
| 131 | # verify that str.count() matches an equivalent function |
| 132 | # replacing all occurrences and then differencing the string lengths |
| 133 | charset = ['', 'a', 'b'] |
| 134 | digits = 7 |
| 135 | base = len(charset) |
| 136 | teststrings = set() |
| 137 | for i in range(base ** digits): |
| 138 | entry = [] |
| 139 | for j in range(digits): |
| 140 | i, m = divmod(i, base) |
| 141 | entry.append(charset[m]) |
| 142 | teststrings.add(''.join(entry)) |
| 143 | teststrings = [self.fixtype(ts) for ts in teststrings] |
| 144 | for i in teststrings: |
| 145 | n = len(i) |
| 146 | for j in teststrings: |
| 147 | r1 = i.count(j) |
| 148 | if j: |
| 149 | r2, rem = divmod(n - len(i.replace(j, self.fixtype(''))), |
| 150 | len(j)) |
nothing calls this directly
no test coverage detected