Axel Meyer 6b2711d57f docs(input-test): Coverage Statements from fault-injection audit (Test-Cov Phase 2.3)
3 mutations tested. 2 caught, 1 uncaught.
Gap M3: dispatch-swap in was_action_released undetectable headless (no real events).
Future-Slice B candidate.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 02:32:11 +02:00

sporel-lib-core.input-test

P.3.3 test-lib — validates lib-core.input v0.4.0 API contracts (BIND_MAP, was_action_released, engine mouse-surface) via the engine.test.* assertion surface. 17 assertions total.

  • Lib-ID: lib-core.input-test
  • Version: 0.1.0
  • Kind: test-lib (headless; M.run_tests(ctx) invoked by engine test-runner)
  • Spec: meta/docs/superpowers/specs/2026-05-12-p3-3-mouse-input-design.md

Run

Sporel.exe --libs-dir=<libs-path> --test-libs=lib-core.input-test

Output is TAP version 13 on stdout; exit-code = failure-count (0 = all pass).

Coverage Statements (2026-05-16 Fault-Injection Audit)

Verified via deliberate-mutation in fixture-mirror; mutations reverted after observation.

Caught Mutations

# Mutation Caught by
M1 function M.was_action_released renamed to M._was_action_released_disabled (API-break) Runtime error "attempt to call a nil value (field 'was_action_released')" — test aborts after assertion 14
M2 if not entries then return false end changed to return nil (wrong return type for unknown action) Assertion "was_action_released for unknown action returns false" (ok 16) — not ok, got nil

Uncaught Mutations (Gaps)

# Mutation Why uncaught Severity
M3 Dispatch-swap in was_action_released for-loop: key-kind entries call was_mouse_released, mouse-kind call was_released Headless mode: all input queries return false regardless of correct vs swapped dispatch — no real events to differentiate the paths Med

Resolution per Gap:

  • Gap M3: Headless-unreachable — requires real key/mouse events to distinguish was_released from was_mouse_released. Future-Slice B: integration test with simulated input events. No cheap headless fill possible.

Tested Production-Lib Surface

lib-core.input v0.4.0 — Tests cover behavior of: input.bind (mouse-string acceptance, mixed key+mouse, unknown-name rejection, atomicity), input.action_count, input.is_action_down, input.was_action_pressed, input.was_action_released (bound action headless=false; unknown action=false). Engine surface assertions: MOUSE_LEFT/RIGHT/MIDDLE constants, is_mouse_down, was_mouse_pressed, was_released, was_mouse_released function presence.

Description
P.3.3 test-module for lib-core.input (mouse-input + bind-validation + regression)
Readme 37 KiB
Languages
Lua 86.7%
Shell 13.3%