public IsMatch ( JToken root, JToken t ) : bool | ||
root | JToken | |
t | JToken | |
Résultat | bool |
public override bool IsMatch(JToken root, JToken t)
{
switch (Operator)
{
case QueryOperator.And:
foreach (QueryExpression e in Expressions)
{
if (!e.IsMatch(root, t))
{
return false;
}
}
return true;
case QueryOperator.Or:
foreach (QueryExpression e in Expressions)
{
if (e.IsMatch(root, t))
{
return true;
}
}
return false;
default:
throw new ArgumentOutOfRangeException();
}
}
}
public void AndExpressionTest() { CompositeExpression compositeExpression = new CompositeExpression { Operator = QueryOperator.And, Expressions = new List<QueryExpression> { new BooleanQueryExpression { Operator = QueryOperator.Exists, Path = new List<PathFilter> { new FieldFilter { Name = "FirstName" } } }, new BooleanQueryExpression { Operator = QueryOperator.Exists, Path = new List<PathFilter> { new FieldFilter { Name = "LastName" } } } } }; JObject o1 = new JObject { {"Title","Title!"}, {"FirstName", "FirstName!"}, {"LastName", "LastName!"} }; Assert.IsTrue(compositeExpression.IsMatch(o1)); JObject o2 = new JObject { {"Title","Title!"}, {"FirstName", "FirstName!"} }; Assert.IsFalse(compositeExpression.IsMatch(o2)); JObject o3 = new JObject { {"Title","Title!"} }; Assert.IsFalse(compositeExpression.IsMatch(o3)); }