mirror of
https://github.com/python/cpython.git
synced 2025-07-14 06:45:17 +00:00
Issue #26015: Added new tests for pickling iterators of mutable sequences.
This commit is contained in:
commit
de128e19e2
6 changed files with 212 additions and 46 deletions
|
@ -609,10 +609,9 @@ class BaseBytesTest:
|
|||
self.assertEqual(list(it), data)
|
||||
|
||||
it = pickle.loads(d)
|
||||
try:
|
||||
next(it)
|
||||
except StopIteration:
|
||||
if not b:
|
||||
continue
|
||||
next(it)
|
||||
d = pickle.dumps(it, proto)
|
||||
it = pickle.loads(d)
|
||||
self.assertEqual(list(it), data[1:])
|
||||
|
@ -1379,6 +1378,43 @@ class ByteArrayTest(BaseBytesTest, unittest.TestCase):
|
|||
from _testcapi import getbuffer_with_null_view
|
||||
self.assertRaises(BufferError, getbuffer_with_null_view, bytearray())
|
||||
|
||||
def test_iterator_pickling2(self):
|
||||
orig = bytearray(b'abc')
|
||||
data = list(b'qwerty')
|
||||
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
||||
# initial iterator
|
||||
itorig = iter(orig)
|
||||
d = pickle.dumps((itorig, orig), proto)
|
||||
it, b = pickle.loads(d)
|
||||
b[:] = data
|
||||
self.assertEqual(type(it), type(itorig))
|
||||
self.assertEqual(list(it), data)
|
||||
|
||||
# running iterator
|
||||
next(itorig)
|
||||
d = pickle.dumps((itorig, orig), proto)
|
||||
it, b = pickle.loads(d)
|
||||
b[:] = data
|
||||
self.assertEqual(type(it), type(itorig))
|
||||
self.assertEqual(list(it), data[1:])
|
||||
|
||||
# empty iterator
|
||||
for i in range(1, len(orig)):
|
||||
next(itorig)
|
||||
d = pickle.dumps((itorig, orig), proto)
|
||||
it, b = pickle.loads(d)
|
||||
b[:] = data
|
||||
self.assertEqual(type(it), type(itorig))
|
||||
self.assertEqual(list(it), data[len(orig):])
|
||||
|
||||
# exhausted iterator
|
||||
self.assertRaises(StopIteration, next, itorig)
|
||||
d = pickle.dumps((itorig, orig), proto)
|
||||
it, b = pickle.loads(d)
|
||||
b[:] = data
|
||||
self.assertEqual(list(it), [])
|
||||
|
||||
|
||||
class AssortedBytesTest(unittest.TestCase):
|
||||
#
|
||||
# Test various combinations of bytes and bytearray
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue