summaryrefslogtreecommitdiff
path: root/tests/micropython/heapalloc_yield_from.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython/heapalloc_yield_from.py')
-rw-r--r--tests/micropython/heapalloc_yield_from.py31
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()