Commit e2e1fc93 authored by Mathias Chouet's avatar Mathias Chouet :spaghetti:
Browse files

Fix nghyd#284 - ParallelStructures: propagate children logs

Showing with 44 additions and 5 deletions
+44 -5
......@@ -36,14 +36,16 @@ describe("class CloisonAval", () => {
const r = ca.CalcSerie();
expect(r.vCalc).toBeCloseTo(75.059, 3);
expect(r.values.ZDV).toBeCloseTo(73.9, 2);
expect(r.log.messages[0].code).toBe(MessageCode.WARNING_VANLEV_ZDV_SUP_MAX);
expect(r.log.messages[0].code).toBe(MessageCode.WARNING_NOTCH_SUBMERSION_GREATER_THAN_07);
expect(r.log.messages[1].code).toBe(MessageCode.WARNING_VANLEV_ZDV_SUP_MAX);
});
it("ZDV max bound Calc(Z1) should return 75.096 and extraResults.ZDV should be 74", () => {
s.prms.minZDV.singleValue = 74;
const r = ca.CalcSerie();
expect(r.vCalc).toBeCloseTo(75.096, 3);
expect(r.values.ZDV).toBeCloseTo(74, 2);
expect(r.log.messages[0].code).toBe(MessageCode.WARNING_VANLEV_ZDV_INF_MIN);
expect(r.log.messages[0].code).toBe(MessageCode.WARNING_NOTCH_SUBMERSION_GREATER_THAN_07);
expect(r.log.messages[1].code).toBe(MessageCode.WARNING_VANLEV_ZDV_INF_MIN);
});
});
......
......@@ -7,6 +7,7 @@ import { ParallelStructureParams } from "../../src/structure/parallel_structure_
import { StructureKivi } from "../../src/structure/structure_kivi";
import { StructureKiviParams } from "../../src/structure/structure_kivi_params";
import { LoiDebit } from "../../src/structure/structure_props";
import { StructureRectangularOrificeFree } from "../../src/structure/structure_rectangular_orifice_free";
import { MessageCode } from "../../src/util/message";
import { Result } from "../../src/util/result";
import { precDigits } from "../test_config";
......@@ -175,4 +176,38 @@ describe("Class ParallelStructure: ", () => {
expect(ps.CalcSerie().vCalc).toBeCloseTo(100, 3);
});
});
fdescribe("Strucure logs should be propagated to parent Result - ", () => {
it("example with StructureRectangularOrificeFree, h2 > 0, calculating Q", () => {
const ps = Session.getInstance().createNub(
new Props({ calcType: CalculatorType.ParallelStructure })
) as ParallelStructure;
ps.prms.Q.singleValue = 2.309;
ps.addChild(CreateStructure(LoiDebit.RectangularOrificeFree));
ps.prms.Z1.singleValue = 105;
ps.prms.Z2.singleValue = 102;
ps.structures[0].prms.ZDV.singleValue = 101.5;
const res = ps.CalcSerie().resultElement;
expect(res.log.messages.length).toBe(1);
expect(
res.log.messages[0].code
).toBe(MessageCode.WARNING_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION);
});
it("example with StructureRectangularOrificeFree, h2 > 0, calculating something other than Q", () => {
const ps = Session.getInstance().createNub(
new Props({ calcType: CalculatorType.ParallelStructure })
) as ParallelStructure;
ps.prms.Q.singleValue = 2.309;
const c = CreateStructure(LoiDebit.RectangularOrificeFree) as StructureRectangularOrificeFree;
ps.addChild(c);
ps.prms.Z1.singleValue = 105;
ps.prms.Z2.singleValue = 102;
ps.structures[0].prms.ZDV.singleValue = 101.5;
ps.calculatedParam = c.prms.L;
const res = ps.CalcSerie().resultElement;
expect(res.log.messages.length).toBe(1);
expect(
res.log.messages[0].code
).toBe(MessageCode.WARNING_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION);
});
});
});
......@@ -1277,7 +1277,7 @@ export abstract class Nub extends ComputeNode implements IObservable {
return computedSymbol;
}
protected doCalc(computedSymbol?: any, rInit?: number) {
protected doCalc(computedSymbol?: any, rInit?: number): Result {
return this.Calc(computedSymbol, rInit);
}
......
......@@ -89,9 +89,9 @@ export class ParallelStructure extends Nub {
for (let i = 0; i < this._children.length; i++) {
if (i !== iExcept) {
const res: Result = this._children[i].Calc("Q");
// @TODO vérifier que ça marche sans la ligne ci-dessous
// calcRes.resultElement.AddResultElementToExtra(res.resultElement, `ouvrage[${i}].Q`);
qTot += res.vCalc;
// merge logs
calcRes.resultElement.log.addLog(res.log);
}
}
// Assigne le débit total dans le résultat
......@@ -130,6 +130,8 @@ export class ParallelStructure extends Nub {
if (r.ok) {
this.result.symbol = r.symbol;
this.result.vCalc = r.vCalc;
// merge logs
this.result.log.addLog(r.log);
} else {
this.currentResult = r;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment