agent updates
This commit is contained in:
61
test/measurement-container-core.test.js
Normal file
61
test/measurement-container-core.test.js
Normal file
@@ -0,0 +1,61 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
const MeasurementContainer = require('../src/measurements/MeasurementContainer.js');
|
||||
|
||||
function makeContainer() {
|
||||
return new MeasurementContainer({
|
||||
windowSize: 10,
|
||||
defaultUnits: {
|
||||
flow: 'm3/h',
|
||||
pressure: 'mbar',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
test('stores and retrieves measurements via chain API', () => {
|
||||
const c = makeContainer();
|
||||
c.type('flow').variant('measured').position('upstream').value(100, 1, 'm3/h');
|
||||
|
||||
assert.equal(c.type('flow').variant('measured').position('upstream').getCurrentValue(), 100);
|
||||
assert.equal(c.type('flow').variant('measured').position('upstream').exists(), true);
|
||||
});
|
||||
|
||||
test('distance(null) auto-derives from position mapping', () => {
|
||||
const c = makeContainer();
|
||||
c.type('pressure').variant('measured').position('upstream').distance(null).value(5, 1, 'mbar');
|
||||
|
||||
const m = c.type('pressure').variant('measured').position('upstream').get();
|
||||
assert.equal(m.distance, Number.POSITIVE_INFINITY);
|
||||
});
|
||||
|
||||
test('getLaggedSample with requested unit converts sample value', () => {
|
||||
const c = makeContainer();
|
||||
c.type('flow').variant('measured').position('upstream').value(3.6, 1, 'm3/h');
|
||||
c.type('flow').variant('measured').position('upstream').value(7.2, 2, 'm3/h');
|
||||
|
||||
const previous = c.type('flow').variant('measured').position('upstream').getLaggedSample(1, 'm3/s');
|
||||
assert.ok(previous);
|
||||
assert.equal(previous.unit, 'm3/s');
|
||||
assert.ok(Math.abs(previous.value - 0.001) < 1e-8);
|
||||
});
|
||||
|
||||
test('difference computes current and average delta between positions', () => {
|
||||
const c = makeContainer();
|
||||
c.type('pressure').variant('measured').position('downstream').value(120, 1, 'mbar');
|
||||
c.type('pressure').variant('measured').position('downstream').value(130, 2, 'mbar');
|
||||
c.type('pressure').variant('measured').position('upstream').value(100, 1, 'mbar');
|
||||
c.type('pressure').variant('measured').position('upstream').value(110, 2, 'mbar');
|
||||
|
||||
const diff = c.type('pressure').variant('measured').difference();
|
||||
assert.equal(diff.value, 20);
|
||||
assert.equal(diff.avgDiff, 20);
|
||||
assert.equal(diff.unit, 'mbar');
|
||||
});
|
||||
|
||||
test('_convertPositionNum2Str maps signs to labels', () => {
|
||||
const c = makeContainer();
|
||||
assert.equal(c._convertPositionNum2Str(0), 'atEquipment');
|
||||
assert.equal(c._convertPositionNum2Str(1), 'downstream');
|
||||
assert.equal(c._convertPositionNum2Str(-1), 'upstream');
|
||||
});
|
||||
Reference in New Issue
Block a user