public void Group_Gr_Eq()
        {
            //>, =
            string           expr       = ">=";
            List <ExprToken> listTokens = TestCommon.AddTokens(">", "=");


            List <string> listSpecialOperators = new List <string>();

            listSpecialOperators.Add("<>");
            listSpecialOperators.Add(">=");
            listSpecialOperators.Add("<=");

            ExprScanner parser = new ExprScanner();

            ExpressionEvalConfig evalConfig = TestCommon.BuildDefaultConfig();

            parser.SetConfiguration(evalConfig);

            List <ExprToken> listTokensGrp = parser.GroupTokens(expr, listTokens);

            Assert.AreEqual(1, listTokensGrp.Count, expr + " should contains 1 token");
            Assert.AreEqual(">=", listTokensGrp[0].Value, expr + " should contains 1 '>='");
            Assert.AreEqual(0, listTokensGrp[0].Position, expr + " should contains 1 '>='");
        }
예제 #2
0
        public void TwoSpace()
        {
            ExprScanner parser = new ExprScanner();

            string expr = "  ";

            List <ExprToken> listTokens = parser.SplitExpr(expr);

            Assert.AreEqual(0, listTokens.Count, expr + " should contains 0 tokens");
        }
예제 #3
0
        public void Spc_BrO_Spc()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = " ( ";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(1, listTokens.Count, expr + " should contains 1 token");
            Assert.AreEqual("(", listTokens[0].Value);
        }
예제 #4
0
        public void Spc_Minus_Spc_12_Spc()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = " - 12 ";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(2, listTokens.Count, expr + " should contains 2 tokens");
            Assert.AreEqual("-", listTokens[0].Value);
            Assert.AreEqual("12", listTokens[1].Value);
        }
        public void A_STR_QsQ_STR_c()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = "a \"s\" c";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(3, listTokens.Count, expr + " should contains 3 tokens");
            Assert.AreEqual("a", listTokens[0].Value);
            Assert.AreEqual("\"s\"", listTokens[1].Value);
            Assert.AreEqual("c", listTokens[2].Value);
        }
예제 #6
0
        public void Group_a_Plus_Minus_12()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = "a+-12";

            List <ExprToken> listTokens    = scanner.SplitExpr(expr);
            List <ExprToken> listTokensGrp = scanner.GroupTokens(expr, listTokens);

            Assert.AreEqual(3, listTokensGrp.Count, expr + " should contains 3 grouped tokens");
            Assert.AreEqual("a", listTokensGrp[0].Value);
            Assert.AreEqual("+", listTokensGrp[1].Value);
            Assert.AreEqual("-12", listTokensGrp[2].Value);
        }
예제 #7
0
        public static void BuildDefaultConfig(ExprScanner scanner)
        {
            // configure
            ExpressionEvalConfig exprEvalConfig = new ExpressionEvalConfig();

            exprEvalConfig.SetLang(Language.En);
            exprEvalConfig.SetStringTagCode(StringTagCode.DoubleQuote);

            ExprOperatorBuilder operatorsBuilder = new ExprOperatorBuilder();

            operatorsBuilder.BuildOperators(exprEvalConfig);

            //ExpressionEvalConfig evalConfig = new ExpressionEvalConfig();
            //scanner.SetListSpecial2CharOperators(exprEvalConfig.ListSpecial2CharOperators);
            scanner.SetConfiguration(exprEvalConfig);
        }
        public void DontGroup_Gr_Ls()
        {
            //>, =
            string           expr       = ">=";
            List <ExprToken> listTokens = TestCommon.AddTokens(">", "<");

            ExpressionEvalConfig exprOperators = TestCommon.BuildDefaultConfig();
            ExpressionEvalConfig evalConfig    = new ExpressionEvalConfig();
            ExprScanner          parser        = new ExprScanner();

            parser.SetConfiguration(evalConfig);

            List <ExprToken> listTokensGrp = parser.GroupTokens(expr, listTokens);

            Assert.AreEqual(2, listTokens.Count, expr + " should contains 2 tokens");
        }
예제 #9
0
        public void A_Gt_B()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = "(A>B)";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(5, listTokens.Count, expr + " should contains 5 tokens");
            Assert.AreEqual("(", listTokens[0].Value);
            Assert.AreEqual("A", listTokens[1].Value);
            Assert.AreEqual(">", listTokens[2].Value);
            Assert.AreEqual("B", listTokens[3].Value);
            Assert.AreEqual(")", listTokens[4].Value);
        }
예제 #10
0
        public void Spc_A__Spc_Lt_Spc_Eq_Spc_B_Spc()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = "( A < = B )";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(6, listTokens.Count, expr + " should contains 6 tokens");
            Assert.AreEqual("(", listTokens[0].Value);
            Assert.AreEqual("A", listTokens[1].Value);
            Assert.AreEqual("<", listTokens[2].Value);
            Assert.AreEqual("=", listTokens[3].Value);
            Assert.AreEqual("B", listTokens[4].Value);
            Assert.AreEqual(")", listTokens[5].Value);
        }
예제 #11
0
        public void Fct_OneParam()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            string expr = "( fct(a))";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(6, listTokens.Count, expr + " should contains 6 tokens");
            Assert.AreEqual("(", listTokens[0].Value);
            Assert.AreEqual("fct", listTokens[1].Value);
            Assert.AreEqual("(", listTokens[2].Value);
            Assert.AreEqual("a", listTokens[3].Value);
            Assert.AreEqual(")", listTokens[4].Value);
            Assert.AreEqual(")", listTokens[5].Value);
        }
        public void A_STR_s_c()
        {
            ExprScanner scanner = new ExprScanner();

            // todo: parametriser stringtag: Quote ou DoubleQuote
            ExpressionEvalConfig config = TestCommon.BuildDefaultConfig();

            config.SetStringTagCode(StringTagCode.Quote);
            scanner.SetConfiguration(config);


            string expr = "a 's c";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(2, listTokens.Count, expr + " should contains 2 tokens");
            Assert.AreEqual("a", listTokens[0].Value);
            Assert.AreEqual("'s c", listTokens[1].Value);
        }
        public void A_STR_s_s_s_STR_c()
        {
            ExpressionEvalConfig config = TestCommon.BuildDefaultConfig();

            config.SetStringTagCode(StringTagCode.Quote);

            ExprScanner scanner = new ExprScanner();

            scanner.SetConfiguration(config);

            string expr = "a 's s s' c";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(3, listTokens.Count, expr + " should contains 3 tokens");
            Assert.AreEqual("a", listTokens[0].Value);
            Assert.AreEqual("'s s s'", listTokens[1].Value);
            Assert.AreEqual("c", listTokens[2].Value);
        }
        public void Group_Bra_A_Gr_Eq_B_Bra()
        {
            //>, =
            string           expr       = ">=";
            List <ExprToken> listTokens = TestCommon.AddTokens("(", "A", ">");

            TestCommon.AddTokens(listTokens, "=", "B", ")");

            ExprScanner parser = new ExprScanner();

            ExpressionEvalConfig evalConfig = TestCommon.BuildDefaultConfig();

            parser.SetConfiguration(evalConfig);

            List <ExprToken> listTokensGrp = parser.GroupTokens(expr, listTokens);

            Assert.AreEqual(5, listTokensGrp.Count, expr + " should contains 5 tokens");

            Assert.AreEqual(">=", listTokensGrp[2].Value, expr + " should contains '>='");
        }
예제 #15
0
        public void Fct_TwoParam()
        {
            ExprScanner scanner = new ExprScanner();

            TestCommon.BuildDefaultConfig(scanner);

            // todo: seulement si le parametre FunctionCallAvailable est à true!!
            // et si le separator est défini a std  (DoubleAndFunctionCallParameterSeparator= Std)
            string expr = "( fct(a,b))";

            List <ExprToken> listTokens = scanner.SplitExpr(expr);

            Assert.AreEqual(8, listTokens.Count, expr + " should contains 8 tokens");
            Assert.AreEqual("(", listTokens[0].Value);
            Assert.AreEqual("fct", listTokens[1].Value);
            Assert.AreEqual("(", listTokens[2].Value);
            Assert.AreEqual("a", listTokens[3].Value);
            Assert.AreEqual(",", listTokens[4].Value);
            Assert.AreEqual("b", listTokens[5].Value);
            Assert.AreEqual(")", listTokens[6].Value);
            Assert.AreEqual(")", listTokens[7].Value);
        }