math.randomseed(0)
collectgarbage("setstepmul", 180)
collectgarbage("setpause", 190)
print("current path:\n " .. string.gsub(package.path, ";", "\n "))
local msgs = {}
function Message(m)
print(m)
msgs[#msgs + 1] = string.sub(m, 3, -3)
end
local c = os.clock()
assert(os.setlocale "C")
local T, print, gcinfo, format, write, assert, type =
T, print, gcinfo, string.format, io.write, assert, type
local function formatmem(m)
if m < 1024 then return m
else
m = m / 1024 - m / 1024 % 1
if m < 1024 then return m .. "K"
else
m = m / 1024 - m / 1024 % 1
return m .. "M"
end
end
end
local showmem = function()
if not T then
print(format(" ---- total memory: %s ----\n", formatmem(gcinfo())))
else
T.checkmemory()
local a, b, c = T.totalmem()
local d, e = gcinfo()
print(format(
"\n ---- total memory: %s (%dK), max use: %s, blocks: %d\n",
formatmem(a), d, formatmem(c), b))
end
end
dofile = function(n)
showmem()
local f = assert(loadfile(n))
local b = string.dump(f)
f = assert(loadstring(b))
return f()
end
dofile('main.lua')
do
local u = newproxy(true)
local newproxy, stderr = newproxy, io.stderr
getmetatable(u).__gc = function(o)
stderr:write '.'
newproxy(o)
end
end
local f = assert(loadfile('gc.lua'))
f()
dofile('db.lua')
assert(dofile('calls.lua') == deep and deep)
dofile('strings.lua')
dofile('literals.lua')
assert(dofile('attrib.lua') == 27)
assert(dofile('locals.lua') == 5)
dofile('constructs.lua')
dofile('code.lua')
do
local f = coroutine.wrap(assert(loadfile('big.lua')))
assert(f() == 'b')
assert(f() == 'a')
end
dofile('nextvar.lua')
dofile('pm.lua')
dofile('api.lua')
assert(dofile('events.lua') == 12)
dofile('vararg.lua')
dofile('closure.lua')
dofile('errors.lua')
dofile('math.lua')
dofile('sort.lua')
assert(dofile('verybig.lua') == 10);
collectgarbage()
dofile('files.lua')
if #msgs > 0 then
print("\ntests not performed:")
for i = 1, #msgs do
print(msgs[i])
end
print()
end
print("final OK !!!")
print('cleaning all!!!!')
debug.sethook(function(a) assert(type(a) == 'string') end, "cr")
local _G, collectgarbage, showmem, print, format, clock =
_G, collectgarbage, showmem, print, format, os.clock
local a = {}
for n in pairs(_G) do a[n] = 1 end
a.tostring = nil
a.___Glob = nil
for n in pairs(a) do _G[n] = nil end
a = nil
collectgarbage()
collectgarbage()
collectgarbage()
collectgarbage()
collectgarbage()
collectgarbage();
showmem()
print(format("\n\ntotal time: %.2f\n", clock() - c))