public void ItShouldParseExpression() { const string text = "( {0} + {1} ) * ( {2} * 1 )"; var rule = new RuleTree <int, int>(text); var expression = rule.GetExpression(); Assert.AreEqual("0", expression.Parameters[0].ToString()); Assert.AreEqual("1", expression.Parameters[1].ToString()); Assert.AreEqual(ExpressionType.Multiply, expression.Body.NodeType); }
public void ItShouldGetExpresionWhenvalidate() { var i = new Mock <IRule <int, int> >(); var j = new Mock <IRule <int, int> >(); i.Setup(x => x.GetResult()).Returns(SetDictionary("1", 1)); j.Setup(x => x.GetResult()).Returns(SetDictionary("2", 2)); var operation = new Mock <IOperation>(); operation.Setup(x => x.GetOperator()).Returns(ExpressionType.Add); var rule = new RuleTree <int, int> { I = i.Object, J = j.Object, Operation = operation.Object }; var expression = rule.GetExpression(); Assert.IsNotNull(expression); Assert.AreEqual("0", expression.Parameters[0].ToString()); Assert.AreEqual("1", expression.Parameters[1].ToString()); Assert.AreEqual(ExpressionType.Add, expression.Body.NodeType); }
public void ItShouldNotGetExpressionWhenNotValidate() { var rule = new RuleTree <int, int>(); Assert.Throws(typeof(RuleException), () => rule.GetExpression()); }