diff options
author | Krzysztof Blazewicz <blazewicz.krzysztof@gmail.com> | 2017-04-27 21:33:15 +0200 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-07-05 15:51:03 +1000 |
commit | 7feb7301b2cefd568fa65ee9907a1a179ea41f1c (patch) | |
tree | f205066834eb61a0c184d76919c3d3b64b4980ec /tests/basics/op_precedence.py | |
parent | 91a385db98711c2a9115ad661cb4d637450d7ee2 (diff) | |
download | micropython-7feb7301b2cefd568fa65ee9907a1a179ea41f1c.tar.gz micropython-7feb7301b2cefd568fa65ee9907a1a179ea41f1c.zip |
tests/basics: Add tests for arithmetic operators precedence.
Diffstat (limited to 'tests/basics/op_precedence.py')
-rw-r--r-- | tests/basics/op_precedence.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/basics/op_precedence.py b/tests/basics/op_precedence.py new file mode 100644 index 0000000000..519a2a1137 --- /dev/null +++ b/tests/basics/op_precedence.py @@ -0,0 +1,43 @@ +# see https://docs.python.org/3/reference/expressions.html#operator-precedence + +# '|' is the least binding numeric operator + +# '^' +# OK: 1 | (2 ^ 3) = 1 | 1 = 1 +# BAD: (1 | 2) ^ 3 = 3 ^ 3 = 0 +print(1 | 2 ^ 3) + +# '&' +# OK: 3 ^ (2 & 1) = 3 ^ 0 = 3 +# BAD: (3 ^ 2) & 1 = 1 & 1 = 1 +print(3 ^ 2 & 1) + +# '<<', '>>' +# OK: 2 & (3 << 1) = 2 & 6 = 2 +# BAD: (2 & 3) << 1 = 2 << 1 = 4 +print(2 & 3 << 1) +# OK: 6 & (4 >> 1) = 6 & 2 = 2 +# BAD: (6 & 4) >> 1 = 2 >> 1 = 1 +print(6 & 4 >> 1) + +# '+', '-' +# OK: 1 << (1 + 1) = 1 << 2 = 4 +# BAD: (1 << 1) + 1 = 2 + 1 = 3 +print(1 << 1 + 1) + +# '*', '/', '//', '%' +# OK: 2 + (2 * 2) = 2 + 4 = 6 +# BAD: (2 + 2) * 2 = 4 * 2 = 8 +print(2 + 2 * 2) + +# '+x', '-x', '~x' + +# '**' +# OK: -(2**2) = -4 +# BAD: (-2)**2 = 4 +print(-2**2) +# OK: 2**(-1) = 0.5 +print(2**-1) + +# (expr...) +print((2 + 2) * 2) |