(self)
| 140 | self._assert_cmp(a, self.fixtype('ac'), -1) |
| 141 | |
| 142 | def test_count(self): |
| 143 | self.checkequal(3, 'aaa', 'count', 'a') |
| 144 | self.checkequal(0, 'aaa', 'count', 'b') |
| 145 | self.checkequal(3, 'aaa', 'count', 'a') |
| 146 | self.checkequal(0, 'aaa', 'count', 'b') |
| 147 | self.checkequal(3, 'aaa', 'count', 'a') |
| 148 | self.checkequal(0, 'aaa', 'count', 'b') |
| 149 | self.checkequal(0, 'aaa', 'count', 'b') |
| 150 | self.checkequal(2, 'aaa', 'count', 'a', 1) |
| 151 | self.checkequal(0, 'aaa', 'count', 'a', 10) |
| 152 | self.checkequal(1, 'aaa', 'count', 'a', -1) |
| 153 | self.checkequal(3, 'aaa', 'count', 'a', -10) |
| 154 | self.checkequal(1, 'aaa', 'count', 'a', 0, 1) |
| 155 | self.checkequal(3, 'aaa', 'count', 'a', 0, 10) |
| 156 | self.checkequal(2, 'aaa', 'count', 'a', 0, -1) |
| 157 | self.checkequal(0, 'aaa', 'count', 'a', 0, -10) |
| 158 | self.checkequal(3, 'aaa', 'count', '', 1) |
| 159 | self.checkequal(1, 'aaa', 'count', '', 3) |
| 160 | self.checkequal(0, 'aaa', 'count', '', 10) |
| 161 | self.checkequal(2, 'aaa', 'count', '', -1) |
| 162 | self.checkequal(4, 'aaa', 'count', '', -10) |
| 163 | |
| 164 | self.checkequal(1, '', 'count', '') |
| 165 | self.checkequal(0, '', 'count', '', 1, 1) |
| 166 | self.checkequal(0, '', 'count', '', sys.maxsize, 0) |
| 167 | |
| 168 | self.checkequal(0, '', 'count', 'xx') |
| 169 | self.checkequal(0, '', 'count', 'xx', 1, 1) |
| 170 | self.checkequal(0, '', 'count', 'xx', sys.maxsize, 0) |
| 171 | |
| 172 | self.checkraises(TypeError, 'hello', 'count') |
| 173 | |
| 174 | if self.contains_bytes: |
| 175 | self.checkequal(0, 'hello', 'count', 42) |
| 176 | else: |
| 177 | self.checkraises(TypeError, 'hello', 'count', 42) |
| 178 | |
| 179 | # For a variety of combinations, |
| 180 | # verify that str.count() matches an equivalent function |
| 181 | # replacing all occurrences and then differencing the string lengths |
| 182 | teststrings = self._get_teststrings(['', 'a', 'b'], 7) |
| 183 | for i in teststrings: |
| 184 | n = len(i) |
| 185 | for j in teststrings: |
| 186 | r1 = i.count(j) |
| 187 | if j: |
| 188 | r2, rem = divmod(n - len(i.replace(j, self.fixtype(''))), |
| 189 | len(j)) |
| 190 | else: |
| 191 | r2, rem = len(i)+1, 0 |
| 192 | if rem or r1 != r2: |
| 193 | self.assertEqual(rem, 0, '%s != 0 for %s' % (rem, i)) |
| 194 | self.assertEqual(r1, r2, '%s != %s for %s' % (r1, r2, i)) |
| 195 | |
| 196 | def test_count_keyword(self): |
| 197 | self.assertEqual('aa'.replace('a', 'b', 0), 'aa'.replace('a', 'b', count=0)) |
nothing calls this directly
no test coverage detected