summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ports/webassembly/fun_py_callback_js.mjs31
-rw-r--r--tests/ports/webassembly/fun_py_callback_js.mjs.exp8
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/ports/webassembly/fun_py_callback_js.mjs b/tests/ports/webassembly/fun_py_callback_js.mjs
new file mode 100644
index 000000000..5541e7a46
--- /dev/null
+++ b/tests/ports/webassembly/fun_py_callback_js.mjs
@@ -0,0 +1,31 @@
+// Test using Python functions as JS callbacks.
+
+const mp = await (await import(process.argv[2])).loadMicroPython();
+
+globalThis.asyncTimeout = (ms) =>
+ new Promise((resolve) => setTimeout(resolve, ms));
+
+mp.runPython(`
+import js
+
+def f0():
+ print("f0 run")
+
+async def f1():
+ print("f1 run")
+
+async def f2():
+ print("f2 start")
+ await js.asyncTimeout(0)
+ print("f2 end")
+
+async def f3():
+ print("f3 start")
+ await f2()
+ print("f3 end")
+
+js.setTimeout(f0, 0)
+js.setTimeout(f1, 50)
+js.setTimeout(f2, 100)
+js.setTimeout(f3, 150)
+`);
diff --git a/tests/ports/webassembly/fun_py_callback_js.mjs.exp b/tests/ports/webassembly/fun_py_callback_js.mjs.exp
new file mode 100644
index 000000000..732062c84
--- /dev/null
+++ b/tests/ports/webassembly/fun_py_callback_js.mjs.exp
@@ -0,0 +1,8 @@
+f0 run
+f1 run
+f2 start
+f2 end
+f3 start
+f2 start
+f2 end
+f3 end