-- verifies an evaulator of expressions in PN (polish/prefix notation) -- expects evaluator as function "solution" -- returns true upon correct verification -- assert some stuff for better error messages assert(log, "log") function check(output, input) local s = tostring(solution(input)) assert(log, "log")("check "..s) if s == output then log("OK: "..input.." => "..output) else log("Oops: "..input.." => "..s.." (expected: "..output..")") error("verification failed") end end check("3", "+ 1 2") check("6", "* 2 3") return true