summaryrefslogtreecommitdiff
path: root/tests/micropython
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython')
-rw-r--r--tests/micropython/viper_addr.py29
-rw-r--r--tests/micropython/viper_addr.py.exp6
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/micropython/viper_addr.py b/tests/micropython/viper_addr.py
new file mode 100644
index 000000000..cd953ce07
--- /dev/null
+++ b/tests/micropython/viper_addr.py
@@ -0,0 +1,29 @@
+# test passing addresses to viper
+
+@micropython.viper
+def get_addr(x:ptr) -> ptr:
+ return x
+
+@micropython.viper
+def memset(dest:ptr8, c:int, n:int):
+ for i in range(n):
+ dest[i] = c
+
+# create array and get its address
+ar = bytearray('0000')
+addr = get_addr(ar)
+print(type(ar))
+print(type(addr))
+print(ar)
+
+# pass array as an object
+memset(ar, ord('1'), len(ar))
+print(ar)
+
+# pass direct pointer to array buffer
+memset(addr, ord('2'), len(ar))
+print(ar)
+
+# pass direct pointer to array buffer, with offset
+memset(addr + 2, ord('3'), len(ar) - 2)
+print(ar)
diff --git a/tests/micropython/viper_addr.py.exp b/tests/micropython/viper_addr.py.exp
new file mode 100644
index 000000000..87a18e1e2
--- /dev/null
+++ b/tests/micropython/viper_addr.py.exp
@@ -0,0 +1,6 @@
+<class 'bytearray'>
+<class 'int'>
+bytearray(b'0000')
+bytearray(b'1111')
+bytearray(b'2222')
+bytearray(b'2233')