public void ParsePredicateTest() { //Create parser PredicateParser predicateParser = new PredicateParser(Init("condition1 && condition2 || condition3")); Predicate parsedPredicate = predicateParser.ParsePredicate(); //Check Predicates Assert.AreEqual(typeof(AndPredicate), parsedPredicate.GetType()); //Check OrPredicate AndPredicate parsedAndPredicate = (AndPredicate)parsedPredicate; Assert.AreEqual(typeof(ExpressionPredicate), parsedAndPredicate.GetLeftPredicate().GetType()); Assert.AreEqual(typeof(OrPredicate), parsedAndPredicate.GetRightPredicate().GetType()); //Check nested OrPredicate OrPredicate parsedNestedOrPredicate = (OrPredicate)parsedAndPredicate.GetRightPredicate(); Assert.AreEqual(typeof(ExpressionPredicate), parsedNestedOrPredicate.GetLeftPredicate().GetType()); Assert.AreEqual(typeof(ExpressionPredicate), parsedNestedOrPredicate.GetRightPredicate().GetType()); }
public void ParseNotPredicateTest() { //Create parser PredicateParser predicateParser = new PredicateParser(Init("! condition1 && test.list?")); Predicate parsedPredicate = predicateParser.ParsePredicate(); //Check Predicates Assert.AreEqual(typeof(NotPredicate), parsedPredicate.GetType()); //Check AndPredicate Predicate parsedInnerPredicate = ((NotPredicate)parsedPredicate).GetPredicate(); Assert.AreEqual(typeof(AndPredicate), parsedInnerPredicate.GetType()); AndPredicate parsedInnerAndPredicate = (AndPredicate)parsedInnerPredicate; Assert.AreEqual(typeof(ExpressionPredicate), parsedInnerAndPredicate.GetLeftPredicate().GetType()); Assert.AreEqual(typeof(IsPredicate), parsedInnerAndPredicate.GetRightPredicate().GetType()); }