diff --git a/spec/structure/functions.ts b/spec/structure/functions.ts index 6f9114bd4eac326694bf989f161147cb407f6a83..0d771331ad79f8d6cab3541309e084f09b399a42 100644 --- a/spec/structure/functions.ts +++ b/spec/structure/functions.ts @@ -80,39 +80,43 @@ export function testStructure( } } -function testStructureLoopPrm( - st: Structure, - bNotZDV: boolean, - prm: ParamDefinition) { +function testStructureLoopPrm(st: Structure, bNotZDV: boolean, prm: ParamDefinition) { describe(`Calc(${prm.symbol})`, () => { beforeAll(() => { st.calculatedParam = prm; }); - if ([ParamCalculability.DICHO, ParamCalculability.EQUATION].includes(prm.calculability)) { - if (prm.symbol === "W" && prm.currentValue === Infinity) { - // Le calcul de l'ouverture sur les seuils doit renvoyer une exception (cas impossible) - it(`should return exception`, () => { + it(`should return exception`, () => { + // Le calcul de l'ouverture sur les seuils doit renvoyer une exception (cas impossible) + if ([ParamCalculability.DICHO, ParamCalculability.EQUATION].includes(prm.calculability)) { + if (prm.symbol === "W" && prm.currentValue === Infinity) { expect( () => { st.CalcSerie(); } ).toThrow(new Error("Structure:Calc : Calcul de W impossible sur un seuil")); - }); - } else { - if (bNotZDV) { - // Les lois CEM88D et CUNGE80 ne font pas intervenir ZDV dans le calcul d'un orifice noyé - it(`should return an error`, () => { + } + } + }); + it(`should return an error`, () => { + // Les lois CEM88D et CUNGE80 ne font pas intervenir ZDV dans le calcul d'un orifice noyé + if ([ParamCalculability.DICHO, ParamCalculability.EQUATION].includes(prm.calculability)) { + if (!(prm.symbol === "W" && prm.currentValue === Infinity)) { + if (bNotZDV) { expect( st.CalcSerie().log.messages[0].code ).toBe(MessageCode.ERROR_STRUCTURE_ZDV_PAS_CALCULABLE); - }); - } else { - it(`should return prm.currentValue`, () => { + } + } + } + }); + it(`should return prm.currentValue`, () => { + if ([ParamCalculability.DICHO, ParamCalculability.EQUATION].includes(prm.calculability)) { + if (!(prm.symbol === "W" && prm.currentValue === Infinity)) { + if (!bNotZDV) { checkResult(st.CalcSerie(prm.domain.getBoundedValue(prm.singleValue + 100)), prm.currentValue); - }); + } } } - } + }); }); - } /** @@ -148,15 +152,15 @@ export function testParallelStructures(o: { ps: ParallelStructure, ld: number[] if (prm.visible) { describe(`Calc(${prm.symbol})`, () => { const ref: number = prm.currentValue; - beforeAll( () => { + beforeAll(() => { o.ps.calculatedParam = prm; }); beforeEach(() => { originalCalculatedValue = o.ps.calculatedParam.currentValue; if ( // #136 Multiple solutions for GateCem88v ZDV - ! (o.ps.calculatedParam.parentNub.properties + !(o.ps.calculatedParam.parentNub.properties .getPropValue("loiDebit") === LoiDebit.GateCem88v - && o.ps.calculatedParam.symbol === "ZDV") + && o.ps.calculatedParam.symbol === "ZDV") ) { // altering value to force looking for the solution o.ps.calculatedParam.singleValue = Math.min( @@ -169,41 +173,51 @@ export function testParallelStructures(o: { ps: ParallelStructure, ld: number[] afterEach(() => { o.ps.calculatedParam.singleValue = originalCalculatedValue; }); - if (prm.symbol === "W" && prm.currentValue === Infinity) { + it(`should return exception`, () => { // Le calcul de l'ouverture sur les seuils doit renvoyer une exception (cas impossible) - it(`should return exception`, () => { + if (prm.symbol === "W" && prm.currentValue === Infinity) { expect( () => { o.ps.CalcSerie(); } ).toThrow(new Error("Structure:Calc : Calcul de W impossible sur un seuil")); - }); - } else if (prm.symbol === "ZDV" && !o.ps.structures[i].isZDVcalculable) { + } + }); + it(`should return an error`, () => { // Les lois GateCEM88D et CUNGE80 ne permettent pas le calcul de ZDV - it(`should return an error`, () => { - expect( - o.ps.CalcSerie().log.messages[0].code - ).toBe(MessageCode.ERROR_STRUCTURE_ZDV_PAS_CALCULABLE); - }); - } else if ( - o.ld[i] === LoiDebit.TriangularWeirFree && - prm.symbol === "alpha2" - ) { + if (!(prm.symbol === "W" && prm.currentValue === Infinity)) { + if (prm.symbol === "ZDV" && !o.ps.structures[i].isZDVcalculable) { + expect( + o.ps.CalcSerie().log.messages[0].code + ).toBe(MessageCode.ERROR_STRUCTURE_ZDV_PAS_CALCULABLE); + } + } + }); + it(`should return ${ref}`, () => { // Le calcul de l'angle de l'équation triangulaire n'est pas assez précis - it(`should return ${ref}`, () => { - checkResult(o.ps.CalcSerie(), ref, 1); - }); - } else { + if (!(prm.symbol === "W" && prm.currentValue === Infinity)) { + if (!(prm.symbol === "ZDV" && !o.ps.structures[i].isZDVcalculable)) { + if (o.ld[i] === LoiDebit.TriangularWeirFree && prm.symbol === "alpha2") { + checkResult(o.ps.CalcSerie(), ref, 1); + } + } + } + }); + it(`should return ${ref}`, () => { // Cas normal : On teste la valeur calculée - if (ParamCalculability.DICHO === prm.calculability) { - it(`should return ${ref}`, () => { - // console.log(o.ps.serialise()); - checkResult(o.ps.CalcSerie(), ref); - /* checkResult(o.ps.Calc({ - uid: o.ps.structures[i].uid, - symbol: prm.symbol - }), ref); */ - }); + if (!(prm.symbol === "W" && prm.currentValue === Infinity)) { + if (!(prm.symbol === "ZDV" && !o.ps.structures[i].isZDVcalculable)) { + if (!(o.ld[i] === LoiDebit.TriangularWeirFree && prm.symbol === "alpha2")) { + if (ParamCalculability.DICHO === prm.calculability) { + // console.log(o.ps.serialise()); + checkResult(o.ps.CalcSerie(), ref); + /* checkResult(o.ps.Calc({ + uid: o.ps.structures[i].uid, + symbol: prm.symbol + }), ref); */ + } + } + } } - } + }); }); } }