summaryrefslogtreecommitdiffstats
path: root/Lib/test/string_tests.py
diff options
context:
space:
mode:
authorJesus Cea <jcea@jcea.es>2011-04-20 15:59:29 (GMT)
committerJesus Cea <jcea@jcea.es>2011-04-20 15:59:29 (GMT)
commitc1ceb64e41082282f2e3d28065f5ae1e03fa78ae (patch)
tree10833669b6f7cddc7d9dae47b72e29bf69e76748 /Lib/test/string_tests.py
parent5e66b167ff5c6c48385777a6b9b9931bfc2bc2cf (diff)
parent6159ee3cf59b3fd8fcf9818c0a8071362d1ad7c2 (diff)
downloadcpython-c1ceb64e41082282f2e3d28065f5ae1e03fa78ae.zip
cpython-c1ceb64e41082282f2e3d28065f5ae1e03fa78ae.tar.gz
cpython-c1ceb64e41082282f2e3d28065f5ae1e03fa78ae.tar.bz2
MERGE: startswith and endswith don't accept None as slice index. Patch by Torsten Becker. (closes #11828)
Diffstat (limited to 'Lib/test/string_tests.py')
-rw-r--r--Lib/test/string_tests.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index 1cc36d8..24a4a57 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -1183,6 +1183,63 @@ class MixinStrUnicodeUserStringTest:
self.checkraises(ValueError, S, 'rpartition', '')
self.checkraises(TypeError, S, 'rpartition', None)
+ def test_none_arguments(self):
+ # issue 11828
+ s = 'hello'
+ self.checkequal(2, s, 'find', 'l', None)
+ self.checkequal(3, s, 'find', 'l', -2, None)
+ self.checkequal(2, s, 'find', 'l', None, -2)
+ self.checkequal(0, s, 'find', 'h', None, None)
+
+ self.checkequal(3, s, 'rfind', 'l', None)
+ self.checkequal(3, s, 'rfind', 'l', -2, None)
+ self.checkequal(2, s, 'rfind', 'l', None, -2)
+ self.checkequal(0, s, 'rfind', 'h', None, None)
+
+ self.checkequal(2, s, 'index', 'l', None)
+ self.checkequal(3, s, 'index', 'l', -2, None)
+ self.checkequal(2, s, 'index', 'l', None, -2)
+ self.checkequal(0, s, 'index', 'h', None, None)
+
+ self.checkequal(3, s, 'rindex', 'l', None)
+ self.checkequal(3, s, 'rindex', 'l', -2, None)
+ self.checkequal(2, s, 'rindex', 'l', None, -2)
+ self.checkequal(0, s, 'rindex', 'h', None, None)
+
+ self.checkequal(2, s, 'count', 'l', None)
+ self.checkequal(1, s, 'count', 'l', -2, None)
+ self.checkequal(1, s, 'count', 'l', None, -2)
+ self.checkequal(0, s, 'count', 'x', None, None)
+
+ self.checkequal(True, s, 'endswith', 'o', None)
+ self.checkequal(True, s, 'endswith', 'lo', -2, None)
+ self.checkequal(True, s, 'endswith', 'l', None, -2)
+ self.checkequal(False, s, 'endswith', 'x', None, None)
+
+ self.checkequal(True, s, 'startswith', 'h', None)
+ self.checkequal(True, s, 'startswith', 'l', -2, None)
+ self.checkequal(True, s, 'startswith', 'h', None, -2)
+ self.checkequal(False, s, 'startswith', 'x', None, None)
+
+ def test_find_etc_raise_correct_error_messages(self):
+ # issue 11828
+ s = 'hello'
+ x = 'x'
+ self.assertRaisesRegexp(TypeError, r'^find\(', s.find,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^rfind\(', s.rfind,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^index\(', s.index,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^rindex\(', s.rindex,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^count\(', s.count,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^startswith\(', s.startswith,
+ x, None, None, None)
+ self.assertRaisesRegexp(TypeError, r'^endswith\(', s.endswith,
+ x, None, None, None)
+
class MixinStrUnicodeTest:
# Additional tests that only work with str and unicode.