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

53 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.")