From de8c04317be76222d2fbe7c5bf50ffd5ff2fd140 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 22 Dec 2019 23:47:15 +1100 Subject: [PATCH] tests/micropython: Add test for yield-from while heap is locked. --- tests/micropython/heapalloc_yield_from.py | 31 +++++++++++++++++++ tests/micropython/heapalloc_yield_from.py.exp | 4 +++ 2 files changed, 35 insertions(+) create mode 100644 tests/micropython/heapalloc_yield_from.py create mode 100644 tests/micropython/heapalloc_yield_from.py.exp diff --git a/tests/micropython/heapalloc_yield_from.py b/tests/micropython/heapalloc_yield_from.py new file mode 100644 index 0000000000..8443210f3a --- /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 0000000000..5565ed6787 --- /dev/null +++ b/tests/micropython/heapalloc_yield_from.py.exp @@ -0,0 +1,4 @@ +0 +1 +0 +1