tests: CEID/S6F11 + PRJobAlert S16F9 on-the-wire emission

FSM unit tests already verified state transitions fire the change
handler — but they don't prove the frame leaves the socket with the
right CEID and linked report payload. This commit wires a passive
equipment Connection to an EquipmentDataModel via a small emitter,
drives transitions, and asserts on what the host peer receives.

Six new tests:
  EPT → Productive  ⇒ S6F11(kCeidProductive) with the linked report
  EPT (no subscription) ⇒ no S6F11 (proves disable gate)
  PJ Queued→SettingUp  ⇒ S16F9 PRJobAlert with PRJOBID + state byte
  PJ alert_enabled=false  ⇒ no S16F9 (per-PJ gate works)
  CJ → Executing  ⇒ S6F11(ControlJobExecuting) on the wire
  Substrate StartProcessing  ⇒ S6F11(SubstrateInProcess) on the wire

All use the generated parse_s6f11 / parse_s16f9 to decode the
incoming frame and assert against typed fields (CEID, PRJOBID, etc.)
rather than poking variant internals — that ties the test to the
schema-as-data rather than to wire byte offsets.

Closes #9 in the test-gap backlog.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-09 10:49:28 +02:00
parent c527caccc5
commit 72da1dc77f
2 changed files with 342 additions and 0 deletions
+1
View File
@@ -127,6 +127,7 @@ add_executable(secsgem_tests
tests/test_s9_fallback.cpp
tests/test_e84.cpp
tests/test_gem300_scenario.cpp
tests/test_wire_ceid_emission.cpp
)
target_link_libraries(secsgem_tests PRIVATE secsgem doctest::doctest)
target_compile_definitions(secsgem_tests PRIVATE