mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-12 16:31:05 +02:00
57 lines
2.2 KiB
Lua
57 lines
2.2 KiB
Lua
-- Parity test: the Pokedex entry page actually holds its front pic.
|
|
--
|
|
-- The pic load read
|
|
--
|
|
-- local ok, img = path and pcall(love.graphics.newImage, path)
|
|
--
|
|
-- which looks like a guarded pcall but is not one: `path and pcall(...)` is
|
|
-- an expression, so Lua adjusts it to a single value and `img` is always
|
|
-- nil. Every dex page drew its name, kind, height and description with an
|
|
-- empty pic box -- the starter previews in Oak's lab and every entry opened
|
|
-- from the Pokedex list alike (#307).
|
|
--
|
|
-- The guard has to be a statement for pcall's second return to survive.
|
|
-- This test would also catch a genuinely missing or unreadable sprite file,
|
|
-- which is the other way the box comes up empty.
|
|
--
|
|
-- Self-contained; run via `luajit tests/parity_dex_pic.lua`.
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
if not _G.love then _G.love = require("tests.love_stub") end
|
|
local S = require("tests.harness").suite("parity dex pic")
|
|
local check = S.check
|
|
|
|
local Data = require("src.core.Data")
|
|
if not Data.maps then Data:load() end
|
|
local Font = require("src.render.Font")
|
|
Font.load(Data)
|
|
|
|
local DexEntryMenu = require("src.ui.DexEntryMenu")
|
|
local SaveData = require("src.core.SaveData")
|
|
local Sprites = require("src.pokemon.Sprites")
|
|
local Sound = require("src.core.Sound")
|
|
|
|
Sound.playCry = function() end -- the page cries on open; stay silent here
|
|
|
|
local game = { data = Data, save = SaveData.newGame(),
|
|
stack = { push = function() end, pop = function() end,
|
|
top = function() end } }
|
|
|
|
-- the three starters (the lab preview path, StarterDex/forceOwned) plus a
|
|
-- plain list entry, so a regression in either caller shows up here
|
|
local CASES = {
|
|
{ "BULBASAUR", { species = "BULBASAUR", forceOwned = true } },
|
|
{ "CHARMANDER", { species = "CHARMANDER", forceOwned = true } },
|
|
{ "SQUIRTLE", { species = "SQUIRTLE", forceOwned = true } },
|
|
{ "PIDGEY", "PIDGEY" },
|
|
}
|
|
for _, case in ipairs(CASES) do
|
|
local species, arg = case[1], case[2]
|
|
local path = Sprites.path(Data, species, "front", { kind = "dex" })
|
|
check(type(path) == "string" and path ~= "",
|
|
species .. " resolves a front pic path")
|
|
local page = DexEntryMenu.new(game, arg)
|
|
check(page.sprite ~= nil, species .. " dex page holds its pic")
|
|
end
|
|
|
|
S.finish()
|