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 | |
parent | aacd61893952af24049fd64f3735551ff9fc14ea (diff) |
tests/micropython: Add test for yield-from while heap is locked.
-rw-r--r-- | tests/micropython/heapalloc_yield_from.py | 31 | ||||
-rw-r--r-- | tests/micropython/heapalloc_yield_from.py.exp | 4 |
2 files changed, 35 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() diff --git a/tests/micropython/heapalloc_yield_from.py.exp b/tests/micropython/heapalloc_yield_from.py.exp new file mode 100644 index 000000000..5565ed678 --- /dev/null +++ b/tests/micropython/heapalloc_yield_from.py.exp @@ -0,0 +1,4 @@ +0 +1 +0 +1 |