Files
pyscript/core/tests/python/tests/test_ffi.py
Nicholas Tollervey 9dad29ec17 Refactor repository. Fixes #2161 (#2192)
* Remove duplicate LICENSE.
* Remove un-userd pyscript.sw directory and its content.
* Remove ReadTheDocs settings (unused).
* Remove un-used pyproject.toml
* Remove now unused CHANGELOG. Changes now tracked via release notes on GitHub.
* Updated / cleaned release page template and associated GH actions.
* Update prettierignore to remove un-needed refs.
* Move troubleshooting into correct README.
* Add reason for the index.html
* Rename the "pyscript.core" directory to "core".
* Update PR template because CHANGELOG is no longer used.
* Codespell configuration in pyproject.toml.
* Update pyscript.core -> core in .githubignore
* Remove test-results/.last-run.json. This should be ignored by git.
* Pin nodejs version.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-09-30 10:29:26 +01:00

41 lines
969 B
Python

"""
Exercise (as much as is possible) the pyscript.ffi namespace.
"""
import upytest
from pyscript import ffi
def test_create_proxy():
"""
The create_proxy function should return a proxy object that is callable.
"""
def func():
return 42
proxy = ffi.create_proxy(func)
assert proxy() == 42
if upytest.is_micropython:
from jsffi import JsProxy
else:
from pyodide.ffi import JsProxy
assert isinstance(proxy, JsProxy)
def test_to_js():
"""
The to_js function should convert a Python object to a JavaScript object.
In this instance, a Python dict should be converted to a JavaScript object
represented by a JsProxy object.
"""
obj = {"a": 1, "b": 2}
js_obj = ffi.to_js(obj)
assert js_obj.a == 1
assert js_obj.b == 2
if upytest.is_micropython:
from jsffi import JsProxy
else:
from pyodide.ffi import JsProxy
assert isinstance(js_obj, JsProxy)