cloisons.spec.ts 2.95 KB
Newer Older
Dorchies David's avatar
Dorchies David committed
/**
 * 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 { Cloisons, CloisonsParams } from "../../src/structure/cloisons";
import { CreateStructure } from "../../src/structure/factory_structure";
import { StructureKiviParams } from "../../src/structure/structure_kivi";
import { LoiDebit, StructureType } from "../../src/structure/structure_props";
// tslint:disable-next-line:max-line-length
import { RectangularStructureParams, StructureWeirSubmergedLarinier } from "../../src/structure/structure_weir_submerged_larinier";
import { testParallelStructures } from "./functions";

const cloisons: Cloisons = new Cloisons(
    new CloisonsParams(
        0,      // Débit total (m3/s)
        102,    // Cote de l'eau amont (m)
        10,     // Longueur des bassins (m)
        1,      // Largeur des bassins (m)
        1,      // Profondeur moyenne (m)
        0.5     // Hauteur de chute (m)
    ),
    false       // debug
);

const fente: StructureWeirSubmergedLarinier = new StructureWeirSubmergedLarinier(
    new RectangularStructureParams(
        0,
        101,
        102,
        101.5,
        0.2,
        0.65
    )
);

cloisons.addStructure(fente);

describe("Class Cloisons: ", () => {
    describe("Calc(Q) Fente noyée (Larinier 1992)", () => {
        it("vCalc should return 0.407", () => {
            expect(cloisons.Calc("Q").vCalc).toBeCloseTo(0.407, 3);
        });
        it("extraResults.PV should return 199.7", () => {
            expect(cloisons.Calc("Q").extraResults.PV).toBeCloseTo(199.7, 1);
        });
    });

    const c2: Cloisons = new Cloisons(
        new CloisonsParams(
            0,      // Débit total (m3/s)
            102,    // Cote de l'eau amont (m)
            10,     // Longueur des bassins (m)
            1,      // Largeur des bassins (m)
            1,      // Profondeur moyenne (m)
            0.5     // Hauteur de chute (m)
        ),
        false       // debug
    );

    // Ajout d'une structure de chaque type dans Cloisons
    const iStTypes: StructureType[] = [
        StructureType.Orifice,
        StructureType.SeuilRectangulaire,
        StructureType.SeuilRectangulaire
    ];
    const iLoiDebits: LoiDebit[] = [
        LoiDebit.OrificeSubmerged,
        LoiDebit.WeirSubmergedLarinier,
        LoiDebit.KIVI
    ];
    for (let i = 0; i < 3; i++ ) {
        c2.addStructure(CreateStructure(iStTypes[i], iLoiDebits[i], c2, false));
Dorchies David's avatar
Dorchies David committed
    }
    const prmsKivi: StructureKiviParams = c2.structures[2].prms as StructureKiviParams;
    prmsKivi.ZRAM.v = 0;

    testParallelStructures(c2, iStTypes, iLoiDebits);

    describe("Calcul de ZRAM de l'équation KIVI", () => {
        it("ZRAM should be 101", () => {
            c2.Calc("Q");
            expect(prmsKivi.ZRAM.v).toBeCloseTo(101, 3);
        });
    });
});