Browse Source

tests/basics: Add tests for assignment operator :=.

pull/4908/head
Damien George 4 years ago
parent
commit
e0fe8ea644
  1. 29
      tests/basics/assign_expr.py
  2. 14
      tests/basics/assign_expr.py.exp
  3. 16
      tests/basics/assign_expr_syntaxerror.py
  4. 6
      tests/basics/assign_expr_syntaxerror.py.exp

29
tests/basics/assign_expr.py

@ -0,0 +1,29 @@
(x := 4)
print(x)
if x := 2:
print(True)
print(x)
print(4, x := 5)
print(x)
x = 1
print(x, x := 5, x)
print(x)
def foo():
print("any", any((hit := i) % 5 == 3 and (hit % 2) == 0 for i in range(10)))
return hit
hit = 123
print(foo())
print(hit) # shouldn't be changed by foo
print("any", any((hit := i) % 5 == 3 and (hit % 2) == 0 for i in range(10)))
print(hit) # should be changed by above
print([((m := k + 1), k * m) for k in range(4)])
print(m)

14
tests/basics/assign_expr.py.exp

@ -0,0 +1,14 @@
4
True
2
4 5
5
1 5 5
5
any True
8
123
any True
8
[(1, 0), (2, 2), (3, 6), (4, 12)]
4

16
tests/basics/assign_expr_syntaxerror.py

@ -0,0 +1,16 @@
# test SyntaxError with := operator
def test(code):
try:
print(eval(code))
except SyntaxError:
print('SyntaxError')
test("x := 1")
test("((x, y) := 1)")
# these are currently all allowed in MicroPython, but not in CPython
test("([i := i + 1 for i in range(4)])")
test("([i := -1 for i, j in [(1, 2)]])")
test("([[(i := j) for i in range(2)] for j in range(2)])")
test("([[(j := i) for i in range(2)] for j in range(2)])")

6
tests/basics/assign_expr_syntaxerror.py.exp

@ -0,0 +1,6 @@
SyntaxError
SyntaxError
[1, 2, 3, 4]
[-1]
[[0, 0], [1, 1]]
[[0, 1], [0, 1]]
Loading…
Cancel
Save