Skip to content

Commit 90842c1

Browse files
committed
Add more pickle tests on iterators
1 parent 64cba52 commit 90842c1

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

Lib/test/test_dict.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,11 +1855,21 @@ def test_pickle(self):
18551855
pickle.dumps(fd, proto)
18561856

18571857
def test_pickle_iter(self):
1858-
it = iter(frozendict(x=1, y=2))
1859-
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
1860-
p = pickle.dumps(it, proto)
1861-
it2 = pickle.loads(p)
1862-
self.assertEqual(list(it2), ['x', 'y'])
1858+
fd = frozendict(c=1, b=2, a=3, d=4, e=5, f=6)
1859+
for method_name in (None, 'keys', 'values', 'items'):
1860+
if method_name is not None:
1861+
meth = getattr(fd, method_name)
1862+
else:
1863+
meth = lambda: fd
1864+
expected = list(meth())[1:]
1865+
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
1866+
with self.subTest(method_name=method_name, protocol=proto):
1867+
it = iter(meth())
1868+
next(it)
1869+
p = pickle.dumps(it, proto)
1870+
unpickled = pickle.loads(p)
1871+
self.assertEqual(list(unpickled), expected)
1872+
self.assertEqual(list(it), expected)
18631873

18641874

18651875
if __name__ == "__main__":

0 commit comments

Comments
 (0)