python/dist/src/Lib/test string_tests.py, 1.43, 1.44
Update of /cvsroot/python/python/dist/src/Lib/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22296/Lib/test Modified Files: string_tests.py Log Message: * Beef-up tests for str.count(). * Speed-up str.count() by using memchr() to fly between first char matches. Index: string_tests.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/test/string_tests.py,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- string_tests.py 20 Feb 2005 04:07:08 -0000 1.43 +++ string_tests.py 20 Feb 2005 09:54:53 -0000 1.44 @@ -114,6 +114,33 @@ self.checkraises(TypeError, 'hello', 'count') self.checkraises(TypeError, 'hello', 'count', 42) + # For a variety of combinations, + # verify that str.count() matches an equivalent function + # replacing all occurrences and then differencing the string lengths + charset = ['', 'a', 'b'] + digits = 7 + base = len(charset) + teststrings = set() + for i in xrange(base ** digits): + entry = [] + for j in xrange(digits): + i, m = divmod(i, base) + entry.append(charset[m]) + teststrings.add(''.join(entry)) + teststrings = list(teststrings) + for i in teststrings: + i = self.fixtype(i) + n = len(i) + for j in teststrings: + r1 = i.count(j) + if j: + r2, rem = divmod(n - len(i.replace(j, '')), len(j)) + else: + r2, rem = len(i)+1, 0 + if rem or r1 != r2: + self.assertEqual(rem, 0) + self.assertEqual(r1, r2) + def test_find(self): self.checkequal(0, 'abcdefghiabc', 'find', 'abc') self.checkequal(9, 'abcdefghiabc', 'find', 'abc', 1) @@ -135,6 +162,7 @@ i, m = divmod(i, base) entry.append(charset[m]) teststrings.add(''.join(entry)) + teststrings = list(teststrings) for i in teststrings: i = self.fixtype(i) for j in teststrings:
participants (1)
-
rhettingerīŧ users.sourceforge.net