local root=(arg[1] or '.')..'/' local methods={} local function object() return setmetatable({scripts={}}, {__index=function(t,k) return methods[k] or function() end end}) end function methods:SetScript(k,v) self.scripts[k]=v end function methods:CreateTexture() return object() end function methods:CreateFontString() return object() end function methods:SetPoint(...) self.point=arg end function methods:ClearAllPoints() self.point=nil end UIParent=object();CastingBarFrame=object() CreateFrame=function(_,name) local f=object();if name then _G[name]=f end;return f end ShaguTweaks={T=setmetatable({},{__index=function(t,k) return k end}),GetGlobalEnv=function() return _G end} dofile(root..'api.lua') function ShaguTweaks:register() error('Cast-bar checkbox must not be registered') end ShaguTweaks_config={['Movable Cast Bar']=0,CastBarPosition={123,234}} local f=assert(io.open(root..'main.lua'));local source=f:read('*a');f:close();assert(loadstring(source)) local a=assert(string.find(source,' if expansion == "vanilla" and ShaguTweaks.EnableCastBarMover then',1,true)) local b=assert(string.find(source,'\n end',a,true)) local initialize=assert(loadstring('local expansion="vanilla"\n'..string.sub(source,a,b+5))) dofile(root..'mods/castbar-move.lua') initialize() assert(ShaguTweaksCastBarMover) assert(CastingBarFrame.point[4]==123 and CastingBarFrame.point[5]==234) CastingBarFrame:SetPoint('BOTTOM',UIParent,'BOTTOM',1,2) assert(CastingBarFrame.point[4]==123) local mover=ShaguTweaksCastBarMover initialize();assert(ShaguTweaksCastBarMover==mover) arg1='RightButton';mover.scripts.OnMouseUp() assert(not ShaguTweaks_config.CastBarPosition and CastingBarFrame.point[5]==60) print('Always-on cast-bar mover: old disabled flag ignored, no checkbox, saved position, idempotent initialization and reset passed')