Files
gen1recomp/tests/engine/gen2_pokegear_paper_bug1885.lua

86 lines
3.3 KiB
Lua

-- engine/pokegear/pokegear.asm (#1885)
package.path = "./?.lua;./?/init.lua;" .. package.path
local T = require("tests.harness")
local check = T.check
love = love or require("tests.love_stub")
local Chrome = require("src.ui.gen2.Chrome")
local Pokegear = require("src.ui.gen2.Pokegear")
local CREAM = { 224, 248, 160 }
local PALS = { { CREAM, { 168, 168, 168 }, { 84, 84, 84 }, { 0, 0, 0 } } }
local runs, cursors, plain
local function spy(fn)
runs, cursors, plain = {}, {}, 0
local print_, through, cursor, cursorThrough =
Chrome.print, Chrome.printThrough, Chrome.cursor, Chrome.cursorThrough
Chrome.print = function() plain = plain + 1 end
Chrome.printThrough = function(text, tx, ty, palette)
runs[#runs + 1] = { text = text, tx = tx, ty = ty, palette = palette }
end
Chrome.cursor = function() plain = plain + 1 end
Chrome.cursorThrough = function(tx, ty, palette)
cursors[#cursors + 1] = { tx = tx, ty = ty, palette = palette }
end
local ok, err = pcall(fn)
Chrome.print, Chrome.printThrough = print_, through
Chrome.cursor, Chrome.cursorThrough = cursor, cursorThrough
if not ok then error(err, 0) end
end
local function newGear()
local gear = setmetatable({}, { __index = Pokegear })
gear.pals = function() return PALS end
gear.paperColor = function() return CREAM end
return gear
end
local gear = newGear()
spy(function() gear:printBoxText("Press any button to exit.") end)
check(#runs == 2, "the exit prompt is two runs")
check(runs[1] and runs[1].text == "Press any button", "the first line as printed")
check(runs[1] and runs[1].tx == 1 and runs[1].ty == 14, "at (1,14)")
check(runs[2] and runs[2].ty == 16, "and the second two rows under it")
check(runs[1] and runs[1].palette == PALS[1], "both on the gear's cream paper")
check(runs[2] and runs[2].palette == PALS[1], "not Chrome's white box palette")
check(plain == 0, "and nothing goes through the white printer")
local clock = newGear()
clock.clockParts = function() return 15, 47, 5 end
clock.drawTilemap = function() end
clock.drawStrip = function() end
clock.textbox = function() end
clock.phoneText = function() return "Press any button to exit." end
spy(function() clock:drawClock() end)
check(runs[1] and runs[1].text == " SWITCH" and runs[1].tx == 12,
"SWITCH is placed at column 12 with its leading space")
check(#cursors == 1 and cursors[1].tx == 19 and cursors[1].ty == 1,
"its arrow sits at (19,1)")
check(cursors[1] and cursors[1].palette == PALS[1],
"and wears the cream paper too")
check(plain == 0, "no white cell anywhere on the clock card")
local radio = newGear()
radio.ensureTuned = function() end
radio.drawTilemap = function() end
radio.drawStrip = function() end
radio.drawTuningKnob = function() end
radio.textbox = function() end
radio.currentStation = function()
return { name = "OAK's PKMN Talk", station = "OAKS_POKEMON_TALK" }
end
radio.radio = { top = "... ...Ahem, we are", bottom = "TEAM ROCKET!" }
spy(function() radio:drawRadio() end)
check(runs[2] and runs[2].text == "... ...Ahem, we are" and runs[2].ty == 14,
"the show's top line lands on row 14")
check(runs[3] and runs[3].text == "TEAM ROCKET!" and runs[3].ty == 16,
"and the bottom line on row 16")
check(runs[2] and runs[2].palette == PALS[1], "on cream, like the station name")
check(plain == 0, "with no white bar behind the speech")
T.finish("gen2 pokegear paper bug 1885")