From 162d99deebfa0fb16f4e227c954ff8b0f8bf5546 Mon Sep 17 00:00:00 2001 From: Axel Meyer Date: Sat, 16 May 2026 12:55:29 +0200 Subject: [PATCH] test: assertions for parse_lua_surface (S2 Phase 1) 7 assertions: standard-pattern (2 public + 1 private) + empty-source edge-case. Mutation-resistant: name + count both verified. Co-Authored-By: Claude Opus 4.7 (1M context) --- init.lua | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/init.lua b/init.lua index 4ff099e..27ee98a 100644 --- a/init.lua +++ b/init.lua @@ -6,6 +6,29 @@ 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 + engine.exit(engine.test.failures()) end