aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/micropython/heapalloc_yield_from.py31
-rw-r--r--tests/micropython/heapalloc_yield_from.py.exp4
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