-- ===================================================================== -- lib-core.maps-test — Reference test-module (P.3.1) -- Validates lib-core.maps API contracts via engine.test.* assertions. -- See: meta/docs/superpowers/specs/2026-05-10-test-module-pattern-design.md -- ===================================================================== local maps = require("lib-core.maps") function init(ctx) -- Setup local demo_map = maps.load("maps/demo.map.json") maps.set_current(demo_map) -- Geometry assertions local size = maps.size() engine.test.equals(size.w, 16, "map width = 16") engine.test.equals(size.h, 16, "map height = 16") engine.test.equals(maps.tile_size(), 32, "tile_size = 32") -- Tile lookup + walkability engine.test.equals(maps.tile_at(0, 0).id, "stone", "tile_at(0,0) is stone") engine.test.equals(maps.tile_at(5, 5).id, "grass", "tile_at(5,5) is grass") engine.test.assert(not maps.is_walkable(0, 0), "stone border non-walkable") engine.test.assert(maps.is_walkable(5, 5), "grass interior walkable") -- Arity-flex tile_at: 3-arg with nil map_id falls back to current_map (P.2.1) engine.test.equals(maps.tile_at(nil, 5, 5).id, "grass", "tile_at 3-arg nil-fallback") -- Out-of-bounds returns nil engine.test.equals(maps.tile_at(-1, 0), nil, "tile_at OOB negative tx returns nil") engine.test.equals(maps.tile_at(0, 16), nil, "tile_at OOB ty=size.h returns nil") -- list() returns registered map-id local list = maps.list() engine.test.equals(#list, 1, "maps.list returns 1 registered map") engine.exit(engine.test.failures()) end