From 5dc8b1818859a81e8a178e72ad7fbeaa17575385 Mon Sep 17 00:00:00 2001 From: Axel Meyer Date: Wed, 13 May 2026 02:10:53 +0200 Subject: [PATCH] =?UTF-8?q?test(P.3.5):=20initial=20=E2=80=94=20lib-core.c?= =?UTF-8?q?amera-test=20v0.1.0=20(16=20assertions,=20P.3.1=20pattern)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- init.lua | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ manifest.core | 6 +++++ manifest.module | 11 +++++++++ 3 files changed, 81 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..d2d298c --- /dev/null +++ b/init.lua @@ -0,0 +1,64 @@ +-- lib-core.camera-test — P.3.5 +-- 16 assertions: 3 state-setters + 3 bounds-clamping + 6 pan_enabled + 2 pan_invert + 2 engine-surface. +-- Pattern follows P.3.1 Test-Module-Pattern; TAP output via engine.test.* + +local camera = require("lib-core.camera") +local T = engine.test + +function init(ctx) + -- State setters/getters (3) + camera.set_target(100, 200) + local t = camera.target() + T.assert(t.x == 100 and t.y == 200, "set_target -> target") + + camera.set_zoom(2.0) + T.equals(camera.zoom(), 2.0, "set_zoom -> zoom") + + camera.set_pan_speed(500) + T.equals(camera.pan_speed(), 500, "set_pan_speed -> pan_speed") + + -- Bounds-Clamping (3) + camera.set_bounds(0, 0, 1000, 1000) + camera.set_target(2000, -50) + local t1 = camera.target() + T.assert(t1.x == 1000 and t1.y == 0, "set_target clamped to bounds") + + camera.clear_bounds() + camera.set_target(-100, -100) + local t2 = camera.target() + T.assert(t2.x == -100 and t2.y == -100, "clear_bounds -> unclamped") + + camera.set_bounds(0, 0, 100, 100) + local t3 = camera.target() + T.assert(t3.x == 0 and t3.y == 0, "set_bounds clamps current target immediately") + + -- pan_enabled state (6) + -- (NOTE: bind_pan_keys above this point would have enabled "keys", so reset first.) + camera.set_pan_enabled("keys", false) + camera.set_pan_enabled("edge", false) + camera.set_pan_enabled("drag", false) + T.assert(camera.pan_enabled("keys") == false, "keys disabled state") + T.assert(camera.pan_enabled("edge") == false, "edge disabled state") + T.assert(camera.pan_enabled("drag") == false, "drag disabled state") + camera.bind_pan_keys("a", "b", "c", "d") + T.assert(camera.pan_enabled("keys") == true, "bind_pan_keys auto-enables") + camera.set_pan_enabled("keys", false) + T.assert(camera.pan_enabled("keys") == false, "set_pan_enabled('keys', false) disables") + camera.set_pan_enabled("keys", true) + T.assert(camera.pan_enabled("keys") == true, "set_pan_enabled('keys', true) re-enables") + + -- pan_invert state (2) + camera.set_pan_invert(false) + T.assert(camera.pan_invert() == false, "pan_invert false") + camera.set_pan_invert(true) + T.assert(camera.pan_invert() == true, "pan_invert true after set") + + -- Engine-Surface existence (2) + T.assert(type(engine.input.get_mouse_delta) == "function", + "engine.input.get_mouse_delta is function") + T.assert(type(engine.window.size) == "function", + "engine.window.size is function") + + -- Hygiene: reset bounds for any subsequent loads (init-only-lifecycle but defensive) + camera.clear_bounds() +end diff --git a/manifest.core b/manifest.core new file mode 100644 index 0000000..84e7cfd --- /dev/null +++ b/manifest.core @@ -0,0 +1,6 @@ +{ + "id": "lib-core.camera-test.core", + "kind": "lib", + "version": "0.1.0", + "license": "Proprietary" +} diff --git a/manifest.module b/manifest.module new file mode 100644 index 0000000..8e0fb27 --- /dev/null +++ b/manifest.module @@ -0,0 +1,11 @@ +{ + "id": "lib-core.camera-test", + "version": "0.1.0", + "kind": "test-module", + "api": "^0.1", + "entry_point": "init.lua", + "deps": [ + { "id": "lib-core.camera", "version": "0.2.0" }, + { "id": "lib-core.input", "version": "0.3.0" } + ] +}