summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2024-06-17 23:32:09 +1000
committerDamien George <damien@micropython.org>2024-06-18 22:14:34 +1000
commita053e639147d97c4a306ab272c12d9520a80e805 (patch)
tree1dc4858902765a99b00078625e874fcc34a979a3 /tests
parent2b0e64beaf5998bae794d2d67827f70a8bf0fe74 (diff)
webassembly/objjsproxy: Implement proxying of JS iterable protocol.
This allows Python to iterate over JavaScript objects that provide Symbol.iterator. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/ports/webassembly/js_proxy_iterator.mjs14
-rw-r--r--tests/ports/webassembly/js_proxy_iterator.mjs.exp4
2 files changed, 18 insertions, 0 deletions
diff --git a/tests/ports/webassembly/js_proxy_iterator.mjs b/tests/ports/webassembly/js_proxy_iterator.mjs
new file mode 100644
index 000000000..34b54b483
--- /dev/null
+++ b/tests/ports/webassembly/js_proxy_iterator.mjs
@@ -0,0 +1,14 @@
+// Test accessing JavaScript iterables (objects with Symbol.iterator) from Python.
+
+const mp = await (await import(process.argv[2])).loadMicroPython();
+
+mp.runPython(`
+import js
+
+for v in js.Set.new([1, 2]):
+ print(v)
+
+url_search_params = js.URLSearchParams.new("one=1&two=2")
+for key in url_search_params.keys():
+ print(key, list(url_search_params.getAll(key)))
+`);
diff --git a/tests/ports/webassembly/js_proxy_iterator.mjs.exp b/tests/ports/webassembly/js_proxy_iterator.mjs.exp
new file mode 100644
index 000000000..e8d11286c
--- /dev/null
+++ b/tests/ports/webassembly/js_proxy_iterator.mjs.exp
@@ -0,0 +1,4 @@
+1
+2
+one ['1']
+two ['2']