diff --git a/spec/pab/pab.spec.ts b/spec/pab/pab.spec.ts index 6c2230772c37ad0500de607eddbda82809537524..77e42a1416c5c92e747f9edb7cb8593950e5742a 100644 --- a/spec/pab/pab.spec.ts +++ b/spec/pab/pab.spec.ts @@ -170,6 +170,7 @@ describe("Class Pab: ", () => { checkPabResults(pab, 0.773); }); }); + describe("Vanne levante sur Cloison aval", () => { beforeEach( () => { pab = createPabTest(); @@ -199,4 +200,27 @@ describe("Class Pab: ", () => { .toBe(MessageCode.ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE); }); }); + + describe("when Z1 is too low compared to ZDV", () => { + it("logs should appear if dichotomy does not converge", () => { + pab.calculatedParam = pab.prms.Q; + pab.prms.Z1.singleValue = 78.26; // @WTF 78.27 in the example above works, 78.26 fails ! + pab.CalcSerie(); + expect(pab.result.hasLog).toBe(true); + expect(pab.result.resultElement.log.messages[0].code) + .toBe(MessageCode.ERROR_DICHO_CONVERGE); // @TODO or other error message ? + }); + }); + + describe("variating Z1", () => { + it("logs should appear when Z1 < Z2", () => { + pab.calculatedParam = pab.prms.Q; + pab.prms.Z1.setValues(73, 85, 6); + pab.CalcSerie(); + expect(pab.result.nbResultElements).toBe(3); + expect(pab.result.hasLog).toBe(true); + expect(pab.result.resultElements[0].log.messages[0].code).toBe(MessageCode.ERROR_Z1_LOWER_THAN_Z2); + }); + }); + }); diff --git a/src/nub.ts b/src/nub.ts index b98610d360c70053f8a78527f61e33c147151601..c7226fd0a7672581c6f4b0592b64ba3bc93dca5d 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -411,7 +411,6 @@ export abstract class Nub extends ComputeNode implements IObservable { if (this._result.resultElement.ok) { rInit = this._result.resultElement.vCalc; } - this._result.globalLog.addLog(this._result.globalLog); // update progress this.progress += progressStep; } diff --git a/src/pab/pab.ts b/src/pab/pab.ts index c749ae30a0f4f5b87555234ca75565c15c2d1d12..78537edb08f4ba23cdb17917d52c1d26a50250f2 100644 --- a/src/pab/pab.ts +++ b/src/pab/pab.ts @@ -110,6 +110,10 @@ export class Pab extends Nub { this.currentResult = new Result(new Message(MessageCode.ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE)); return this.result; } + if (sVarCalc === "Q" && this.prms.Z1.v < this.prms.Z2.v) { + this.currentResult = new Result(new Message(MessageCode.ERROR_Z1_LOWER_THAN_Z2)); + return this.result; + } return super.Calc(sVarCalc, rInit); } diff --git a/src/util/message.ts b/src/util/message.ts index 4c2778db457e6b4d2a186cb5f928fe988c7b6094..ace85e54b0767161ecc60d478faec774d7c5b970 100644 --- a/src/util/message.ts +++ b/src/util/message.ts @@ -118,6 +118,11 @@ export enum MessageCode { */ ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE, + /** + * La cote amont est plus basse que la cote aval + */ + ERROR_Z1_LOWER_THAN_Z2, + /** * internationalisation : langue non prise en charge */