diff options
Diffstat (limited to 'tests/micropython/viper_misc.py')
-rw-r--r-- | tests/micropython/viper_misc.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/tests/micropython/viper_misc.py b/tests/micropython/viper_misc.py index 25dd47355..e8b96b9c1 100644 --- a/tests/micropython/viper_misc.py +++ b/tests/micropython/viper_misc.py @@ -12,6 +12,25 @@ def viper_object(x:object, y:object) -> object: return x + y print(viper_object(1, 2)) +# return None as non-object (should return 0) +@micropython.viper +def viper_ret_none() -> int: + return None +print(viper_ret_none()) + +# 3 args +@micropython.viper +def viper_3args(a:int, b:int, c:int) -> int: + return a + b + c +print(viper_3args(1, 2, 3)) + +# 4 args +@micropython.viper +def viper_4args(a:int, b:int, c:int, d:int) -> int: + return a + b + c + d +# viper call with 4 args not yet supported +#print(viper_4args(1, 2, 3, 4)) + # a local (should have automatic type int) @micropython.viper def viper_local(x:int) -> int: @@ -25,6 +44,13 @@ def viper_no_annotation(x, y): return x * y print(viper_no_annotation(4, 5)) +# unsigned ints +@micropython.viper +def viper_uint() -> uint: + return uint(-1) +import sys +print(viper_uint() == (sys.maxsize << 1 | 1)) + # a for loop @micropython.viper def viper_for(a:int, b:int) -> int: @@ -48,6 +74,12 @@ def viper_print(x, y:int): print(x, y + 1) viper_print(1, 2) +# convert constants to objects in tuple +@micropython.viper +def viper_tuple_consts(x): + return (x, 1, False, True) +print(viper_tuple_consts(0)) + # making a tuple from an object and an int @micropython.viper def viper_tuple(x, y:int): @@ -75,11 +107,6 @@ try: except OSError as e: print(repr(e)) -# this doesn't work at the moment -#@micropython.viper -#def g() -> uint: -# return -1 - # calling GC after defining the function @micropython.viper def viper_gc() -> int: |