public void TestEvaluateExpression() { InputValues inputValues = new InputValues() { MaxCardinality = 1, MinCardinality = 0, MaxDepth = 32, NextDepth = 1, NoMaxDepth = true, IsArray = true, Normalized = false, ReferenceOnly = true, Structured = true }; List <Tuple <string, bool> > exprAndExpectedResultList = new List <Tuple <string, bool> >(); { exprAndExpectedResultList.Add(new Tuple <string, bool>("(cardinality.maximum > 1) && (!referenceOnly)", false)); exprAndExpectedResultList.Add(new Tuple <string, bool>("", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>(" ", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("always", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("!structured", false)); exprAndExpectedResultList.Add(new Tuple <string, bool>("referenceOnly || (depth > 5)", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("!(referenceOnly)", false)); exprAndExpectedResultList.Add(new Tuple <string, bool>("!(normalized && cardinality.maximum > 1)", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("true", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("(((true==true)))", true)); exprAndExpectedResultList.Add(new Tuple <string, bool>("!(normalized && isArray) || noMaxDepth", false)); } foreach (var item in exprAndExpectedResultList) { bool actual = ExpressionTree.EvaluateCondition(item.Item1, inputValues); bool expected = item.Item2; Assert.AreEqual(expected, actual); } }