From b27911484e61169392a9e2006d31d5656df9dbb9 Mon Sep 17 00:00:00 2001 From: Calic Date: Tue, 12 May 2026 23:15:50 +0200 Subject: [PATCH] =?UTF-8?q?test(P.3.4):=20initial=20=E2=80=94=20lib-sporel?= =?UTF-8?q?.launcher-test=20v0.1.0=20(12=20assertions,=20P.3.1=20pattern)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- init.lua | 26 ++++++++++++++++++++++++++ manifest.core | 6 ++++++ manifest.module | 11 +++++++++++ 3 files changed, 43 insertions(+) create mode 100644 init.lua create mode 100644 manifest.core create mode 100644 manifest.module diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..bab4fe6 --- /dev/null +++ b/init.lua @@ -0,0 +1,26 @@ +-- lib-sporel.launcher-test — P.3.4 +-- 12 assertions: 5 FSM transitions + 1 FSM stability + 6 Engine-Surface existence. +-- Pattern follows P.3.1 Test-Module-Pattern; TAP output via engine.test.* + +local fsm = dofile(engine.module.dir_of("lib-sporel.launcher") .. "/fsm.lua") + +function init(ctx) + -- FSM transitions (5) + engine.test.equals(fsm.next(fsm.STATE_LIST, "esc"), fsm.STATE_QUIT_CONFIRM, "list+esc -> quit_confirm") + engine.test.equals(fsm.next(fsm.STATE_QUIT_CONFIRM, "esc"), fsm.STATE_LIST, "quit_confirm+esc -> list") + engine.test.equals(fsm.next(fsm.STATE_QUIT_CONFIRM, "enter"), fsm.EXIT, "quit_confirm+enter -> exit") + engine.test.equals(fsm.next(fsm.STATE_QUIT_CONFIRM, "click_yes"), fsm.EXIT, "quit_confirm+click_yes -> exit") + engine.test.equals(fsm.next(fsm.STATE_QUIT_CONFIRM, "click_no"), fsm.STATE_LIST, "quit_confirm+click_no -> list") + + -- FSM stability (1) + engine.test.equals(fsm.next(fsm.STATE_LIST, "click_module"), fsm.STATE_LIST, "list+click_module -> list (switch is side-effect)") + + -- Engine-surface existence (6) + engine.test.assert(type(engine.module.list) == "function", "engine.module.list is function") + engine.test.assert(type(engine.module.dir_of) == "function", "engine.module.dir_of is function") + engine.test.assert(type(engine.render.draw_text) == "function", "engine.render.draw_text is function") + engine.test.assert(type(engine.render.measure_text) == "function", "engine.render.measure_text is function") + engine.test.assert(type(engine.module.list()) == "table", "engine.module.list() returns table") + local w, h = engine.render.measure_text("Test", 20) + engine.test.assert(w > 0 and h > 0, "measure_text returns positive dimensions") +end diff --git a/manifest.core b/manifest.core new file mode 100644 index 0000000..66e0b0a --- /dev/null +++ b/manifest.core @@ -0,0 +1,6 @@ +{ + "id": "lib-sporel.launcher-test.core", + "kind": "lib", + "version": "0.1.0", + "license": "Proprietary" +} diff --git a/manifest.module b/manifest.module new file mode 100644 index 0000000..8832f23 --- /dev/null +++ b/manifest.module @@ -0,0 +1,11 @@ +{ + "id": "lib-sporel.launcher-test", + "version": "0.1.0", + "kind": "test-module", + "api": "^0.1", + "entry_point": "init.lua", + "deps": [ + { "id": "lib-sporel.launcher", "version": "0.1.0" }, + { "id": "lib-core.input", "version": "0.3.0" } + ] +}