pocketlang/tests/lang/controlflow.pk

76 lines
1.4 KiB
Plaintext
Raw Normal View History

2021-06-02 17:33:29 +08:00
## If statements.
variable = null ## Will be changed by the control flow.
unreachable = function assert(false, 'Unreachable') end
2021-05-22 21:27:40 +08:00
if true then variable = 42 else unreachable() end
assert(variable == 42, 'If statement failed.')
if false then unreachable()
else if true then variable = null
else unreachable() end
assert(variable == null)
if false then unreachable()
else if false then unreachable()
else if false then unreachable()
else variable = "changed" end
assert(variable == "changed")
if false then unreachable()
else if true
if false
unreachable()
else if true
variable = 123
else
unreachable()
end
end
assert(variable == 123, 'Nested if statement failed.')
2021-06-02 17:33:29 +08:00
## While statements
while true
variable = 1212
if true then break end
end
assert(variable == 1212)
while true
variable = 22
if true then else if false then end
2021-06-02 17:33:29 +08:00
if false
else if true
2021-06-02 17:33:29 +08:00
variable += 2300
end
variable += 1
break
end
assert(variable == 2323)
2021-06-12 14:56:09 +08:00
map = { 'a':10, 'b':12, 'c':32 }; sum = 0
for k in map
sum += map[k]
end
assert(sum == 54)
val = 2
if val == 1 then val = null
else if val == 2 then val = 'foo'
else val = null
end
assert(val == 'foo')
val = 2
if val == 1 then val = null
else
if val == 2 then val = 'bar'
end ##< Need an extra end since 'else if' != 'else \n if'.
end
assert(val == 'bar')
2021-06-12 14:56:09 +08:00
2021-06-16 02:54:30 +08:00
# If we got here, that means all test were passed.
print('All TESTS PASSED')