diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_itertools.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 50cf148..8353e68 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -751,6 +751,26 @@ class TestBasicOps(unittest.TestCase): self.assertEqual(set(keys), expectedkeys) self.assertEqual(len(keys), len(expectedkeys)) + # Check case where inner iterator is used after advancing the groupby + # iterator + s = list(zip('AABBBAAAA', range(9))) + it = groupby(s, testR) + _, g1 = next(it) + _, g2 = next(it) + _, g3 = next(it) + self.assertEqual(list(g1), []) + self.assertEqual(list(g2), []) + self.assertEqual(next(g3), ('A', 5)) + list(it) # exhaust the groupby iterator + self.assertEqual(list(g3), []) + + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + it = groupby(s, testR) + _, g = next(it) + next(it) + next(it) + self.assertEqual(list(pickle.loads(pickle.dumps(g, proto))), []) + # Exercise pipes and filters style s = 'abracadabra' # sort s | uniq |