| #!../lua |
| |
| math.randomseed(0) |
| |
| collectgarbage("setstepmul", 180) |
| collectgarbage("setpause", 190) |
| |
| |
| --[=[ |
| example of a long [comment], |
| [[spanning several [lines]]] |
| |
| ]=] |
| |
| 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 |
| |
| |
| -- |
| -- redefine dofile to run files through dump/undump |
| -- |
| 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)) |