diff options
author | Damien George <damien.p.george@gmail.com> | 2019-12-22 23:47:15 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-12-27 12:34:22 +1100 |
commit | de8c04317be76222d2fbe7c5bf50ffd5ff2fd140 (patch) | |
tree | ae5712cfabbe27cfc0b1dc858506689e849ce140 /tests/micropython/heapalloc_yield_from.py | |
parent | aacd61893952af24049fd64f3735551ff9fc14ea (diff) |
tests/micropython: Add test for yield-from while heap is locked.
Diffstat (limited to 'tests/micropython/heapalloc_yield_from.py')
-rw-r--r-- | tests/micropython/heapalloc_yield_from.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/micropython/heapalloc_yield_from.py b/tests/micropython/heapalloc_yield_from.py new file mode 100644 index 000000000..8443210f3 --- /dev/null +++ b/tests/micropython/heapalloc_yield_from.py @@ -0,0 +1,31 @@ +# Check that yield-from can work without heap allocation + +import micropython + +# Yielding from a function generator +def sub_gen(a): + for i in range(a): + yield i +def gen(g): + yield from g +g = gen(sub_gen(4)) +micropython.heap_lock() +print(next(g)) +print(next(g)) +micropython.heap_unlock() + +# Yielding from a user iterator +class G: + def __init__(self): + self.value = 0 + def __iter__(self): + return self + def __next__(self): + v = self.value + self.value += 1 + return v +g = gen(G()) +micropython.heap_lock() +print(next(g)) +print(next(g)) +micropython.heap_unlock() |