Lua runner with rich builtin stdlib
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
a/lua/test.lua

61 lines
2.0 KiB

-- Smoke-test for the stdlib extensions.
print("=== math ===")
print("round(2.5) =", math.round(2.5)) -- 3
print("round(2.567,2) =", math.round(2.567, 2)) -- 2.57
print("clamp(10,0,5) =", math.clamp(10, 0, 5)) -- 5
print("isFinite(1/0) =", math.isFinite(1 / 0)) -- false
print("isFinite(3.14) =", math.isFinite(3.14)) -- true
print("sign(-7) =", math.sign(-7)) -- -1
print("scale(5,0,10,0,100) =", math.scale(5, 0, 10, 0, 100)) -- 50.0
print("\n=== table ===")
local t = { 3, 1, 4, 1, 5 }
print("sum =", table.sum(t)) -- 14
print("min =", table.min(t)) -- 1
print("max =", table.max(t)) -- 5
print("mean =", table.mean(t)) -- 2.8
local evens = table.ifilter(t, function(v)
return v % 2 == 0
end)
print("evens =", table.concat(evens, ",")) -- 4
local doubled = table.map({ 1, 2, 3 }, function(v)
return v * 2
end)
print("doubled=", table.concat(doubled, ",")) -- 2,4,6
print("deepCopy ok:", table.deepCopy({ x = { y = 1 } }).x.y == 1)
print("merged =", table.concat(table.merge({ 1, 2 }, { 3, 4 }), ",")) -- 1,2,3,4
print("\n=== utils ===")
print("dump(nil) =", utils.dump(nil))
print("dump({1,2}) =", utils.dump({ 1, 2 }))
print("dump({x=1}) =", utils.dump({ x = 1 }))
print("isNull(NULL) =", utils.isNull(utils.NULL))
print("isNull(nil) =", utils.isNull(nil))
local json = utils.toJSON({ name = "Alice", age = 30, tags = { "a", "b" } })
print("toJSON =", json)
local parsed = utils.fromJSON(json)
print("fromJSON name=", parsed.name, "age=", parsed.age)
local v, err = utils.try(function()
return 42
end)
print("try ok: v=", v, "err=", err)
local v2, err2 = utils.try(function()
error("oops")
end)
print("try err: v=", v2, "err ~= nil:", err2 ~= nil)
print("\n=== os ===")
local t1 = os.microtime()
os.sleep(0.01)
local t2 = os.microtime()
print("microtime ok:", t2 > t1)
print("clock >= 0:", os.clock() >= 0)
print("\n=== log (set RUST_LOG=info to see output on stderr) ===")
log.info("hello from log.info")
log.warn("hello from log.warn")
print("\nAll checks passed.")