Files
sporel-lib-core.api-discove…/init.lua
Axel Meyer e69bcc4344 test: assertions for parse_readme_api (S2 Phase 1)
4 assertions: standard H3-pattern + no-API-section edge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 13:18:23 +02:00

64 lines
2.1 KiB
Lua

-- lib-core.api-discovery-test — Test-lib for lib-core.api-discovery
local api = require("lib-core.api-discovery")
local M = {}
function M.run_tests(ctx)
-- Assertions added in plan tasks 2-7.
-- ===== parse_lua_surface =====
do
local src = [[
local M = {}
M.foo = function(x) return x end
M.bar = function() end
M._private = function() end
local function not_in_M() end
return M
]]
local surface = api.parse_lua_surface(src)
engine.test.equals(#surface.public, 2, "parse_lua_surface: 2 public functions")
engine.test.equals(surface.public[1], "foo", "parse_lua_surface: first public is foo")
engine.test.equals(surface.public[2], "bar", "parse_lua_surface: second public is bar")
engine.test.equals(#surface.private, 1, "parse_lua_surface: 1 private function")
engine.test.equals(surface.private[1], "_private", "parse_lua_surface: private name = _private")
-- Edge: empty source
local empty = api.parse_lua_surface("local M = {}\nreturn M")
engine.test.equals(#empty.public, 0, "parse_lua_surface: empty source = no public")
engine.test.equals(#empty.private, 0, "parse_lua_surface: empty source = no private")
end
-- ===== parse_readme_api =====
do
local md = [[
# lib-core.input
Some abstract.
## API
### `input.bind(action_name, keys)`
**Syntax:** `input.bind(action_name: string, keys: string[]) → void`
### `input.is_action_down(action) → bool`
Description.
## Conventions
Stuff.
]]
local doc = api.parse_readme_api(md)
engine.test.equals(#doc.documented, 2, "parse_readme_api: 2 documented functions")
engine.test.equals(doc.documented[1], "bind", "parse_readme_api: first = bind")
engine.test.equals(doc.documented[2], "is_action_down", "parse_readme_api: second = is_action_down")
-- Edge: no API section
local no_api = api.parse_readme_api("# Just abstract\nNothing else.")
engine.test.equals(#no_api.documented, 0, "parse_readme_api: no API-section = empty")
end
engine.exit(engine.test.failures())
end
return M