import { Result } from "../src/util/result"; import { Nub } from "../src/nub"; import { ComputeNodeType, ParamCalculability, ParamDefinition, ParamDomainValue, ParamsEquation } from "../src/param"; class NubTestParams extends ParamsEquation { private _A: ParamDefinition; private _B: ParamDefinition; private _C: ParamDefinition; constructor() { super(); this._A = new ParamDefinition(ComputeNodeType.Test, "A", ParamDomainValue.POS_NULL, 1); this._B = new ParamDefinition(ComputeNodeType.Test, "B", ParamDomainValue.POS_NULL, 2); this._C = new ParamDefinition(ComputeNodeType.Test, "C", ParamDomainValue.POS_NULL, 3); this.addParamDefinition(this._A); this.addParamDefinition(this._B); this.addParamDefinition(this._C); } get A() { return this._A; } get B() { return this._B; } get C() { return this._C; } } export class NubTest extends Nub { constructor(prms: NubTestParams, dbg: boolean = false) { super(prms, dbg); } protected setParametersCalculability() { this.getParameter("A").calculability = ParamCalculability.DICHO; this.getParameter("B").calculability = ParamCalculability.DICHO; this.getParameter("C").calculability = ParamCalculability.EQUATION; } get prms(): NubTestParams { return this._prms as NubTestParams; } Equation(): Result { // C = A+B return new Result(this.prms.A.v + this.prms.B.v); } } export let nub = new NubTest(new NubTestParams());