mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
Patch #976880: add mmap .rfind() method, and 'end' paramter to .find().
Contributed by John Lenton.
This commit is contained in:
parent
4be0bc642e
commit
5c60bfcfbf
5 changed files with 88 additions and 9 deletions
|
@ -255,6 +255,42 @@ class MmapTests(unittest.TestCase):
|
|||
self.assertEqual(m.find(slice + 'x'), -1)
|
||||
m.close()
|
||||
|
||||
def test_find_end(self):
|
||||
# test the new 'end' parameter works as expected
|
||||
f = open(TESTFN, 'w+')
|
||||
data = 'one two ones'
|
||||
n = len(data)
|
||||
f.write(data)
|
||||
f.flush()
|
||||
m = mmap.mmap(f.fileno(), n)
|
||||
f.close()
|
||||
|
||||
self.assertEqual(m.find('one'), 0)
|
||||
self.assertEqual(m.find('ones'), 8)
|
||||
self.assertEqual(m.find('one', 0, -1), 0)
|
||||
self.assertEqual(m.find('one', 1), 8)
|
||||
self.assertEqual(m.find('one', 1, -1), 8)
|
||||
self.assertEqual(m.find('one', 1, -2), -1)
|
||||
|
||||
|
||||
def test_rfind(self):
|
||||
# test the new 'end' parameter works as expected
|
||||
f = open(TESTFN, 'w+')
|
||||
data = 'one two ones'
|
||||
n = len(data)
|
||||
f.write(data)
|
||||
f.flush()
|
||||
m = mmap.mmap(f.fileno(), n)
|
||||
f.close()
|
||||
|
||||
self.assertEqual(m.rfind('one'), 8)
|
||||
self.assertEqual(m.rfind('one '), 0)
|
||||
self.assertEqual(m.rfind('one', 0, -1), 8)
|
||||
self.assertEqual(m.rfind('one', 0, -2), 0)
|
||||
self.assertEqual(m.rfind('one', 1, -1), 8)
|
||||
self.assertEqual(m.rfind('one', 1, -2), -1)
|
||||
|
||||
|
||||
def test_double_close(self):
|
||||
# make sure a double close doesn't crash on Solaris (Bug# 665913)
|
||||
f = open(TESTFN, 'w+')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue