mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-19 20:20:19 +02:00
81 lines
2.5 KiB
Lua
81 lines
2.5 KiB
Lua
-- Test returning to launcher from Gen 1 and Gen 2 on Android without closing the process
|
|
-- luajit tests/engine/android_exit_to_launcher_test.lua
|
|
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
local T = require("tests.harness")
|
|
local check, eq = T.check, T.eq
|
|
love = love or require("tests.love_stub")
|
|
|
|
local TitleState = require("src.ui.TitleState")
|
|
local Gen2MainMenu = require("src.ui.gen2.MainMenu")
|
|
local Runtime = require("src.mods.Runtime")
|
|
|
|
-- 1. Test Gen 1 TitleState onExit callback support
|
|
do
|
|
local exitCalled = false
|
|
local dummyGame = {
|
|
data = { field = {} },
|
|
stack = {
|
|
states = {},
|
|
push = function(self, state) table.insert(self.states, state) end,
|
|
top = function(self) return self.states[#self.states] end,
|
|
pop = function(self) return table.remove(self.states) end,
|
|
},
|
|
}
|
|
local state = TitleState.new(dummyGame, {
|
|
onExit = function()
|
|
exitCalled = true
|
|
end,
|
|
})
|
|
state:openMenu()
|
|
local menu = dummyGame.stack:top()
|
|
check(menu ~= nil, "TitleState:openMenu opens a menu")
|
|
local exitItem = nil
|
|
for _, item in ipairs(menu.items or {}) do
|
|
if tostring(item.label):find("EXIT", 1, true) then
|
|
exitItem = item
|
|
break
|
|
end
|
|
end
|
|
check(exitItem ~= nil, "Gen 1 TitleState menu contains an EXIT GAME item")
|
|
if exitItem and exitItem.onSelect then
|
|
exitItem.onSelect()
|
|
end
|
|
check(exitCalled, "Selecting EXIT GAME in Gen 1 TitleState invokes onExit callback")
|
|
end
|
|
|
|
-- 2. Test Gen 2 MainMenu onExit callback support
|
|
do
|
|
local exitCalled = false
|
|
local dummyGame2 = {
|
|
data = {},
|
|
stack = {
|
|
states = {},
|
|
push = function(self, state) table.insert(self.states, state) end,
|
|
top = function(self) return self.states[#self.states] end,
|
|
pop = function(self) return table.remove(self.states) end,
|
|
},
|
|
}
|
|
local menu = Gen2MainMenu.new(dummyGame2, {
|
|
hasSave = false,
|
|
onExit = function()
|
|
exitCalled = true
|
|
end,
|
|
})
|
|
menu:choose("exit")
|
|
check(exitCalled, "Selecting EXIT GAME in Gen 2 MainMenu invokes onExit callback")
|
|
end
|
|
|
|
-- 3. Test Runtime.reset restores NullEvents and NullHooks
|
|
do
|
|
Runtime.install({ emit = function() end }, { call = function() end }, { "err" })
|
|
check(Runtime.errors ~= nil, "Runtime has errors list after install")
|
|
Runtime.reset()
|
|
check(Runtime.errors == nil, "Runtime.reset clears errors")
|
|
check(Runtime.currentMod == nil, "Runtime.reset clears currentMod")
|
|
check(Runtime.modRequire == nil, "Runtime.reset clears modRequire")
|
|
end
|
|
|
|
T.finish("android_exit_to_launcher_test")
|