const assert = require('assert'); const { EnergyMesh, Inverter, Meter } = require('../src/mesh.js'); function run() { // Create mesh const mesh = new EnergyMesh(); // Create devices and components const inv = new Inverter('inv1', 'dev-inv1', 1000, 600); // generates 600W const meter = new Meter('m1', 'dev-mtr1', 400); // consumes 400W mesh.addInverter(inv); mesh.addMeter(meter); const result = mesh.computeFlow(); // Expect generation > consumption by 200W assert.strictEqual(result.generationW, 600); assert.strictEqual(result.consumptionW, 400); assert.strictEqual(result.netFlowW, 200); // Delta-sync: apply new generation/consumption values and verify updated flow mesh.applyDeltaSync({ inverters: [{ id: 'inv1', outputW: 800 }], meters: [{ id: 'm1', consumptionW: 500 }] }); const updated = mesh.computeFlow(); assert.strictEqual(updated.generationW, 800); assert.strictEqual(updated.consumptionW, 500); assert.strictEqual(updated.netFlowW, 300); // ADMM-enabled flow should be parity with baseline for this MVP path const admmFlow = mesh.computeFlowADMM(); const baselineFlow = updated; assert.strictEqual(admmFlow.generationW, baselineFlow.generationW); assert.strictEqual(admmFlow.consumptionW, baselineFlow.consumptionW); assert.strictEqual(admmFlow.netFlowW, baselineFlow.netFlowW); } try { run(); console.log('ALL TESTS PASSED'); process.exit(0); } catch (err) { console.error('TEST FAILED', err); process.exit(1); }