print("testing if-else expressions")
function True()
return true
end
function False()
return false
end
function EvalElseifChain(condition1, condition2, condition3)
return if condition1 then 10 elseif condition2 then 20 elseif condition3 then 30 else 40
end
function EvalElse_IfChain(condition1, condition2, condition3)
return if condition1 then 10 else if condition2 then 20 else if condition3 then 30 else 40
end
function CheckForConditionalEvaluation(condition)
local counter = 0
local function AddToCounter(count)
counter += count
return counter
end
local result = if condition then AddToCounter(7) else AddToCounter(17)
if condition then
assert(result == 7)
else
assert(result == 17)
end
assert(counter == result)
end
assert(if true then true else false)
assert(if false then false else true)
assert(if nil then false else true)
assert((7 + if true then 10 else 20) == 17)
assert(if True() then true else false)
assert(if False() then false else true)
assert(EvalElseifChain(false, false, false) == 40)
assert(EvalElseifChain(false, false, true) == 30)
assert(EvalElseifChain(false, true, false) == 20)
assert(EvalElseifChain(false, true, true) == 20)
assert(EvalElseifChain(true, false, false) == 10)
assert(EvalElseifChain(true, false, true) == 10)
assert(EvalElseifChain(true, true, false) == 10)
assert(EvalElseifChain(true, true, true) == 10)
assert(EvalElse_IfChain(false, false, false) == 40)
assert(EvalElse_IfChain(false, false, true) == 30)
assert(EvalElse_IfChain(false, true, false) == 20)
assert(EvalElse_IfChain(false, true, true) == 20)
assert(EvalElse_IfChain(true, false, false) == 10)
assert(EvalElse_IfChain(true, false, true) == 10)
assert(EvalElse_IfChain(true, true, false) == 10)
assert(EvalElse_IfChain(true, true, true) == 10)
assert((if (if True() then false else true) then 10 else 20) == 20)
assert((if if True() then false else true then 10 else 20) == 20)
CheckForConditionalEvaluation(true)
CheckForConditionalEvaluation(false)
return('OK')