Files
sporel-lib-core.maps-test/init.lua
Axel Meyer 8ef586f930 feat(maps-test): migrate to test-lib (manifest.lib + run_tests) (Test-Opt Phase 3.1)
Per ADR-0037 Tests-as-Libs Convention.

- manifest.module -> manifest.lib with role: 'test'
- init(ctx) -> M.run_tests(ctx) entry-point export
- No assertion-body change

Repo renamed on Gitea: sporel-module-lib-core.maps-test -> sporel-lib-core.maps-test
Local moved: sporel-modules/lib-core.maps-test/ -> sporel-libs/lib-core/maps-test/
History preserved.
2026-05-16 01:16:30 +02:00

42 lines
1.6 KiB
Lua

-- =====================================================================
-- lib-core.maps-test — Reference test-lib (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")
local M = {}
function M.run_tests(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
return M