Files
2026-09-22 11:44:50 -04:00

59 lines
2.4 KiB
Lua

package.path = './?.lua;./?/init.lua;' .. package.path
local T = require('tests.harness')
love = require('tests.love_stub')
local SaveData = require('src.core.SaveData')
local files, writes, w, h, flags, fail = {}, 0, 960, 720, {fullscreen=false,display=1}, false
local desktopW, desktopH, osName = 1920, 1080, 'Linux'
local fs = {read=function(p)return files[p]end, write=function(p,b)files[p]=b;writes=writes+1;return true end}
SaveData.portableFs=function()return fs end
love.system.getOS=function()return osName end
love.window={getMode=function()return w,h,flags end,
getDesktopDimensions=function()return desktopW,desktopH end,
setMode=function(nw,nh,nf)
if fail then return false end
flags={};for k,v in pairs(nf)do flags[k]=v end
w,h=nw,nh
if flags.fullscreen then w,h=desktopW,desktopH end
return true
end}
local function reload()
package.loaded['src.import.LauncherWindow']=nil
return require('src.import.LauncherWindow')
end
local Window=reload()
Window.activate()
T.eq(Window.mode(),'windowed','defaults to windowed')
w,h=1234,876
local before=writes
Window.observe(0.1)
T.eq(writes,before,'resize writes are debounced')
Window.observe(0.4)
T.eq(writes,before+1,'resize persists after settling')
Window=reload();w,h=960,720;Window.activate()
T.eq(w,1234,'next launch restores width')
T.eq(h,876,'next launch restores height')
Window.toggle()
T.eq(flags.fullscreen,true,'fullscreen applies immediately')
Window.observe(1)
Window=reload();Window.activate()
T.eq(Window.mode(),'fullscreen','fullscreen survives restart')
Window.toggle()
T.eq(w,1234,'fullscreen keeps remembered window width')
T.eq(h,876,'fullscreen keeps remembered window height')
desktopW,desktopH=800,600
Window=reload();Window.activate()
T.check(w<=800 and h<=600,'larger saved window fits smaller display')
T.check(w<800 and h<600,'leaves room for desktop window chrome')
local previous=Window.mode()
fail=true
T.eq(Window.toggle(),false,'failed mode switch reports failure')
T.eq(Window.mode(),previous,'failed mode switch does not change preference')
fail=false
files['launcher-window.cfg']='not a valid config'
Window=reload();Window.activate()
T.eq(Window.mode(),'windowed','invalid preferences safely default')
osName='Android';before=writes
Window=reload();Window.activate();Window.observe(1);Window.toggle()
T.eq(writes,before,'fixed mobile display does not write window preferences')
T.finish('launcher window')