summaryrefslogtreecommitdiff
path: root/tests/micropython/heapalloc_inst_call.py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-12-25 00:50:27 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-12-25 00:50:27 +0300
commit05aebb920614cad89b4a626b02e74eb334b732aa (patch)
treee2289d6cba9d1a655121d474e796456b1297d526 /tests/micropython/heapalloc_inst_call.py
parent492c612f9d2b552cedca6cd7202c768b26585ed3 (diff)
tests/heapalloc_inst_call: Test for no alloc for simple object calls.
Diffstat (limited to 'tests/micropython/heapalloc_inst_call.py')
-rw-r--r--tests/micropython/heapalloc_inst_call.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/micropython/heapalloc_inst_call.py b/tests/micropython/heapalloc_inst_call.py
new file mode 100644
index 000000000..3cc497b73
--- /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()