mirror of
https://github.com/python/cpython.git
synced 2025-08-10 11:58:39 +00:00
startswith and endswith don't accept None as slice index. Patch by Torsten Becker. (closes #11828)
This commit is contained in:
parent
0d65433568
commit
44e81687a2
8 changed files with 197 additions and 64 deletions
|
@ -456,6 +456,68 @@ class BaseBytesTest(unittest.TestCase):
|
|||
self.assertEqual([ord(b[i:i+1]) for i in range(len(b))],
|
||||
[0, 65, 127, 128, 255])
|
||||
|
||||
def test_none_arguments(self):
|
||||
# issue 11828
|
||||
b = self.type2test(b'hello')
|
||||
l = self.type2test(b'l')
|
||||
h = self.type2test(b'h')
|
||||
x = self.type2test(b'x')
|
||||
o = self.type2test(b'o')
|
||||
|
||||
self.assertEqual(2, b.find(l, None))
|
||||
self.assertEqual(3, b.find(l, -2, None))
|
||||
self.assertEqual(2, b.find(l, None, -2))
|
||||
self.assertEqual(0, b.find(h, None, None))
|
||||
|
||||
self.assertEqual(3, b.rfind(l, None))
|
||||
self.assertEqual(3, b.rfind(l, -2, None))
|
||||
self.assertEqual(2, b.rfind(l, None, -2))
|
||||
self.assertEqual(0, b.rfind(h, None, None))
|
||||
|
||||
self.assertEqual(2, b.index(l, None))
|
||||
self.assertEqual(3, b.index(l, -2, None))
|
||||
self.assertEqual(2, b.index(l, None, -2))
|
||||
self.assertEqual(0, b.index(h, None, None))
|
||||
|
||||
self.assertEqual(3, b.rindex(l, None))
|
||||
self.assertEqual(3, b.rindex(l, -2, None))
|
||||
self.assertEqual(2, b.rindex(l, None, -2))
|
||||
self.assertEqual(0, b.rindex(h, None, None))
|
||||
|
||||
self.assertEqual(2, b.count(l, None))
|
||||
self.assertEqual(1, b.count(l, -2, None))
|
||||
self.assertEqual(1, b.count(l, None, -2))
|
||||
self.assertEqual(0, b.count(x, None, None))
|
||||
|
||||
self.assertEqual(True, b.endswith(o, None))
|
||||
self.assertEqual(True, b.endswith(o, -2, None))
|
||||
self.assertEqual(True, b.endswith(l, None, -2))
|
||||
self.assertEqual(False, b.endswith(x, None, None))
|
||||
|
||||
self.assertEqual(True, b.startswith(h, None))
|
||||
self.assertEqual(True, b.startswith(l, -2, None))
|
||||
self.assertEqual(True, b.startswith(h, None, -2))
|
||||
self.assertEqual(False, b.startswith(x, None, None))
|
||||
|
||||
def test_find_etc_raise_correct_error_messages(self):
|
||||
# issue 11828
|
||||
b = self.type2test(b'hello')
|
||||
x = self.type2test(b'x')
|
||||
self.assertRaisesRegexp(TypeError, r'\bfind\b', b.find,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\brfind\b', b.rfind,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\bindex\b', b.index,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\brindex\b', b.rindex,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\bcount\b', b.count,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\bstartswith\b', b.startswith,
|
||||
x, None, None, None)
|
||||
self.assertRaisesRegexp(TypeError, r'\bendswith\b', b.endswith,
|
||||
x, None, None, None)
|
||||
|
||||
|
||||
class ByteArrayTest(BaseBytesTest):
|
||||
type2test = bytearray
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue