22 lines
1.2 KiB
JavaScript
22 lines
1.2 KiB
JavaScript
import test from 'node:test';
|
|||
|
|
import assert from 'node:assert/strict';
|
||
|
|
import {realEquipment,displayValue,effectiveEquipment,collectionState} from '../src/data.mjs';
|
||
|
|
|
||
|
|
test('real zero is preserved and missing values never become zero',()=>{
|
||
|
|
assert.equal(displayValue(0,'m'),'0 m');
|
||
|
|
assert.equal(displayValue(null,'m'),'—');
|
||
|
|
assert.equal(displayValue(false),'否');
|
||
|
|
assert.equal(displayValue({value:15}),'—');
|
||
|
|
});
|
||
|
|
test('simulated samples are excluded without borrowing another equipment value',()=>{
|
||
|
|
const rows=realEquipment({equipment:[{id:'real',items:[{key:'a',value:0,quality:'GOOD'},{key:'b',value:15,quality:'SIMULATED'},{key:'c',value:7,sourceName:'模拟采集'},{key:'d',value:8,simulated:true}]},{id:'demo',sourceType:'SIMULATED',items:[]}]});
|
||
|
|
assert.equal(rows.length,1);
|
||
|
|
assert.deepEqual(rows[0].items.map(item=>item.key),['a']);
|
||
|
|
assert.equal(rows[0].items[0].value,0);
|
||
|
|
});
|
||
|
|
test('bridge failure stops showing last equipment data as fresh',()=>{
|
||
|
|
assert.equal(collectionState({state:'CONNECTED'},true),'ERROR');
|
||
|
|
assert.equal(effectiveEquipment({id:'e',state:'RECEIVING',lastReceivedAt:123},'ERROR').state,'STALE');
|
||
|
|
assert.equal(effectiveEquipment({id:'e',state:'RECEIVING',lastReceivedAt:null},'STALE').state,'NOT_RECEIVED');
|
||
|
|
});
|