Skip to content

Commit fb5520a

Browse files
committed
Add tests
1 parent 5b6dda6 commit fb5520a

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

mypyc/test-data/run-generators.test

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,6 @@ def test_basic() -> None:
681681
assert context.x == 1
682682
assert context.x == 0
683683

684-
685684
[case testYieldSpill]
686685
from typing import Generator
687686
from testutil import run_generator
@@ -697,3 +696,47 @@ def test_basic() -> None:
697696
yields, val = x
698697
assert yields == ('foo',)
699698
assert val == 3, val
699+
700+
[case testGeneratorReuse]
701+
from typing import Iterator
702+
703+
def gen(x: list[int]) -> Iterator[list[int]]:
704+
y = [9]
705+
for z in x:
706+
yield y + [z]
707+
yield y
708+
709+
def gen_range(n: int) -> Iterator[int]:
710+
for x in range(n):
711+
yield x
712+
713+
def test_use_generator_multiple_times_one_at_a_time() -> None:
714+
for i in range(100):
715+
a = []
716+
for x in gen([2, i]):
717+
a.append(x)
718+
assert a == [[9, 2], [9, i], [9]]
719+
720+
def test_use_multiple_generator_instances_at_same_time() -> None:
721+
a = []
722+
for x in gen([2]):
723+
a.append(x)
724+
for y in gen([3, 4]):
725+
a.append(y)
726+
assert a == [[9, 2], [9, 3], [9, 4], [9], [9], [9, 3], [9, 4], [9]]
727+
728+
def test_use_multiple_generator_instances_at_same_time_2() -> None:
729+
a = []
730+
for x in gen_range(2):
731+
a.append(x)
732+
b = []
733+
for y in gen_range(3):
734+
b.append(y)
735+
c = []
736+
for z in gen_range(4):
737+
c.append(z)
738+
assert c == [0, 1, 2, 3]
739+
assert b == [0, 1, 2]
740+
assert a == [0, 1]
741+
assert list(gen_range(5)) == list(range(5))
742+

0 commit comments

Comments
 (0)