param_modes.spec.ts 12.92 KiB
import { cSnTrapez, LinkedValue, Nub, ParallelStructure, ParallelStructureParams,
         ParamsSectionTrapez, ParamValueMode, SectionParametree, Session } from "../../src/index";
import { RegimeUniforme } from "../../src/regime_uniforme";
import { cSnCirc, ParamsSectionCirc } from "../../src/section/section_circulaire";
import { Cloisons } from "../../src/structure/cloisons";
import { CloisonsParams } from "../../src/structure/cloisons_params";
import { Dever, DeverParams } from "../../src/structure/dever";
import { CreateStructure } from "../../src/structure/factory_structure";
import { LoiDebit } from "../../src/structure/structure_props";
/**
 * 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";
let nub1: RegimeUniforme;
let prm1: ParamsSectionCirc;
let nub2: ParallelStructure;
let prm2: ParallelStructureParams;
let nub3: Cloisons;
let prm3: CloisonsParams;
let nub4: Dever;
let prm4: DeverParams;
let nub5: Dever;
let prm5: DeverParams;
let nub6: SectionParametree;
let prm6: ParamsSectionTrapez;
/**
 * crée l'environnement de test.
 * répété à chaque test car il manque un mock de beforeEach
function createEnv() {
    // Nub 1 : Régime Uniforme
    const paramSect = new ParamsSectionCirc(2, 0.6613, 40, 1.2, 0.001, 1);
    paramSect.Pr.v = 0.01;
    const sect = new cSnCirc(paramSect);
    nub1 = new RegimeUniforme(sect);
    prm1 = nub1.section.prms as ParamsSectionCirc;
    // Nub 2 : Lois d'ouvrages
    prm2 = new ParallelStructureParams(0.5, 102, 101.5);
    prm2.Pr.v = 0.01;
    nub2 = new ParallelStructure(prm2);
    nub2.addChild(
        CreateStructure(
            LoiDebit.Cunge80,
            nub2
    nub2.addChild(
        CreateStructure(
            LoiDebit.TriangularWeirFree,
            nub2
    // Nub 3 : Passe à Bassin : Cloisons
    prm3 = new CloisonsParams(1.5, 102, 10, 1, 1, 0.5);
    nub3 = new Cloisons(prm3);
    nub3.addChild(
        CreateStructure(
            LoiDebit.OrificeSubmerged,
            nub3
    nub3.addChild(
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
CreateStructure( LoiDebit.KIVI, nub3 ) ); // Nub 4 : Lois de déversoirs Dénoyés prm4 = new DeverParams(0.5, 102, 10, 99); prm4.Pr.v = 0.01; nub4 = new Dever(prm4); nub4.addChild( CreateStructure( LoiDebit.WeirFree, nub4, false ) ); nub4.addChild( CreateStructure( LoiDebit.TriangularTruncWeirFree, nub4, false ) ); // Nub 5 : Lois de déversoirs Dénoyés (2) prm5 = new DeverParams(0.5, 102, 10, 99); prm5.Pr.v = 0.01; nub5 = new Dever(prm5); nub5.addChild( CreateStructure( LoiDebit.WeirFree, nub5, false ) ); nub5.addChild( CreateStructure( LoiDebit.TriangularTruncWeirFree, nub5, false ) ); // Nub 6 : Section Paramétrée prm6 = new ParamsSectionTrapez(1, 0.5, 1, 0.01, 1, 0.01, 2); prm6.Pr.v = 0.01; nub6 = new SectionParametree(new cSnTrapez(prm6)); const prm7 = nub6.prms as ParamsSectionTrapez; // populate Session (for links) Session.getInstance().clear(); Session.getInstance().registerNub(nub1); Session.getInstance().registerNub(nub2); Session.getInstance().registerNub(nub3); Session.getInstance().registerNub(nub4); Session.getInstance().registerNub(nub5); Session.getInstance().registerNub(nub6); } /** * Check that nub has : * - exactly 1 parameter in CALC mode * - a defined calculatedParam * - at most 1 parameter in MINMAX / LISTE mode * - a valid result after calculation */ function checkConsistency(nubToCheck: Nub) { expect(nubToCheck.calculatedParam).toBeDefined(); let calcCount = 0;