public void Costant() { var expression = new Expression {Value = TokenBuilder.Number(5)}; var linqExp = ToLinqExpressionVisitor.GetExpression(expression, "x"); Assert.IsInstanceOfType(typeof(ConstantExpression), linqExp.Body); var constant = (ConstantExpression) linqExp.Body; Assert.AreEqual(ExpressionType.Constant, constant.NodeType); Assert.AreEqual(5, constant.Value); Assert.AreEqual(typeof(Double), constant.Type); }
public void AddBinaryExpression() { var expression = new Expression {Value = TokenBuilder.Variable("x")} + new Expression {Value = TokenBuilder.Number(5)}; var linqExp = ToLinqExpressionVisitor.GetExpression(expression, "x"); Assert.IsInstanceOfType(typeof(BinaryExpression), linqExp.Body); var binaryExpression = (BinaryExpression)linqExp.Body; AssertBinary(binaryExpression, ExpressionType.Add); AssertConstant(((ConstantExpression)binaryExpression.Right), 5); AssertParameter((ParameterExpression)binaryExpression.Left, "x"); }
public void AddMultiplyPrecedence() { var expression = new Expression { Value = TokenBuilder.Number(6) } + (new Expression { Value = TokenBuilder.Number(4) } * new Expression { Value = TokenBuilder.Number(3) }); var linqExp = ToLinqExpressionVisitor.GetExpression(expression, "x"); Assert.IsInstanceOfType(typeof(BinaryExpression), linqExp.Body); var binaryExpression = (BinaryExpression)linqExp.Body; AssertBinary(binaryExpression, ExpressionType.Add); AssertConstant(((ConstantExpression)binaryExpression.Left), 6); var right = (BinaryExpression) binaryExpression.Right; AssertBinary(right, ExpressionType.Multiply); AssertConstant(((ConstantExpression)right.Left), 4); AssertConstant(((ConstantExpression)right.Right), 3); }
public void Variable() { var expression = new Expression { Value = TokenBuilder.Variable("x") }; var linqExp = ToLinqExpressionVisitor.GetExpression(expression, "x"); Assert.IsInstanceOfType(typeof(ParameterExpression), linqExp.Body); var parameter = (ParameterExpression)linqExp.Body; Assert.AreEqual(ExpressionType.Parameter, parameter.NodeType); Assert.AreEqual("x", parameter.Name); Assert.AreEqual(typeof(Double), parameter.Type); }