tests/basics: Add tests for assignment operator :=.
This commit is contained in:
parent
2c5993c59e
commit
e0fe8ea644
|
@ -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)
|
|
@ -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
|
|
@ -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)])")
|
|
@ -0,0 +1,6 @@
|
|||
SyntaxError
|
||||
SyntaxError
|
||||
[1, 2, 3, 4]
|
||||
[-1]
|
||||
[[0, 0], [1, 1]]
|
||||
[[0, 1], [0, 1]]
|
Loading…
Reference in New Issue