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)); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }