コード例 #1
0
        public void Parse_OrAndTrippleAnd_Test()
        {
            var exp = @"(MatchReGroups(_9c20e9d02aba469cb130202576517d2c;""^\\d{2}(\\d{2})"";_6939ea0ddc304dbf9a28ccd2bc11779a;""^\\d+[.\\s]+(\\d+)[.\\s]+\\d+$"") AND MatchReGroups(_9c20e9d02aba469cb130202576517d2c;""^\\d{4}(\\d{2})"";_6939ea0ddc304dbf9a28ccd2bc11779a;""^(\\d+)"") AND MatchReGroups(_9c20e9d02aba469cb130202576517d2c;""^(\\d{2})"";_6939ea0ddc304dbf9a28ccd2bc11779a;""(\\d{2})$"")) OR (IsBlank(_6939ea0ddc304dbf9a28ccd2bc11779a) AND IsBlank(_9c20e9d02aba469cb130202576517d2c))";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            Assert.AreEqual("group", result.type);
            var groupOr = (Group)result;

            Assert.AreEqual("Or", groupOr.operation);
            Assert.AreEqual(2, groupOr.items.Count);

            var groupAnd1 = (Group)groupOr.items[0];
            var groupAnd2 = (Group)groupOr.items[1];

            Assert.AreEqual("And", groupAnd1.operation);
            Assert.AreEqual("And", groupAnd2.operation);

            foreach (var item in groupAnd1.items)
            {
                Assert.IsInstanceOfType(item, typeof(Condition));
            }
            foreach (var item in groupAnd2.items)
            {
                Assert.IsInstanceOfType(item, typeof(Condition));
            }
        }
コード例 #2
0
        public void Parse_NotAndGroup_Test()
        {
            var exp = "NOT (Zadost.NezadanaPriloha(\"50574d8389b94e6d9024eb2967565dc7\") AND _337fc4e428e84e0492db0af1f8af4458 <> null)";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Variables.Add("Zadost", zadostExpr);
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            Assert.AreEqual("group", result.type);
            var group = (Group)result;

            Assert.AreEqual("NotAnd", group.operation);
            Assert.AreEqual(2, group.items.Count);

            var firstItem = (Condition)group.items[0];

            Assert.AreEqual("50574d8389b94e6d9024eb2967565dc7", firstItem.field);
            Assert.AreEqual("NotSpecified", firstItem.@operator);
            Assert.IsNull(firstItem.value);
            Assert.IsNull(firstItem.secondField);

            var secondItem = (Condition)group.items[1];

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4458", secondItem.field);
            Assert.AreEqual("IsNotBlank", secondItem.@operator);
            Assert.IsNull(secondItem.value);
            Assert.IsNull(secondItem.secondField);
        }
コード例 #3
0
        public void MatchReGroups_Evaluate_Test()
        {
            var exp = "MatchReGroups(_4a11d5af8466473892e0998b3d4ad37a; \"a\"; _337fc4e428e84e0492db0af1f8af4459; \"b\")";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType  += ResolveVariableType_MatchReGroups_Evaluate;
            context.Variables.ResolveVariableValue += ResolveVariableValue_MatchReGroups_Evaluate;

            var method = context.CompileGeneric <bool>(exp);
            var result = method.Evaluate();

            Assert.IsTrue(result);
        }
コード例 #4
0
        public void Parse_TrippleAnd_Test()
        {
            var exp = "IsNotBlank(_50574d8389b94e6d9024eb2967565dc7) AND IsNotBlank(_337fc4e428e84e0492db0af1f8af4458) AND IsNotBlank(_61eaff6e5c394bb5846a7c92c01d6358)";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            Assert.AreEqual("group", result.type);
            var group = (Group)result;

            Assert.AreEqual("And", group.operation);
            Assert.AreEqual(3, group.items.Count);
        }
コード例 #5
0
        public void Parse_BoolIsBlank_Test()
        {
            var exp = "IsBlank(_337fc4e428e84e0492db0af1f8af4459)";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeBool;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4459", firstItem.field);
            Assert.AreEqual("IsBlank", firstItem.@operator);
            Assert.IsNull(firstItem.value);
            Assert.IsNull(firstItem.secondField);
        }
コード例 #6
0
        public void Parse_ZadanaPriloha_Test()
        {
            var exp = "Zadost.ZadanaPriloha(\"50574d8389b94e6d9024eb2967565dc7\")";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Variables.Add("Zadost", zadostExpr);
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("50574d8389b94e6d9024eb2967565dc7", firstItem.field);
            Assert.AreEqual("Specified", firstItem.@operator);
            Assert.IsNull(firstItem.value);
            Assert.IsNull(firstItem.secondField);
        }
コード例 #7
0
        public void Parse_DateGreaterOrEqualField_Test()
        {
            var exp = "GreaterOrEqual(_337fc4e428e84e0492db0af1f8af4459;_61eaff6e5c394bb5846a7c92c01d6358)";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeDate;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4459", firstItem.field);
            Assert.AreEqual("GreaterOrEqual", firstItem.@operator);
            Assert.IsNull(firstItem.value);
            Assert.AreEqual("61eaff6e5c394bb5846a7c92c01d6358", firstItem.secondField);
        }
コード例 #8
0
        public void Parse_StringDoesNotEqualField_Test()
        {
            var exp = "_337fc4e428e84e0492db0af1f8af4458 <> _50574d8389b94e6d9024eb2967565dc7";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4458", firstItem.field);
            Assert.AreEqual("DoesNotEqual", firstItem.@operator);
            Assert.IsNull(firstItem.value);
            Assert.AreEqual("50574d8389b94e6d9024eb2967565dc7", firstItem.secondField);
        }
コード例 #9
0
        public void Parse_StringStartsWithValue_Test()
        {
            var exp = "StartsWith(_337fc4e428e84e0492db0af1f8af4458; \"test\")";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4458", firstItem.field);
            Assert.AreEqual("StartsWith", firstItem.@operator);
            Assert.AreEqual("test", firstItem.value);
            Assert.IsNull(firstItem.secondField);
        }
コード例 #10
0
        public void MatchReGroups_WithRe_Test()
        {
            var exp = "MatchReGroups(_4a11d5af8466473892e0998b3d4ad37a; \"^(\\\\d{2})\"; _337fc4e428e84e0492db0af1f8af4459; \"(\\\\d{2})$\")";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            var matchRe = (MatchReGroups)result;

            Assert.AreEqual("4a11d5af8466473892e0998b3d4ad37a", matchRe.field);
            Assert.AreEqual("CompareRegexGroups", matchRe.@operator);
            Assert.AreEqual("^(\\d{2})", matchRe.re1);
            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4459", matchRe.secondField);
            Assert.AreEqual("(\\d{2})$", matchRe.re2);
        }
コード例 #11
0
        public void MatchReGroups_Simple_Test()
        {
            var exp = "MatchReGroups(_4a11d5af8466473892e0998b3d4ad37a; \"a\"; \"b\"; \"c\")";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeString;

            var result = context.ParseGeneric <bool>(exp);

            var matchRe = (MatchReGroups)result;

            Assert.AreEqual("4a11d5af8466473892e0998b3d4ad37a", matchRe.field);
            Assert.AreEqual("CompareRegexGroups", matchRe.@operator);
            Assert.AreEqual("a", matchRe.re1);
            Assert.AreEqual("b", matchRe.value);
            Assert.AreEqual("c", matchRe.re2);
        }
コード例 #12
0
        public void Parse_DateEqualsValue_Test()
        {
            var exp = "Equals(_337fc4e428e84e0492db0af1f8af4459;DateParse(\"1.1.2019\"))";

            var context    = new ExpressionContext();
            var zadostExpr = new ZadostExpression();

            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(ExpressionFunctions));
            context.Imports.AddType(typeof(DateTime));
            context.Variables.ResolveVariableType += Variables_ResolveVariableTypeDate;

            var result = context.ParseGeneric <bool>(exp);

            var firstItem = (Condition)result;

            Assert.AreEqual("337fc4e428e84e0492db0af1f8af4459", firstItem.field);
            Assert.AreEqual("Equals", firstItem.@operator);
            Assert.AreEqual("1.1.2019", firstItem.value);
            Assert.IsNull(firstItem.secondField);
        }