Files
gen1recomp/tests/save_compat/gen3_cache_selection_test.lua
T
2026-10-01 17:30:52 -04:00

36 lines
2.2 KiB
Lua

package.path = "./?.lua;./?/init.lua;" .. package.path
love = love or require("tests.love_stub")
local T = require("tests.harness")
local check, eq = T.check, T.eq
local GameVersion = require("src.core.GameVersion")
local SaveConvert = require("src.save_convert.SaveConvert")
local data = {
["data/generated/gba/meta.json"] = '{"import_id":"firered","version_id":"firered_1_0"}',
["data/generated/gba/pokemon/names.lua"] = 'return { [1] = "FIRE RED" }',
}
package.loaded["src.import.CacheFs"] = { prefix = "sentinel/", read = function() return nil end }
package.loaded["src.core.game3.dataset"] = { cache = function()
return { read = function(_, path) return data[path] end }
end }
GameVersion.set("firered")
eq(SaveConvert.gen3CacheTable("firered", "pokemon/names.lua")[1], "FIRE RED", "matching active edition data is available")
eq(SaveConvert.gen3CacheTable("emerald", "pokemon/names.lua"), nil, "Emerald cannot borrow FireRed data")
GameVersion.set("emerald")
eq(SaveConvert.gen3CacheTable("emerald", "pokemon/names.lua"), nil, "changing active edition cannot relabel stale data")
data["data/generated/gba/meta.json"] = '{"version":"emerald"}'
data["data/generated/gba/pokemon/names.lua"] = 'return { [1] = "EMERALD" }'
eq(SaveConvert.gen3CacheTable("emerald", "pokemon/names.lua")[1], "EMERALD", "verified Emerald metadata permits its data")
GameVersion.set("leafgreen")
data["data/generated/gba/meta.json"] = '{"import_id":"firered","version_id":"leafgreen_1_0"}'
data["data/generated/gba/pokemon/names.lua"] = 'return { [1] = "LEAF GREEN" }'
eq(SaveConvert.gen3CacheTable("leafgreen", "pokemon/names.lua")[1], "LEAF GREEN", "edition metadata outranks the shared FRLG importer id")
GameVersion.set("emerald")
SaveConvert.setGen3CacheDir("emerald", "/nonexistent")
eq(SaveConvert.gen3CacheTable("emerald", "pokemon/names.lua"), nil, "an explicit missing cache never borrows another source")
SaveConvert.setGen3CacheDir("emerald", nil)
eq(package.loaded["src.import.CacheFs"].prefix, "sentinel/", "cache selection restores launcher state")
data["data/generated/gba/meta.json"] = nil
eq(SaveConvert.gen3CacheTable("emerald", "pokemon/names.lua"), nil, "unidentified active cache is refused")
T.finish()