summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--tests/micropython/heapalloc_inst_call.py31
-rw-r--r--tests/micropython/heapalloc_inst_call.py.exp4
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/micropython/heapalloc_inst_call.py b/tests/micropython/heapalloc_inst_call.py
new file mode 100644
index 0000000000..3cc497b73a
--- /dev/null
+++ b/tests/micropython/heapalloc_inst_call.py
@@ -0,0 +1,31 @@
+# Test that calling clazz.__call__() with up to at least 3 arguments
+# doesn't require heap allocation.
+import micropython
+
+class Foo0:
+ def __call__(self):
+ print("__call__")
+
+class Foo1:
+ def __call__(self, a):
+ print("__call__", a)
+
+class Foo2:
+ def __call__(self, a, b):
+ print("__call__", a, b)
+
+class Foo3:
+ def __call__(self, a, b, c):
+ print("__call__", a, b, c)
+
+f0 = Foo0()
+f1 = Foo1()
+f2 = Foo2()
+f3 = Foo3()
+
+micropython.heap_lock()
+f0()
+f1(1)
+f2(1, 2)
+f3(1, 2, 3)
+micropython.heap_unlock()
diff --git a/tests/micropython/heapalloc_inst_call.py.exp b/tests/micropython/heapalloc_inst_call.py.exp
new file mode 100644
index 0000000000..0b06bb2c94
--- /dev/null
+++ b/tests/micropython/heapalloc_inst_call.py.exp
@@ -0,0 +1,4 @@
+__call__
+__call__ 1
+__call__ 1 2
+__call__ 1 2 3