public void ParseTwoBinaryExpressionDifferentLevels()
{
IExpression expression = this.ParseExpression("a + 2 * 3");
Assert.IsNotNull(expression);
Assert.IsInstanceOfType(expression, typeof(ArithmeticBinaryExpression));
ArithmeticBinaryExpression arithmeticExpression = (ArithmeticBinaryExpression)expression;
Assert.AreEqual(ArithmeticOperator.Add, arithmeticExpression.Operation);
Assert.IsNotNull(arithmeticExpression.LeftExpression);
Assert.IsInstanceOfType(arithmeticExpression.LeftExpression, typeof(VariableExpression));
Assert.IsNotNull(arithmeticExpression.RightExpression);
Assert.IsInstanceOfType(arithmeticExpression.RightExpression, typeof(ArithmeticBinaryExpression));
ArithmeticBinaryExpression rigthExpression = (ArithmeticBinaryExpression)arithmeticExpression.RightExpression;
Assert.AreEqual(ArithmeticOperator.Multiply, rigthExpression.Operation);
Assert.IsInstanceOfType(rigthExpression.LeftExpression, typeof(ConstantExpression));
Assert.IsInstanceOfType(rigthExpression.RightExpression, typeof(ConstantExpression));
}