Source code for ewoksdata.tests.test_contextiterator

from ..data import contextiterator


[docs] def test_context_iterator(): exited = False @contextiterator.contextiterator def iterator(): nonlocal exited exited = False try: yield from [1, 2, 3] finally: exited = True # Use like a normal iterator it = iterator() assert next(it) == 1 assert not exited # Use like a context iterator with iterator() as it: assert next(it) == 1 assert not exited assert exited
[docs] def test_context_generator(): @contextiterator.contextiterator def generator(): nonlocal exited exited = False try: while True: x = yield yield x * 2 finally: exited = True # Use like a normal generator exited = False gen = generator() assert next(gen) is None # run up to first yield assert not exited assert gen.send(10) == 20 assert next(gen) is None assert gen.send(15) == 30 assert not exited # Use like a context iterator exited = False with generator() as gen: assert next(gen) is None assert not exited assert gen.send(10) == 20 assert next(gen) is None assert gen.send(15) == 30 assert not exited assert exited