Refactor monster to current architecture
This commit is contained in:
95
test/specificClass.test.js
Normal file
95
test/specificClass.test.js
Normal file
@@ -0,0 +1,95 @@
|
||||
const Monster = require('../src/specificClass');
|
||||
|
||||
describe('monster specificClass', () => {
|
||||
function createMonster(overrides = {}) {
|
||||
return new Monster({
|
||||
general: {
|
||||
name: 'Monster Test',
|
||||
unit: 'm3/h',
|
||||
logging: {
|
||||
enabled: false,
|
||||
logLevel: 'error',
|
||||
},
|
||||
},
|
||||
asset: {
|
||||
emptyWeightBucket: 3,
|
||||
},
|
||||
constraints: {
|
||||
samplingtime: 1,
|
||||
minVolume: 5,
|
||||
maxWeight: 23,
|
||||
},
|
||||
functionality: {
|
||||
aquonSampleName: '112100',
|
||||
},
|
||||
...overrides,
|
||||
});
|
||||
}
|
||||
|
||||
test('aggregates rain data and exposes output state', () => {
|
||||
const monster = createMonster();
|
||||
|
||||
monster.rain_data = [
|
||||
{
|
||||
latitude: 51.7,
|
||||
longitude: 4.81,
|
||||
hourly: {
|
||||
time: ['2026-03-12T00:00', '2026-03-12T01:00'],
|
||||
precipitation: [1, 3],
|
||||
precipitation_probability: [100, 50],
|
||||
},
|
||||
},
|
||||
{
|
||||
latitude: 51.8,
|
||||
longitude: 4.91,
|
||||
hourly: {
|
||||
time: ['2026-03-12T00:00', '2026-03-12T01:00'],
|
||||
precipitation: [2, 2],
|
||||
precipitation_probability: [100, 100],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const output = monster.getOutput();
|
||||
|
||||
expect(monster.sumRain).toBe(6.5);
|
||||
expect(monster.avgRain).toBe(3.25);
|
||||
expect(output.sumRain).toBe(6.5);
|
||||
expect(output.avgRain).toBe(3.25);
|
||||
});
|
||||
|
||||
test('supports external prediction input and starts sampling safely', () => {
|
||||
const monster = createMonster();
|
||||
|
||||
monster.setModelPrediction(120);
|
||||
monster.q = 3600;
|
||||
monster.i_start = true;
|
||||
monster.flowTime = Date.now() - 1000;
|
||||
|
||||
monster.tick();
|
||||
|
||||
const output = monster.getOutput();
|
||||
expect(output.running).toBe(true);
|
||||
expect(output.predFlow).toBe(120);
|
||||
expect(output.predM3PerSec).toBeCloseTo(120 / 3600, 6);
|
||||
});
|
||||
|
||||
test('calculates the next AQUON date from monsternametijden input', () => {
|
||||
const monster = createMonster();
|
||||
const nextMonth = new Date();
|
||||
nextMonth.setMonth(nextMonth.getMonth() + 1);
|
||||
|
||||
monster.monsternametijden = [
|
||||
{
|
||||
SAMPLE_NAME: '112100',
|
||||
DESCRIPTION: 'future sample',
|
||||
SAMPLED_DATE: null,
|
||||
START_DATE: nextMonth.toISOString(),
|
||||
END_DATE: nextMonth.toISOString(),
|
||||
},
|
||||
];
|
||||
|
||||
expect(monster.daysPerYear).toBeGreaterThanOrEqual(0);
|
||||
expect(monster.nextDate).toBeGreaterThan(Date.now());
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user