-- Kør: luajit tests/test_adProfiler.lua (fra repo-roden) local failures = 0 local function check(name, actual, expected) if actual == expected then print("OK " .. name) else failures = failures + 1 print(string.format("FAIL %s: forventede %s, fik %s", name, tostring(expected), tostring(actual))) end end local lines = {} Logging = {info = function(fmt, ...) table.insert(lines, string.format(fmt, ...)) end} local clock = 0 function netGetTime() return clock end dofile("FS25_ADSmartPickup/adProfiler.lua") local Module = {} function Module.slow(a, b) clock = clock + 5; return a + b, "ok" end function Module.fast() clock = clock + 0.1 end ADProfiler.wrap(Module, "slow", "langsom") ADProfiler.wrap(Module, "fast", "hurtig") local sum, text = Module.slow(2, 3) check("P1 returværdier bevares", sum, 5); check("P1 anden returværdi", text, "ok") Module.fast() check("P2 kald talt", ADProfiler.stats["langsom"].calls, 1) check("P2 max", ADProfiler.stats["langsom"].max, 5) ADProfiler.frame(0) check("P3 værste frame", ADProfiler.worstFrameMs, 5.1) ADProfiler.frame(61000) check("P4 rapport skrevet", #lines, 1) check("P4 langsom først", lines[1]:find("langsom max 5.0", 1, true) ~= nil, true) check("P4 nulstillet", next(ADProfiler.stats), nil) -- intet over 2 ms -> ingen rapport Module.fast(); ADProfiler.frame(62000); ADProfiler.frame(130000) check("P5 stille minut -> ingen linje", #lines, 1) -- fejl i indpakket funktion: dybden nulstilles næste frame function Module.boom() error("x") end ADProfiler.wrap(Module, "boom", "fejl") pcall(Module.boom) ADProfiler.frame(131000) check("P6 dybde nulstillet", ADProfiler.depth, 0) print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)