mirror of https://github.com/python/cpython
Issue #26492: Added additional tests for exhausted iterators of mutable sequences.
This commit is contained in:
commit
f39c0ac62f
|
@ -593,3 +593,14 @@ class CommonTest(seq_tests.CommonTest):
|
|||
def __iter__(self):
|
||||
raise KeyboardInterrupt
|
||||
self.assertRaises(KeyboardInterrupt, list, F())
|
||||
|
||||
def test_exhausted_iterator(self):
|
||||
a = self.type2test([1, 2, 3])
|
||||
exhit = iter(a)
|
||||
empit = iter(a)
|
||||
for x in exhit: # exhaust the iterator
|
||||
next(empit) # not exhausted
|
||||
a.append(9)
|
||||
self.assertEqual(list(exhit), [])
|
||||
self.assertEqual(list(empit), [9])
|
||||
self.assertEqual(a, self.type2test([1, 2, 3, 9]))
|
||||
|
|
|
@ -17,6 +17,7 @@ import unittest
|
|||
import test.support
|
||||
import test.string_tests
|
||||
import test.buffer_tests
|
||||
import test.list_tests
|
||||
from test.support import bigaddrspacetest, MAX_Py_ssize_t
|
||||
|
||||
|
||||
|
@ -1418,6 +1419,7 @@ class ByteArrayTest(BaseBytesTest, unittest.TestCase):
|
|||
b[:] = data
|
||||
self.assertEqual(list(it), [])
|
||||
|
||||
test_exhausted_iterator = test.list_tests.CommonTest.test_exhausted_iterator
|
||||
|
||||
class AssortedBytesTest(unittest.TestCase):
|
||||
#
|
||||
|
|
|
@ -190,6 +190,17 @@ class TestCase(unittest.TestCase):
|
|||
self.assertTrue(isinstance(it, collections.abc.Iterator))
|
||||
self.assertEqual(list(it), [])
|
||||
|
||||
def test_mutating_seq_class_exhausted_iter(self):
|
||||
a = SequenceClass(5)
|
||||
exhit = iter(a)
|
||||
empit = iter(a)
|
||||
for x in exhit: # exhaust the iterator
|
||||
next(empit) # not exhausted
|
||||
a.n = 7
|
||||
self.assertEqual(list(exhit), [])
|
||||
self.assertEqual(list(empit), [5, 6])
|
||||
self.assertEqual(list(a), [0, 1, 2, 3, 4, 5, 6])
|
||||
|
||||
# Test a new_style class with __iter__ but no next() method
|
||||
def test_new_style_iter_class(self):
|
||||
class IterClass(object):
|
||||
|
|
Loading…
Reference in New Issue