/** * IMPORTANT ! * Décommenter temporairement la ligne suivante (import { } from "./mock_jasmine") * Pour exécuter ce code dans le débugger. * Faire de même avec le fichier test_func.ts */ // import { describe, expect, it, xdescribe, xit } from "../mock_jasmine"; import { MessageCode } from "../../src/index"; import { CreateStructure } from "../../src/structure/factory_structure"; import { ParallelStructure } from "../../src/structure/parallel_structure"; import { ParallelStructureParams } from "../../src/structure/parallel_structure_params"; import { loiAdmissiblesOuvrages, StructureType } from "../../src/structure/structure_props"; import { EnumEx } from "../../src/util/enum"; import { Result } from "../../src/util/result"; import { precDigits } from "../test_config"; import { checkResult } from "../test_func"; import { testParallelStructures } from "./functions"; import { structTest } from "./structure_test"; function createEnv() { const pstruct = new ParallelStructure( new ParallelStructureParams(30, 30, 15), // Q = 30, Z1 = 30, Z2 = 15 false // debug ); /* * Tests avec deux structures test identiques */ pstruct.addChild(structTest); pstruct.addChild(structTest); return pstruct; } let pstruct: ParallelStructure; describe("Class ParallelStructure: ", () => { describe("Calc()", () => { beforeEach(() => { pstruct = createEnv(); }); it("should return 1 result", () => { const p1 = createEnv(); const res: Result = p1.Calc("Q"); expect(p1.Calc("Q").nbResultElements).toEqual(1); }); itParallelStructure(null, "Q", 30, 15); itParallelStructure(null, "Z1", 30, 15); itParallelStructure(null, "Z2", 15, 15); itParallelStructure(0, "ZDV", 0, 15); itParallelStructure(1, "ZDV", 0, 15); it("shoud return an error Q too high", () => { pstruct.prms.Q.v = 14; const res: Result = pstruct.Calc({ uid: pstruct.structures[1].uid, symbol: "ZDV" }); expect(res.code).toBe(MessageCode.ERROR_STRUCTURE_Q_TROP_ELEVE); }); }); }); function getVarCalc(pstructLoc: ParallelStructure, structIndex: number, sVarCalc: string) : any { if (structIndex !== null) { return { uid: pstructLoc.structures[structIndex].uid, symbol: sVarCalc }; } else { return sVarCalc; } } /** * Test sur ParallelStructure * @param sVarCalc Variable à calculer * @param rVcalc Valeur de référence à retrouver * @param Q Débit de chacune des structures (pour structures identiques uniquement) */ function itParallelStructure(structIndex: number, sVarCalc: string, rVcalc: number, Q?: number) { it(`${sVarCalc} should be ${rVcalc}`, () => { const VC1: any = getVarCalc(pstruct, structIndex, sVarCalc); checkResult(pstruct.Calc(VC1), rVcalc); }); if (Q !== undefined) { const pstructLocal = createEnv(); for (let i = 0; i < pstructLocal.structures.length; i++) { it(`Calc(${JSON.stringify(sVarCalc)}) ExtraResult[ouvrage[${i}].Q] should be ${Q}`, () => { const VC2: any = getVarCalc(pstruct, structIndex, sVarCalc); expect( pstruct.Calc(VC2).resultElement.extraResults[`ouvrage[${i}].Q`] ).toBeCloseTo(Q, Math.max(0, precDigits - 1)); }); it(`Calc(${JSON.stringify(sVarCalc)}) ExtraResult[ouvrage[${i}].Q_Mode] should be 0`, () => { const VC3 = getVarCalc(pstruct, structIndex, sVarCalc); expect( pstruct.Calc(VC3).resultElement.extraResults[`ouvrage[${i}].Q_ENUM_StructureFlowMode`] ).toEqual(0); }); it(`Calc(${JSON.stringify(sVarCalc)}) ExtraResult[ouvrage[${i}].Q_Regime] should be 0`, () => { const VC4 = getVarCalc(pstruct, structIndex, sVarCalc); expect( pstruct.Calc(VC4).resultElement.extraResults[`ouvrage[${i}].Q_ENUM_StructureFlowRegime`] ).toEqual(0); }); } } } /* * Tests avec toutes les équations et toutes les variables (cf. jalhyd#38) */ const ps2: ParallelStructure = new ParallelStructure( new ParallelStructureParams(0, 102, 101.5), // Q = 0, Z1 = 102, Z2 = 101.5 false // debug ); describe("Class ParallelStructure: ", () => { // Ajout d'une structure de chaque type dans ParallelStructure const iLoiDebits: number[] = []; const iStTypes: number[] = []; for (const s of EnumEx.getValues(StructureType)) { for (const la of loiAdmissiblesOuvrages[StructureType[s]]) { ps2.addChild(CreateStructure(la, ps2, false)); iLoiDebits.push(la); iStTypes.push(s); } } testParallelStructures(ps2, iLoiDebits); });