mirror of
https://github.com/bryanthaboi/gen1recomp
synced 2026-09-26 13:33:27 -04:00
59 lines
2.4 KiB
Lua
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')
|