# PumpingStation Test Evidence (Preparation) Status: baseline suite created and executed. ## Executed - Command: - `node --test test/basic/*.test.js test/edge/*.test.js test/integration/*.test.js` - Working directory: - `nodes/pumpingStation` - Result: - `pass: 4`, `fail: 0` ## Planned Test Matrix | Planned test file | Scope | Primary contracts anchored | |---|---|---| | `nodes/pumpingStation/test/basic/constructor.basic.test.js` | config initialization, basin property derivation | constructor, `initBasinProperties`, config defaults | | `nodes/pumpingStation/test/basic/nodeClass-routing.basic.test.js` | topic routing and registration handling | `nodeClass._attachInputHandler`, `registerChild`, calibration topics, `q_in` parsing | | `nodes/pumpingStation/test/integration/registration-normalization.integration.test.js` | softwareType/position normalization and listener dedupe | `registerChild`, `_registerPredictedFlowChild`, `_registerMeasurementChild` | | `nodes/pumpingStation/test/edge/mode-alias.edge.test.js` | mode alias normalization | `_normalizeMode`, `changeMode` compatibility path | | `nodes/pumpingStation/test/integration/flow-balance.integration.test.js` | inflow/outflow aggregation and predicted volume update | `_updatePredictedVolume`, `_selectBestNetFlow`, `_computeRemainingTime` | | `nodes/pumpingStation/test/integration/measurement.integration.test.js` | level/pressure measurement handling and conversions | `_onLevelMeasurement`, `_onPressureMeasurement` | | `nodes/pumpingStation/test/integration/safety.integration.test.js` | dry-run/overfill/time threshold behavior | `_safetyController` | | `nodes/pumpingStation/test/integration/control-levelbased.integration.test.js` | level-based machine command dispatch behavior | `_controlLevelBased`, `_applyMachineLevelControl` | | `nodes/pumpingStation/test/edge/status.edge.test.js` | status output formatting under sparse data | `_updateNodeStatus` | ## Execution Target - Preferred command (after suite exists): `node --test nodes/pumpingStation/test/**/*.test.js` ## Coverage Goal - Match rotatingMachine discipline: - config contract coverage - topic routing coverage - control/safety path coverage - regression cases for known risk patterns