public void ParseFunExpression()
{
Parser parser = new Parser("fun(X,Y) -> X+Y end.");
var expr = parser.ParseExpression();
Assert.IsNotNull(expr);
Assert.IsInstanceOfType(expr, typeof(FunExpression));
var fexpr = (FunExpression)expr;
Assert.AreEqual(2, fexpr.ParameterExpressions.Count);
Assert.IsInstanceOfType(fexpr.ParameterExpressions[0], typeof(VariableExpression));
Assert.AreEqual("X", ((VariableExpression)fexpr.ParameterExpressions[0]).Variable.Name);
Assert.IsInstanceOfType(fexpr.ParameterExpressions[1], typeof(VariableExpression));
Assert.AreEqual("Y", ((VariableExpression)fexpr.ParameterExpressions[1]).Variable.Name);
Assert.IsNotNull(fexpr.Body);
Assert.IsInstanceOfType(fexpr.Body, typeof(AddExpression));
Assert.IsNull(parser.ParseExpression());
}