64 lines
1.6 KiB
Lua
64 lines
1.6 KiB
Lua
|
|
-- unit tests for module() function
|
||
|
|
local ids = {}
|
||
|
|
local function id(obj)
|
||
|
|
if not obj or type(obj) == 'number' or type(obj) == 'string' then
|
||
|
|
return obj
|
||
|
|
end
|
||
|
|
local v = ids[obj]
|
||
|
|
if v then
|
||
|
|
return v
|
||
|
|
end
|
||
|
|
table.insert(ids,obj)
|
||
|
|
ids[obj] = type(obj)..'.'..tostring(#ids)
|
||
|
|
return ids[obj]
|
||
|
|
end
|
||
|
|
|
||
|
|
-- module tests
|
||
|
|
local pr = print
|
||
|
|
local pkg = package
|
||
|
|
local g = _G
|
||
|
|
local md = module
|
||
|
|
local rq = require
|
||
|
|
local sa = package.seeall
|
||
|
|
local gfe = getfenv
|
||
|
|
local gmt = getmetatable
|
||
|
|
local function envs()
|
||
|
|
return id(gfe(0)), id(gfe(1)), id(gfe(2)),
|
||
|
|
id(gmt(gfe(0))), id(gmt(gfe(1))), id(gmt(gfe(2)))
|
||
|
|
end
|
||
|
|
local function trymodule(name)
|
||
|
|
pr( '_G['..name..']', id(g[name]) )
|
||
|
|
pr( 'pkg.loaded['..name..']', id(pkg.loaded[name]) )
|
||
|
|
pr( 'envs', envs() )
|
||
|
|
md(name)
|
||
|
|
pr( 'envs', envs() )
|
||
|
|
pr( 'status,result', status, result )
|
||
|
|
pr( '_G['..name..']', id(g[name]) )
|
||
|
|
local t = pkg.loaded[name]
|
||
|
|
pr( 't=pkg.loaded['..name..']', id(t) )
|
||
|
|
pr( 't._M, t._NAME, t._PACKAGE', id(t._M), id(t._NAME), id(t._PACKAGE) )
|
||
|
|
pr( 'rq('..name..')', id( rq(name) ) )
|
||
|
|
pr( 'print', id(print) )
|
||
|
|
pr( 'seeall(t)', sa(t) )
|
||
|
|
pr( 'print, _G['..name..']', id(print), id(g[name]) )
|
||
|
|
end
|
||
|
|
trymodule('abc.def.ghi')
|
||
|
|
trymodule('abc.def.ghi')
|
||
|
|
trymodule('abc.def')
|
||
|
|
trymodule('abc.def.lmn')
|
||
|
|
trymodule('abc.def')
|
||
|
|
trymodule('abc')
|
||
|
|
package.loaded['opq.rst'] = {}
|
||
|
|
trymodule('opq.rst')
|
||
|
|
trymodule('opq.rst')
|
||
|
|
uvw = { xyz="x1y1z1" }
|
||
|
|
--print( "uvw", id(uvw) )
|
||
|
|
--print( "uvw.xyz", id(uvw.xyz) )
|
||
|
|
--print( "uvw.abc", id(uvw.abc) )
|
||
|
|
print( pcall( trymodule, 'uvw.xyz' ) )
|
||
|
|
print( pcall( trymodule, 'uvw' ) )
|
||
|
|
print( pcall( trymodule, 'uvw.abc' ) )
|
||
|
|
print( "uvw", id(uvw) )
|
||
|
|
print( "uvw.xyz", id(uvw.xyz) )
|
||
|
|
print( "uvw.abc", id(uvw.abc) )
|