public void fct_OP_a_CP_retDouble_P1String_ok() { ExpressionEval evaluator = new ExpressionEval(); // definir langue: fr ou en, sert pour les opérateurs: ET/AND, OU/OR, NON/NOT. evaluator.SetLang(Language.En); string expr = "fct(a)"; ParseResult parseResult = evaluator.Parse(expr); //====2/prepare the execution, provide all used variables: type and value //ExprExecResult execResult = evaluator.InitExec(); // 3 letters -> return 3x1.5=4.5 evaluator.DefineVarString("a", "abc"); // link function body to function call evaluator.AttachFunction("Fct", FctDouble_String); //====3/execute l'expression booléenne ExecResult execResult = evaluator.Exec(); Assert.AreEqual(false, execResult.HasError, "The exec of the expression should finish with success"); // check the final result value (is ExprExecFunctionCallBool override ExprExecValueBool) ExprExecValueDouble valueDouble = execResult.ExprExec as ExprExecValueDouble; Assert.IsNotNull(valueDouble, "The result value should be a double"); Assert.AreEqual(4.5, valueDouble.Value, "The result value should be: true"); }
public void Exec_26dot5_Plus_4_Ret_30dot5_Ok() { ExpressionEval evaluator = new ExpressionEval(); // definir langue: fr ou en, sert pour les opérateurs: ET/AND, OU/OR, NON/NOT. evaluator.SetLang(Language.En); string expr = "26.5+4"; ParseResult parseResult = evaluator.Parse(expr); ExecResult execResult = evaluator.Exec(); Assert.AreEqual(false, execResult.HasError, "The exec of the expression should finish with success"); // check the final result value ExprExecValueDouble valueDouble = execResult.ExprExec as ExprExecValueDouble; Assert.IsNotNull(valueDouble, "The result value should be a bool"); Assert.AreEqual(30.5, valueDouble.Value, "The result value should be: 30.5"); }
public void Exec_2_mul_4_div_3_Ret_Double_Ok() { ExpressionEval evaluator = new ExpressionEval(); // definir langue: fr ou en, sert pour les opérateurs: ET/AND, OU/OR, NON/NOT. evaluator.SetLang(Language.En); string expr = "2*4/3"; ParseResult parseResult = evaluator.Parse(expr); ExecResult execResult = evaluator.Exec(); Assert.IsFalse(execResult.HasError, "The exec of the expression should finish with success"); // check the final result value ExprExecValueDouble valueDouble = execResult.ExprExec as ExprExecValueDouble; Assert.IsNotNull(valueDouble, "The result value should be a bool"); Assert.IsTrue(valueDouble.Value > 2.666, "The result value should be greater than 2.666"); Assert.IsTrue(valueDouble.Value < 2.667, "The result value should be lesser than 2.667"); }