test(P.3.5): initial — lib-core.camera-test v0.1.0 (16 assertions, P.3.1 pattern)
This commit is contained in:
64
init.lua
Normal file
64
init.lua
Normal file
@@ -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
|
||||||
6
manifest.core
Normal file
6
manifest.core
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"id": "lib-core.camera-test.core",
|
||||||
|
"kind": "lib",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"license": "Proprietary"
|
||||||
|
}
|
||||||
11
manifest.module
Normal file
11
manifest.module
Normal file
@@ -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" }
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user