public void Exec_A_Diff_B_Bool_True_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 = "(A<>B)"; ParseResult parseResult = evaluator.Parse(expr); //====2/prepare the execution, provide all used variables: type and value //ExprExecResult execResult = evaluator.InitExec(); evaluator.DefineVarBool("a", false); evaluator.DefineVarBool("b", true); //====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 ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(valueBool, "The result value should be a bool"); Assert.AreEqual(true, valueBool.Value, "The result value should be: true"); }
public void fct_OP_CP_retBool_false_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()"; ParseResult parseResult = evaluator.Parse(expr); //====2/prepare the execution, provide all used variables: type and value //ExprExecResult execResult = evaluator.InitExec(); // attach the function code FctFalse() to the function call: Fct() evaluator.AttachFunction("Fct", FctFalse); //====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) ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(execResult, "The result value should be a bool"); Assert.AreEqual(false, valueBool.Value, "The result value should be: false"); }
public void fct_OP_false_Sep_false_CP_retBool_true_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(true, true, true)"; evaluator.Parse(expr); // link function body to function call var funcMapper = new Func3ParamsRetBoolMapper <bool, bool, bool>(); funcMapper.SetFunction(Fct3ParamsBool); evaluator.AttachFunction("Fct", funcMapper); //====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) ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(execResult, "The result value should be a bool"); Assert.AreEqual(true, valueBool.Value, "The result value should be: true"); }
public void fct_OP_10_Sep_bonjour_CP_retBool_true_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); evaluator.SetStringTagCode(StringTagCode.Quote); string expr = "fct(10, 'bonjour')"; evaluator.Parse(expr); // link function body to function call evaluator.AttachFunction("Fct", FctP1Int_P2String); //====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) ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(execResult, "The result value should be a bool"); Assert.AreEqual(true, valueBool.Value, "The result value should be: true"); }
public void fct_OP_not_OP_a_CP_CP_retBool_true_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(not (a))"; ParseResult parseResult = evaluator.Parse(expr); //====2/prepare the execution, provide all used variables and functions evaluator.DefineVarBool("a", true); // link function body to function call evaluator.AttachFunction("Fct", Fct_RetNot); //====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) ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(execResult, "The result value should be a bool"); Assert.AreEqual(true, valueBool.Value, "The result value should be: true"); }
public void Exec_a_gt_OP_b_Plus_5_CP_retFalse_ok() { ExpressionEval evaluator = new ExpressionEval(); evaluator.SetLang(Language.En); string expr = "a > (b+5)"; ParseResult parseResult = evaluator.Parse(expr); evaluator.DefineVarInt("a", 2); evaluator.DefineVarInt("b", 10); ExecResult execResult = evaluator.Exec(); Assert.IsFalse(execResult.HasError, "The exec of the expression should finish with success"); // check the final result value ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Assert.IsNotNull(valueBool, "The result value should be a bool"); Assert.AreEqual(false, valueBool.Value, "The result value should be: false"); }
static void Execute(ExpressionEval evaluator, string expr) //, ExprExecResult execResult) { //====2/prepare the execution, provide all used variables: type and value //====3/execute l'expression booléenne var execResult = evaluator.Exec(); // displays errors and result if (execResult.HasError) { Console.WriteLine("ERR, Une ou plusieurs erreurs ont été générées lors de l'exécution de l'expression " + expr + ", nb erreur(s): " + execResult.ListError.Count); // affiche les erreurs int i = 0; foreach (ExprError error in execResult.ListError) { i++; Console.WriteLine("erreur N°" + i + ": " + error.Code.ToString() + ", " + error.ListErrorParam[0].Key + ": " + error.ListErrorParam[0].Value); } return; } //====4/display the result of the execution of the expression string typeRes = "NA"; string valueRes = "NA"; ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; if (valueBool != null) { typeRes = "bool"; valueRes = valueBool.Value.ToString(); } // others types: todo: Console.WriteLine("Execution Result of the expression, type: " + typeRes + ", value: " + valueRes); Console.WriteLine("Execution Result: " + valueBool.Value.ToString()); }
static void OP_A_Eq_B_CP_Exec2Times() { string expr = "(A = B)"; ExpressionEval evaluator = new ExpressionEval(); //====1/décode l'expression booléenne ParseResult parseResult = evaluator.Parse(expr); //====2/prepare the execution, provide all used variables: type and value, remove the previous result //ExprExecResult execResult = evaluator.InitExec(); evaluator.DefineVarInt("a", 15); evaluator.DefineVarInt("b", 15); //====3/execute l'expression booléenne ExecResult execResult = evaluator.Exec(); //====4/get the result, its a bool value ExprExecValueBool valueBool = execResult.ExprExec as ExprExecValueBool; Console.WriteLine("Execution Result: " + valueBool.Value.ToString()); //====================================================== //====2/prepare the execution, provide all used variables: type and value, remove the previous result //execResult = evaluator.InitExec(); evaluator.DefineVarBool("a", false); evaluator.DefineVarBool("b", false); //====3/execute l'expression booléenne execResult = evaluator.Exec(); //====4/get the result, its a bool value valueBool = execResult.ExprExec as ExprExecValueBool; Console.WriteLine("Execution Result: " + valueBool.Value.ToString()); }