38 lines
1.8 KiB
Lua
38 lines
1.8 KiB
Lua
-- Exercise the real command through its slash handler with mocked profiling APIs.
|
|
ShaguDPS = {settings={}, window={}, parser={}, config={}, textures={}}
|
|
local now, snapshots, cpuSnapshots = 0, 0, 0
|
|
local messages, frames = {}, {}
|
|
DEFAULT_CHAT_FRAME = {AddMessage=function(self,s) table.insert(messages,s) end}
|
|
function CreateFrame()
|
|
local f={SetScript=function(self,key,fn) self[key]=fn end}
|
|
table.insert(frames,f)
|
|
return f
|
|
end
|
|
function GetTime() return now end
|
|
strlower=string.lower
|
|
SlashCmdList={}
|
|
local file=assert(io.open('settings.lua'))
|
|
local source=file:read('*a');file:close()
|
|
local start=assert(string.find(source,'-- Profiling is opt-in.',1,true))
|
|
assert(loadstring('local config, textures = ShaguDPS.config, ShaguDPS.textures\n' .. string.sub(source,start)))()
|
|
local function run() SlashCmdList.SHAGUMETER('perf') end
|
|
run()
|
|
assert(string.find(messages[1],'no addon profiling APIs',1,true))
|
|
UpdateAddOnMemoryUsage=function() snapshots=snapshots+1 end
|
|
GetAddOnMemoryUsage=function(name) assert(name=='ShaguDPS');return snapshots==1 and 100 or 120 end
|
|
GetCVar=function() return '0' end
|
|
run()
|
|
assert(snapshots==1)
|
|
now=9;frames[1].OnUpdate();assert(snapshots==1)
|
|
now=10;frames[1].OnUpdate();assert(snapshots==2 and frames[1].OnUpdate==nil)
|
|
assert(string.find(messages[table.getn(messages)],'120.0 KB (+20.0 KB',1,true))
|
|
UpdateAddOnCPUUsage=function() cpuSnapshots=cpuSnapshots+1 end
|
|
GetAddOnCPUUsage=function() return cpuSnapshots==1 and 50 or 75 end
|
|
GetCVar=function() return '1' end
|
|
run()
|
|
now=20;frames[1].OnUpdate()
|
|
assert(cpuSnapshots==2 and frames[1].OnUpdate==nil)
|
|
assert(string.find(messages[table.getn(messages)],'25.00 ms over 10.0s (2.50 ms/s)',1,true))
|
|
assert(snapshots==4, 'memory snapshots only at measurement boundaries')
|
|
print('Performance diagnostic checks passed (Lua 5.0)')
|