diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-05 22:27:12 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-05 22:27:12 +0100 |
commit | 5a04e2cca8255c2d4a1218d6ac0b38e67306206b (patch) | |
tree | b70ec6a20f17b7282828268725eb4faf915493e6 /tests/micropython/viper_misc.py | |
parent | 854c8c015303d709d3b33f5897dbeff0c10bee9d (diff) |
tests: Add check for micropython.native and then skip relevant tests.
If micropython.native decorator doesn't compile, then we skill all
native/viper tests.
This patch also re-enables the ujson_loads test on NT.
Addresses issue #861, and partially addresses issue #856.
Diffstat (limited to 'tests/micropython/viper_misc.py')
-rw-r--r-- | tests/micropython/viper_misc.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/micropython/viper_misc.py b/tests/micropython/viper_misc.py new file mode 100644 index 000000000..7e6ed67d4 --- /dev/null +++ b/tests/micropython/viper_misc.py @@ -0,0 +1,90 @@ +import micropython + +# viper function taking and returning ints +@micropython.viper +def viper_int(x:int, y:int) -> int: + return x + y + 3 +print(viper_int(1, 2)) + +# viper function taking and returning objects +@micropython.viper +def viper_object(x:object, y:object) -> object: + return x + y +print(viper_object(1, 2)) + +# a local (should have automatic type int) +@micropython.viper +def viper_local(x:int) -> int: + y = 4 + return x + y +print(viper_local(3)) + +# without type annotation, types should default to object +@micropython.viper +def viper_no_annotation(x, y): + return x * y +print(viper_no_annotation(4, 5)) + +# a for loop +@micropython.viper +def viper_for(a:int, b:int) -> int: + total = 0 + for x in range(a, b): + total += x + return total +print(viper_for(10, 10000)) + +# accessing a global +@micropython.viper +def viper_access_global(): + global gl + gl = 1 + return gl +print(viper_access_global(), gl) + +# calling print with object and int types +@micropython.viper +def viper_print(x, y:int): + print(x, y + 1) +viper_print(1, 2) + +# making a tuple from an object and an int +@micropython.viper +def viper_tuple(x, y:int): + return (x, y + 1) +print(viper_tuple(1, 2)) + +# making a list from an object and an int +@micropython.viper +def viper_list(x, y:int): + return [x, y + 1] +print(viper_list(1, 2)) + +# making a set from an object and an int +@micropython.viper +def viper_set(x, y:int): + return {x, y + 1} +print(sorted(list(viper_set(1, 2)))) + +# raising an exception +@micropython.viper +def viper_raise(x:int): + raise SystemError(x) +try: + viper_raise(1) +except SystemError 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: + return 1 +print(viper_gc()) +import gc +gc.collect() +print(viper_gc()) |