From 82ae2e746a65201539af806af636ce461232c914 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 24 May 2019 16:36:44 +0200 Subject: [PATCH] Added jalhyd tests for linked multiple variated params --- spec/param/param_multivar.spec.ts | 227 ++++++++++++++++++++++++------ 1 file changed, 185 insertions(+), 42 deletions(-) diff --git a/spec/param/param_multivar.spec.ts b/spec/param/param_multivar.spec.ts index 188ad7b3..dea5b5bb 100644 --- a/spec/param/param_multivar.spec.ts +++ b/spec/param/param_multivar.spec.ts @@ -1,22 +1,44 @@ import { CreateStructure, ExtensionStrategy, LoiDebit, ParallelStructure, ParallelStructureParams, - ParamValueMode, Structure} from "../../src/index"; + ParamValueMode, Structure, Session} from "../../src/index"; import { RectangularStructureParams } from "../../src/structure/structure_cem88d"; let prms1: ParallelStructureParams; let nub1: ParallelStructure; let struct1: Structure; -let prmsStruct: RectangularStructureParams; +let prmsStruct1: RectangularStructureParams; + +let prms2: ParallelStructureParams; +let nub2: ParallelStructure; +let struct2: Structure; +let prmsStruct2: RectangularStructureParams; function createSingleNubEnv() { prms1 = new ParallelStructureParams(0.5, 102, 101.5); nub1 = new ParallelStructure(prms1); struct1 = CreateStructure(LoiDebit.Cunge80, nub1); - prmsStruct = struct1.prms as RectangularStructureParams; + prmsStruct1 = struct1.prms as RectangularStructureParams; nub1.addChild(struct1); } function createLinkedNubEnv() { - // TODO + prms1 = new ParallelStructureParams(0.5, 102, 101.5); + nub1 = new ParallelStructure(prms1); + struct1 = CreateStructure(LoiDebit.Cunge80, nub1); + prmsStruct1 = struct1.prms as RectangularStructureParams; + nub1.addChild(struct1); + + prms2 = new ParallelStructureParams(0.5, 102, 101.5); + nub2 = new ParallelStructure(prms2); + struct2 = CreateStructure(LoiDebit.Cunge80, nub2); + prmsStruct2 = struct2.prms as RectangularStructureParams; + nub2.addChild(struct2); + + Session.getInstance().clear(); + Session.getInstance().registerNub(nub1); + Session.getInstance().registerNub(nub2); + + prms2.Z1.defineReference(nub1, "Z1"); + prmsStruct2.L.defineReference(struct1, "L"); } /** @@ -52,11 +74,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -67,11 +89,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues(1.89, 2.1, 0.03); // 8 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues(1.89, 2.1, 0.03); // 8 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -82,11 +104,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.1); // 21 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -97,11 +119,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues([ 100, 101, 102 ]); // 3 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -112,11 +134,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues([ 100, 100.3, 100.7, 101, 101.3, 101.7, 102, 102.3, 115 ]); // 9 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -127,11 +149,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; - prmsStruct.L.setValues(1.89, 2.15, 0.06); // 5 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues(1.89, 2.15, 0.06); // 5 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -175,11 +197,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -190,11 +212,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues(1.89, 2.1, 0.03); // 8 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues(1.89, 2.1, 0.03); // 8 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -205,11 +227,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.1); // 21 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -220,11 +242,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues([ 100, 101, 102 ]); // 3 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -235,11 +257,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues([ 100, 100.3, 100.7, 101, 101.3, 101.7, 102, 102.3, 115 ]); // 9 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -250,11 +272,11 @@ describe("multiple variated parameters - ", () => { createSingleNubEnv(); prms1.Z1.setValues(100, 102, 0.5); // 5 values prms1.Z1.extensionStrategy = ExtensionStrategy.RECYCLE; - prmsStruct.L.setValues(1.89, 2.15, 0.06); // 5 values - prmsStruct.L.extensionStrategy = ExtensionStrategy.RECYCLE; + prmsStruct1.L.setValues(1.89, 2.15, 0.06); // 5 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.RECYCLE; // check that both parameters are varying expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); - expect(prmsStruct.L.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); // check that calculation works const res = nub1.CalcSerie(); expect(res).toBeDefined(); @@ -292,7 +314,128 @@ describe("multiple variated parameters - ", () => { }); }); - describe("on different linked Nubs - ", () => { - // TODO + describe("on different linked Nubs, with REPEAT_LAST strategy - ", () => { + + it("test 1 : minmax < list", () => { + createLinkedNubEnv(); + prms1.Z1.setValues(100, 102, 0.5); // 5 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(9); + }); + + it("test 2 : minmax < minmax", () => { + createLinkedNubEnv(); + prms1.Z1.setValues(100, 102, 0.5); // 5 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues(1.89, 2.1, 0.03); // 8 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(8); + }); + + it("test 3 : list < minmax", () => { + createLinkedNubEnv(); + prms1.Z1.setValues(100, 102, 0.1); // 21 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(21); + }); + + it("test 4 : list < list", () => { + createLinkedNubEnv(); + prms1.Z1.setValues([ 100, 101, 102 ]); // 3 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(9); + }); + + it("test 5 : list = list", () => { + createLinkedNubEnv(); + prms1.Z1.setValues([ 100, 100.3, 100.7, 101, 101.3, 101.7, 102, 102.3, 115 ]); // 9 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues([ 1.89, 1.91, 1.99, 2, 1.7, 2.1, 2.18, 2.23, 2.6 ]); // 9 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.LISTE); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.LISTE); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(9); + }); + + it("test 6 : list = minmax", () => { + createLinkedNubEnv(); + prms1.Z1.setValues(100, 102, 0.5); // 5 values + prms1.Z1.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + prmsStruct1.L.setValues(1.89, 2.15, 0.06); // 5 values + prmsStruct1.L.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + // check that both parameters are varying + expect(prms1.Z1.valueMode).toBe(ParamValueMode.MINMAX); + expect(prmsStruct1.L.valueMode).toBe(ParamValueMode.MINMAX); + // check that calculation works + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(5); + }); + + it("test 7 : all parameters varying with random lengths", () => { + createLinkedNubEnv(); + let longest = 0; + let sparedParam = null; + // set all parameters to LIST mode with random length (except the first that has to stay in CALC mode) + for (const p of nub2.parameterIterator) { + if (p.visible) { + if (! sparedParam) { + sparedParam = p; + nub2.calculatedParam = p; + } else { + if (p.valueMode !== ParamValueMode.LINK) { + const rl = randomList(p.singleValue); + longest = Math.max(longest, rl.length); + p.setValues(rl); + p.extensionStrategy = ExtensionStrategy.REPEAT_LAST; + } + } + } + } + // check that all parameters are varying + for (const p of nub2.parameterIterator) { + if (p.visible && p !== sparedParam && p.valueMode !== ParamValueMode.LINK) { + expect(p.hasMultipleValues).toBe(true); + } + } + // check that calculation works and length of result is length of the longest values list + const res = nub2.CalcSerie(); + expect(res).toBeDefined(); + expect(res.resultElements.length).toBe(longest); + }); }); }); -- GitLab