mirror of
https://github.com/bryanthaboi/gen1recomp
synced 2026-09-26 05:32:07 -04:00
87 lines
4.3 KiB
Lua
87 lines
4.3 KiB
Lua
-- Test suite for Game3 Pokédex Area & Where-to-Find extraction and rendering logic.
|
|
|
|
local Cache = require("tests.game3_cache")
|
|
Cache.mountOrSkip("game3_pokedex_area_test", "pokemon/pokedex/area_markers.lua")
|
|
|
|
local GameVersion = require("src.core.GameVersion")
|
|
GameVersion.set("firered")
|
|
|
|
local PokedexData = require("src.core.game3.pokedex_data")
|
|
assert(PokedexData.init(), "PokedexData should initialize successfully")
|
|
|
|
print("[test] 1. Dynamic wild area extraction for common Kanto species")
|
|
local pidgeyAreas = PokedexData.getWildAreasForSpecies(16)
|
|
assert(#pidgeyAreas > 0, "Pidgey (16) must have wild area locations")
|
|
local pidgeyHasRoute1 = false
|
|
for _, a in ipairs(pidgeyAreas) do
|
|
if a == "DEX_AREA_ROUTE_1" then pidgeyHasRoute1 = true end
|
|
assert(PokedexData.getAreaMarker(a) ~= nil, "Area marker for " .. a .. " must exist")
|
|
end
|
|
assert(pidgeyHasRoute1, "Pidgey must have DEX_AREA_ROUTE_1")
|
|
|
|
local rattataAreas = PokedexData.getWildAreasForSpecies(19)
|
|
assert(#rattataAreas > 0, "Rattata (19) must have wild area locations")
|
|
local rattataHasRoute22 = false
|
|
for _, a in ipairs(rattataAreas) do
|
|
if a == "DEX_AREA_ROUTE_22" then rattataHasRoute22 = true end
|
|
assert(PokedexData.getAreaMarker(a) ~= nil, "Area marker for " .. a .. " must exist")
|
|
end
|
|
assert(rattataHasRoute22, "Rattata must have DEX_AREA_ROUTE_22")
|
|
|
|
local pikachuAreas = PokedexData.getWildAreasForSpecies(25)
|
|
assert(#pikachuAreas >= 2, "Pikachu must have Viridian Forest and Power Plant")
|
|
local pikaViridian, pikaPower = false, false
|
|
for _, a in ipairs(pikachuAreas) do
|
|
if a == "DEX_AREA_VIRIDIAN_FOREST" then pikaViridian = true end
|
|
if a == "DEX_AREA_POWER_PLANT" then pikaPower = true end
|
|
end
|
|
assert(pikaViridian and pikaPower, "Pikachu must spawn in Viridian Forest and Power Plant")
|
|
|
|
local diglettAreas = PokedexData.getWildAreasForSpecies(50)
|
|
assert(#diglettAreas > 0, "Diglett (50) must have wild area locations")
|
|
assert(diglettAreas[1] == "DEX_AREA_DIGLETTS_CAVE", "Diglett must spawn in Diglett's Cave")
|
|
|
|
print("[test] 2. Sevii Island species wild area extraction and map assignment")
|
|
local dunsparceAreas = PokedexData.getWildAreasForSpecies(206)
|
|
assert(#dunsparceAreas > 0, "Dunsparce (206) must have wild area locations")
|
|
assert(dunsparceAreas[1] == "DEX_AREA_THREE_ISLE_PATH", "Dunsparce spawns in Three Isle Path")
|
|
assert(PokedexData.getAreaMapKey("DEX_AREA_THREE_ISLE_PATH") == "three_island", "Three Isle Path belongs to three_island")
|
|
|
|
local slugmaAreas = PokedexData.getWildAreasForSpecies(218)
|
|
assert(#slugmaAreas > 0, "Slugma (218) must have wild area locations")
|
|
assert(slugmaAreas[1] == "DEX_AREA_MT_EMBER", "Slugma spawns in Mt. Ember")
|
|
assert(PokedexData.getAreaMapKey("DEX_AREA_MT_EMBER") == "one_island", "Mt Ember belongs to one_island")
|
|
|
|
local phanpyAreas = PokedexData.getWildAreasForSpecies(231)
|
|
assert(#phanpyAreas > 0, "Phanpy (231) must have wild area locations")
|
|
assert(PokedexData.getAreaMapKey("DEX_AREA_SEVAULT_CANYON") == "seven_island", "Sevault Canyon belongs to seven_island")
|
|
|
|
print("[test] 3. Non-wild species return empty area table (Area Unknown)")
|
|
local bulbasaurAreas = PokedexData.getWildAreasForSpecies(1)
|
|
assert(#bulbasaurAreas == 0, "Starter Bulbasaur has no wild areas (Area Unknown)")
|
|
|
|
local mewtwoAreas = PokedexData.getWildAreasForSpecies(150)
|
|
assert(#mewtwoAreas == 0, "Mewtwo has no wild grass encounter table (Area Unknown)")
|
|
|
|
local deoxysAreas = PokedexData.getWildAreasForSpecies(386)
|
|
assert(#deoxysAreas == 0, "Deoxys has no wild grass encounter table (Area Unknown)")
|
|
|
|
print("[test] 4. All extracted markers have valid shape and coordinates")
|
|
local checkedCount = 0
|
|
for sp = 1, 386 do
|
|
local areas = PokedexData.getWildAreasForSpecies(sp)
|
|
for _, aKey in ipairs(areas) do
|
|
local m = PokedexData.getAreaMarker(aKey)
|
|
assert(m ~= nil, "Marker must exist for " .. aKey)
|
|
assert(type(m.x) == "number" and type(m.y) == "number", "Coordinates must be numbers for " .. aKey)
|
|
assert(type(m.shape) == "string", "Shape must be string for " .. aKey)
|
|
local mapKey = PokedexData.getAreaMapKey(aKey)
|
|
assert(type(mapKey) == "string", "Map key must be string for " .. aKey)
|
|
checkedCount = checkedCount + 1
|
|
end
|
|
end
|
|
assert(checkedCount > 100, "Should have verified > 100 area marker references")
|
|
print(string.format("OK: Verified %d area marker references across all species", checkedCount))
|
|
|
|
print("[ALL TESTS PASSED] Pokédex Area & Where-to-Find extraction is 100% verified.")
|