parallel_structure.spec.ts 3.46 KiB
/**
 * 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 { CreateStructure } from "../../src/structure/factory_structure";
import { ParallelStructure } from "../../src/structure/parallel_structure";
import { ParallelStructureParams } from "../../src/structure/parallel_structure_params";
import { loiAdmissibles, 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";
const pstruct: ParallelStructure = new ParallelStructure(
    new ParallelStructureParams(30, 30, 15), // Q = 30, Z1 = 30, Z2 = 15
    false // debug
 * Tests avec deux structures test identiques
pstruct.addStructure(structTest);
pstruct.addStructure(structTest);
describe("Class ParallelStructure: ", () => {
    describe("Calc()", () => {
        it("should return 1 result", () => {
            const res: Result = pstruct.Calc("Q");
            expect(pstruct.Calc("Q").nbResultElements).toEqual(1);
        });
        itParallelStructure("Q", 30, 15);
        itParallelStructure("Z1", 30, 15);
        itParallelStructure("Z2", 15, 15);
    });
});
/**
 * 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(sVarCalc: string, rVcalc: number, Q?: number) {
    it(`${sVarCalc} should be ${rVcalc}`, () => {
        checkResult(pstruct.Calc(sVarCalc), rVcalc);
    });
    if (Q !== undefined) {
        for (let i = 0; i < pstruct.structures.length; i++) {
            it(`ExtraResult[ouvrage[${i}].Q] should be ${Q}`, () => {
                expect(
                    pstruct.Calc(sVarCalc).resultElement.extraResults[`ouvrage[${i}].Q`]
                ).toBeCloseTo(Q, Math.max(0, precDigits - 1));
            });
            it(`ExtraResult[ouvrage[${i}].Q_Mode] should be 0`, () => {
                expect(
                    pstruct.Calc(sVarCalc).resultElement.extraResults[`ouvrage[${i}].Q_Mode`]
                ).toEqual(0);
            });
            it(`ExtraResult[ouvrage[${i}].Q_Regime] should be 0`, () => {
                expect(
                    pstruct.Calc(sVarCalc).resultElement.extraResults[`ouvrage[${i}].Q_Regime`]
                ).toEqual(0);
            });
717273747576777879808182838485868788899091929394959697
} } } /* * 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 loiAdmissibles[StructureType[s]]) { ps2.addStructure(CreateStructure(s, la, false)); iLoiDebits.push(la); iStTypes.push(s); } } testParallelStructures(ps2, iStTypes, iLoiDebits); });