before functional changes by codex

This commit is contained in:
znetsixe
2026-02-19 17:37:09 +01:00
parent 6b58dd4bd5
commit 00858eb853
20 changed files with 1982 additions and 3 deletions

View File

View File

@@ -0,0 +1,49 @@
const test = require('node:test');
const assert = require('node:assert/strict');
const Monster = require('../../src/specificClass');
const {
makeMonsterConfig,
withMockedDate,
makeFlowMeasurementChild,
loadRainSeed,
loadScheduleSeed,
} = require('../helpers/factories');
test('effective flow uses average of measured and manual flow', () => {
withMockedDate('2024-10-15T00:00:00Z', ({ advance }) => {
const monster = new Monster(makeMonsterConfig());
const child = makeFlowMeasurementChild({ positionVsParent: 'downstream' });
monster.registerChild(child, 'measurement');
child.measurements
.type('flow')
.variant('measured')
.position('downstream')
.value(60, Date.now(), 'm3/h');
monster.handleInput('input_q', { value: 20, unit: 'm3/h' });
advance(1000);
monster.tick();
assert.equal(monster.q, 40);
});
});
test('rain and schedule payloads update prediction context and next date', () => {
withMockedDate('2024-10-15T00:00:00Z', () => {
const monster = new Monster(makeMonsterConfig());
const rain = loadRainSeed();
const schedule = loadScheduleSeed();
monster.aquonSampleName = '112100';
monster.handleInput('rain_data', rain);
monster.handleInput('monsternametijden', schedule);
assert.ok(monster.avgRain >= 0);
assert.ok(monster.sumRain >= 0);
const nextDate = monster.nextDate instanceof Date ? monster.nextDate.getTime() : Number(monster.nextDate);
assert.ok(Number.isFinite(nextDate));
assert.ok(nextDate > Date.now());
});
});

View File

@@ -0,0 +1,32 @@
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const dir = path.resolve(__dirname, '../../examples');
const requiredFiles = [
'README.md',
'basic.flow.json',
'integration.flow.json',
'edge.flow.json',
'monster-dashboard.flow.json',
'monster-api-dashboard.flow.json'
];
const flowFiles = requiredFiles.filter((file) => file.endsWith('.flow.json'));
function loadJson(file) {
return JSON.parse(fs.readFileSync(path.join(dir, file), 'utf8'));
}
test('examples package exists for monster', () => {
for (const file of requiredFiles) {
assert.equal(fs.existsSync(path.join(dir, file)), true, file + ' missing');
}
});
test('example flows are parseable arrays for monster', () => {
for (const file of flowFiles) {
const parsed = loadJson(file);
assert.equal(Array.isArray(parsed), true);
}
});