import { CreateStructure, LoiDebit, ParallelStructure, ParallelStructureParams, Session, Structure } from "../../src/index"; import { RectangularStructureParams } from "../../src/structure/structure_cem88d"; import { NubTest, NubTestParams } from "../nubtest"; /** * 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, fail } from "../mock_jasmine"; let nub1: NubTest; let nub2: NubTest; let nub3: NubTest; let prm1: NubTestParams; let prm2: NubTestParams; let prm3: NubTestParams; /** * crée l'environnement de test. * répété à chaque test car il manque un mock de beforeEach */ function createEnv() { nub1 = new NubTest(new NubTestParams()); prm1 = nub1.prms as NubTestParams; nub2 = new NubTest(new NubTestParams()); prm2 = nub2.prms as NubTestParams; nub3 = new NubTest(new NubTestParams()); prm3 = nub3.prms as NubTestParams; Session.getInstance().clear(); Session.getInstance().registerNub(nub1); Session.getInstance().registerNub(nub2); Session.getInstance().registerNub(nub3); } describe("référence d'un paramètre à un autre : ", () => { describe("vérification des références circulaires : ", () => { it("test 1", () => { // cas de figure (ne doit pas échouer) : // nub2.A référence nub1.A createEnv(); try { prm2.A.defineReference(nub1, "A"); // ne doit pas échouer } catch (e) { fail(); } }); it("test 2", () => { // cas de figure (ne doit pas échouer) : // nub1.A référence nub2.A qui référence nub3.A createEnv(); try { prm1.A.defineReference(nub2, "A"); prm2.A.defineReference(nub3, "A"); } catch (e) { fail(); } }); it("test 3", () => { // cas de figure (doit échouer) : // nub2.A référence nub1.A qui référence nub2.A createEnv(); try { prm2.A.defineReference(nub1, "A"); // ne doit pas échouer prm1.A.defineReference(nub2, "A"); // doit échouer fail(); // tslint:disable-next-line:no-empty } catch (e) {} }); it("test 4", () => { // cas de figure (doit échouer) : // param1 référence param2 (OK) // param3 référence param1 (OK) // param2 référence param3 (doit échouer) createEnv(); try { prm1.A.defineReference(nub2, "A"); // ne doit pas échouer prm3.A.defineReference(nub2, "A"); // ne doit pas échouer } catch (e) { fail(); } try { prm2.A.defineReference(nub3, "A"); // doit échouer fail(); // tslint:disable-next-line:no-empty } catch (e) { } }); it("test 5 : ouvrages en parallèle", () => { // cas de figure : // - le param. de l'ouvrage 2 référence le param. de l'ouvrage 1 (ne doit pas échouer) // - le param. de l'ouvrage 2 référence le param. en calcul de l'ouvrage 1, // via le résultat du Nub ParallelStructure (doit échouer) const psp: ParallelStructureParams = new ParallelStructureParams(1, 2, 3); const pst = new ParallelStructure(psp); const st1: Structure = CreateStructure(LoiDebit.WeirCem88d, pst); pst.addChild(st1); const prmS1 = (st1.prms as RectangularStructureParams); const st2: Structure = CreateStructure(LoiDebit.WeirCem88d, pst); const prmS2 = (st2.prms as RectangularStructureParams); pst.addChild(st2); pst.calculatedParam = prmS1.L; Session.getInstance().clear(); Session.getInstance().registerNub(pst); try { prmS2.W.defineReference(st1, "W"); // ne doit pas échouer } catch (e) { fail(); } try { prmS2.L.defineReference(pst, "L"); // doit échouer fail(); // tslint:disable-next-line:no-empty } catch (e) { } }); }); });