dbg/test.lua

53 lines
1.1 KiB
Lua

-- Test variable utils
local a, b, c = nil, "b", "c" -- luacheck: ignore
local function assert_vars(vartype, expected)
local vars = dbg[vartype](2)
local i = 0
for name, value in vars() do
assert(vars[name] == value)
assert(expected[i + 1] == name and expected[i + 2] == value)
vars[name] = 42
assert(vars[name] == 42)
vars[name] = value
assert(vars[name] == value)
i = i + 2
end
assert(i == #expected)
end
(function(c, e) -- luacheck: ignore
assert(a == nil)
assert(b == "b")
assert_vars("upvals", {
"a", a;
"b", b;
"assert_vars", assert_vars;
})
do
local upvals = dbg.upvals()
upvals.a = "a"
assert(upvals.a == "a" and a == "a")
end
local f, g = "f", "g"
assert_vars("locals", {
"c", c;
"e", e;
"f", f;
"g", g;
})
do
local locals = dbg.locals()
assert(locals.f == "f" and locals.g == "g")
locals.c, locals.e = "c", "e"
assert(locals.c == "c" and locals.e == "e" and c == "c" and e == "e")
end
assert_vars("vars", {
"a", a;
"b", b;
"assert_vars", assert_vars;
"c", c;
"e", e;
"f", f;
"g", g;
})
end)()