before functional changes by Codex
This commit is contained in:
84
test/integration/pressure-initialization.integration.test.js
Normal file
84
test/integration/pressure-initialization.integration.test.js
Normal file
@@ -0,0 +1,84 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
const Machine = require('../../src/specificClass');
|
||||
const { makeMachineConfig, makeStateConfig, makeChildMeasurement } = require('../helpers/factories');
|
||||
|
||||
test('pressure initialization combinations are handled explicitly', () => {
|
||||
const createMachine = () => new Machine(makeMachineConfig(), makeStateConfig({ state: { current: 'operational' } }));
|
||||
|
||||
// nothing
|
||||
let machine = createMachine();
|
||||
let status = machine.getPressureInitializationStatus();
|
||||
assert.equal(status.initialized, false);
|
||||
assert.equal(status.source, null);
|
||||
const noPressureValue = machine.getMeasuredPressure();
|
||||
assert.equal(noPressureValue, 0);
|
||||
assert.ok(machine.predictFlow.fDimension <= 1);
|
||||
|
||||
// upstream only
|
||||
machine = createMachine();
|
||||
const upstreamOnly = 850;
|
||||
machine.measurements.type('pressure').variant('measured').position('upstream').value(upstreamOnly, Date.now(), 'mbar');
|
||||
status = machine.getPressureInitializationStatus();
|
||||
assert.equal(status.initialized, true);
|
||||
assert.equal(status.hasUpstream, true);
|
||||
assert.equal(status.hasDownstream, false);
|
||||
assert.equal(status.hasDifferential, false);
|
||||
assert.equal(status.source, 'upstream');
|
||||
const upstreamValue = machine.getMeasuredPressure();
|
||||
assert.equal(Math.round(upstreamValue), upstreamOnly);
|
||||
assert.equal(Math.round(machine.predictFlow.fDimension), upstreamOnly);
|
||||
|
||||
// downstream only
|
||||
machine = createMachine();
|
||||
const downstreamOnly = 1150;
|
||||
machine.measurements.type('pressure').variant('measured').position('downstream').value(downstreamOnly, Date.now(), 'mbar');
|
||||
status = machine.getPressureInitializationStatus();
|
||||
assert.equal(status.initialized, true);
|
||||
assert.equal(status.hasUpstream, false);
|
||||
assert.equal(status.hasDownstream, true);
|
||||
assert.equal(status.hasDifferential, false);
|
||||
assert.equal(status.source, 'downstream');
|
||||
const downstreamValue = machine.getMeasuredPressure();
|
||||
assert.equal(Math.round(downstreamValue), downstreamOnly);
|
||||
assert.equal(Math.round(machine.predictFlow.fDimension), downstreamOnly);
|
||||
|
||||
// downstream and upstream
|
||||
machine = createMachine();
|
||||
const upstream = 700;
|
||||
const downstream = 1100;
|
||||
machine.measurements.type('pressure').variant('measured').position('upstream').value(upstream, Date.now(), 'mbar');
|
||||
machine.measurements.type('pressure').variant('measured').position('downstream').value(downstream, Date.now(), 'mbar');
|
||||
status = machine.getPressureInitializationStatus();
|
||||
assert.equal(status.initialized, true);
|
||||
assert.equal(status.hasUpstream, true);
|
||||
assert.equal(status.hasDownstream, true);
|
||||
assert.equal(status.hasDifferential, true);
|
||||
assert.equal(status.source, 'differential');
|
||||
const differentialValue = machine.getMeasuredPressure();
|
||||
assert.equal(Math.round(differentialValue), downstream - upstream);
|
||||
assert.equal(Math.round(machine.predictFlow.fDimension), downstream - upstream);
|
||||
});
|
||||
|
||||
test('real pressure child data has priority over simulated dashboard pressure', async () => {
|
||||
const machine = new Machine(makeMachineConfig(), makeStateConfig({ state: { current: 'operational' } }));
|
||||
|
||||
machine.updateSimulatedMeasurement('pressure', 'upstream', 900, { unit: 'mbar', timestamp: Date.now() });
|
||||
machine.updateSimulatedMeasurement('pressure', 'downstream', 1200, { unit: 'mbar', timestamp: Date.now() });
|
||||
assert.equal(Math.round(machine.getMeasuredPressure()), 300);
|
||||
|
||||
const upstreamChild = makeChildMeasurement({ id: 'pt-up-real', name: 'PT Up', positionVsParent: 'upstream', type: 'pressure', unit: 'mbar' });
|
||||
const downstreamChild = makeChildMeasurement({ id: 'pt-down-real', name: 'PT Down', positionVsParent: 'downstream', type: 'pressure', unit: 'mbar' });
|
||||
|
||||
await machine.childRegistrationUtils.registerChild(upstreamChild, 'upstream');
|
||||
await machine.childRegistrationUtils.registerChild(downstreamChild, 'downstream');
|
||||
|
||||
upstreamChild.measurements.type('pressure').variant('measured').position('upstream').value(700, Date.now(), 'mbar');
|
||||
downstreamChild.measurements.type('pressure').variant('measured').position('downstream').value(1300, Date.now(), 'mbar');
|
||||
|
||||
assert.equal(Math.round(machine.getMeasuredPressure()), 600);
|
||||
const status = machine.getPressureInitializationStatus();
|
||||
assert.equal(status.source, 'differential');
|
||||
assert.equal(status.initialized, true);
|
||||
});
|
||||
Reference in New Issue
Block a user