Restore diffuser in three-layer architecture
This commit is contained in:
72
test/specificClass.test.js
Normal file
72
test/specificClass.test.js
Normal file
@@ -0,0 +1,72 @@
|
||||
const Diffuser = require('../src/specificClass');
|
||||
|
||||
function makeConfig(overrides = {}) {
|
||||
return {
|
||||
general: {
|
||||
name: 'Zone_1',
|
||||
logging: {
|
||||
enabled: false,
|
||||
logLevel: 'error',
|
||||
},
|
||||
},
|
||||
functionality: {
|
||||
softwareType: 'diffuser',
|
||||
role: 'aeration diffuser',
|
||||
},
|
||||
diffuser: {
|
||||
number: 1,
|
||||
elements: 4,
|
||||
density: 2.4,
|
||||
waterHeight: 4.5,
|
||||
alfaFactor: 0.7,
|
||||
headerPressure: 0,
|
||||
localAtmPressure: 1013.25,
|
||||
waterDensity: 997,
|
||||
...overrides,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
describe('diffuser specificClass', () => {
|
||||
it('starts idle with zero production', () => {
|
||||
const diffuser = new Diffuser(makeConfig());
|
||||
|
||||
expect(diffuser.idle).toBe(true);
|
||||
expect(diffuser.getOutput()).toEqual(expect.objectContaining({
|
||||
oKgo2H: 0,
|
||||
oPLoss: expect.any(Number),
|
||||
}));
|
||||
});
|
||||
|
||||
it('calculates oxygen transfer and pressure once airflow is applied', () => {
|
||||
const diffuser = new Diffuser(makeConfig());
|
||||
diffuser.setFlow(24);
|
||||
|
||||
const output = diffuser.getOutput();
|
||||
expect(diffuser.idle).toBe(false);
|
||||
expect(output.oFlowElement).toBeGreaterThan(0);
|
||||
expect(output.oOtr).toBeGreaterThan(0);
|
||||
expect(output.oPLoss).toBeGreaterThan(diffuser.o_p_water);
|
||||
expect(output.oKgo2H).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('increases total pressure when water height rises', () => {
|
||||
const diffuser = new Diffuser(makeConfig());
|
||||
diffuser.setFlow(24);
|
||||
const lowHeadLoss = diffuser.getOutput().oPLoss;
|
||||
|
||||
diffuser.setWaterHeight(6);
|
||||
const highHeadLoss = diffuser.getOutput().oPLoss;
|
||||
|
||||
expect(highHeadLoss).toBeGreaterThan(lowHeadLoss);
|
||||
});
|
||||
|
||||
it('raises warnings and alarms when flow per element is too low', () => {
|
||||
const diffuser = new Diffuser(makeConfig({ elements: 1, waterHeight: 3 }));
|
||||
diffuser.setFlow(0.5);
|
||||
|
||||
expect(diffuser.warning.state).toBe(true);
|
||||
expect(diffuser.alarm.state).toBe(true);
|
||||
expect(diffuser.getStatus().fill).toBe('red');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user