From 513db2cc7cae71bccc5ec239cda16d7d34837dcb Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 8 Jul 2019 14:26:01 +0200
Subject: [PATCH] Fix #108, added spec

---
 spec/pab/pab.spec.ts | 42 ++++++++++++++++++++++++++++++++++++++++++
 src/nub.ts           |  2 +-
 2 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/spec/pab/pab.spec.ts b/spec/pab/pab.spec.ts
index 77e42a14..c08f561d 100644
--- a/spec/pab/pab.spec.ts
+++ b/spec/pab/pab.spec.ts
@@ -6,6 +6,7 @@
  */
 // import { describe, expect, it, xdescribe, xit } from "../mock_jasmine";
 
+import { ParamValueMode, Session } from "../../src/index";
 import { CloisonAval } from "../../src/pab/cloison_aval";
 import { Cloisons, CloisonsParams } from "../../src/pab/cloisons";
 import { Pab, PabParams } from "../../src/pab/pab";
@@ -223,4 +224,45 @@ describe("Class Pab: ", () => {
         });
     });
 
+    fdescribe("calculated parameter should always be Q or Z1 - ", () => {
+        it("try setting Q and Z1 to SINGLE", () => {
+            pab.calculatedParam = pab.prms.Q;
+            pab.prms.Z1.valueMode = ParamValueMode.SINGLE;
+            expect(pab.calculatedParam.symbol).toBe("Q");
+            pab.prms.Q.valueMode = ParamValueMode.SINGLE;
+            expect(pab.calculatedParam.symbol).toBe("Z1");
+        });
+
+        it("try setting Q and Z1 to MINMAX", () => {
+            pab.calculatedParam = pab.prms.Q;
+            pab.prms.Z1.valueMode = ParamValueMode.MINMAX;
+            expect(pab.calculatedParam.symbol).toBe("Q");
+            pab.prms.Q.valueMode = ParamValueMode.MINMAX;
+            expect(pab.calculatedParam.symbol).toBe("Z1");
+        });
+
+        it("try setting Q and Z1 to MINMAX", () => {
+            pab.calculatedParam = pab.prms.Q;
+            pab.prms.Z1.valueMode = ParamValueMode.LISTE;
+            expect(pab.calculatedParam.symbol).toBe("Q");
+            pab.prms.Q.valueMode = ParamValueMode.LISTE;
+            expect(pab.calculatedParam.symbol).toBe("Z1");
+        });
+
+        it("try setting Q and Z1 to LINK", () => {
+            // clone PAB
+            const pab2 = createPabTest();
+            Session.getInstance().clear();
+            Session.getInstance().registerNub(pab);
+            Session.getInstance().registerNub(pab2);
+            // link
+            pab.prms.Z1.defineReference(pab2, "Z1");
+            expect(pab.calculatedParam.symbol).toBe("Q");
+            expect(pab.prms.Z1.valueMode).toBe(ParamValueMode.LINK);
+            pab.prms.Q.defineReference(pab2, "Q");
+            expect(pab.calculatedParam.symbol).toBe("Z1");
+            expect(pab.prms.Q.valueMode).toBe(ParamValueMode.LINK);
+        });
+    });
+
 });
diff --git a/src/nub.ts b/src/nub.ts
index c7226fd0..7cd3af94 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -513,7 +513,7 @@ export abstract class Nub extends ComputeNode implements IObservable {
                             )
                             && (p.valueMode === ParamValueMode.CALCUL)
                         ) {
-                            // trick to expose p a a result of the parent Nub
+                            // trick to expose p as a result of the parent Nub
                             res.push(new LinkedValue(this.parent, p, p.symbol));
                         } else {
                             // do not suggest parameters that are already linked to another one
-- 
GitLab