summaryrefslogtreecommitdiff
path: root/tests/micropython/viper_binop_bitwise_uint.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/micropython/viper_binop_bitwise_uint.py')
-rw-r--r--tests/micropython/viper_binop_bitwise_uint.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/micropython/viper_binop_bitwise_uint.py b/tests/micropython/viper_binop_bitwise_uint.py
new file mode 100644
index 000000000..3bc7ba8d1
--- /dev/null
+++ b/tests/micropython/viper_binop_bitwise_uint.py
@@ -0,0 +1,58 @@
+# test bitwise operators on uint type
+
+
+@micropython.viper
+def shl(x: uint, y: uint) -> uint:
+ return x << y
+
+
+print("shl")
+print(shl(1, 0))
+print(shl(1, 30))
+print(shl(-1, 10) & 0xFFFFFFFF)
+
+
+@micropython.viper
+def shr(x: uint, y: uint) -> uint:
+ return x >> y
+
+
+print("shr")
+print(shr(1, 0))
+print(shr(16, 3))
+print(shr(-1, 1) in (0x7FFFFFFF, 0x7FFFFFFF_FFFFFFFF))
+
+
+@micropython.viper
+def and_(x: uint, y: uint):
+ return x & y, y & x
+
+
+print("and")
+print(*and_(1, 0))
+print(*and_(1, 3))
+print(*and_(-1, 2))
+print(*(x & 0xFFFFFFFF for x in and_(-1, -2)))
+
+
+@micropython.viper
+def or_(x: uint, y: uint):
+ return x | y, y | x
+
+
+print("or")
+print(*or_(1, 0))
+print(*or_(1, 2))
+print(*(x & 0xFFFFFFFF for x in or_(-1, 2)))
+
+
+@micropython.viper
+def xor(x: uint, y: uint):
+ return x ^ y, y ^ x
+
+
+print("xor")
+print(*xor(1, 0))
+print(*xor(1, 3))
+print(*(x & 0xFFFFFFFF for x in xor(-1, 3)))
+print(*xor(-1, -3))