AjErl.Tests.Compiler.ParserTests.ParseFunctionFormWithArgumentsAndExpressionBody C# (CSharp) Method

ParseFunctionFormWithArgumentsAndExpressionBody() private method

private ParseFunctionFormWithArgumentsAndExpressionBody ( ) : void
return void
        public void ParseFunctionFormWithArgumentsAndExpressionBody()
        {
            Parser parser = new Parser("add(X,Y) -> X+Y.");

            var result = parser.ParseForm();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(FunctionForm));

            var fdef = (FunctionForm)result;

            Assert.AreEqual("add", fdef.Name);
            Assert.IsNotNull(fdef.ParameterExpressions);

            Assert.AreEqual(2, fdef.ParameterExpressions.Count);
            Assert.IsInstanceOfType(fdef.ParameterExpressions[0], typeof(VariableExpression));
            Assert.IsInstanceOfType(fdef.ParameterExpressions[1], typeof(VariableExpression));
            Assert.AreEqual("X", ((VariableExpression)fdef.ParameterExpressions[0]).Variable.Name);
            Assert.AreEqual("Y", ((VariableExpression)fdef.ParameterExpressions[1]).Variable.Name);

            Assert.IsNotNull(fdef.Body);
            Assert.IsInstanceOfType(fdef.Body, typeof(AddExpression));

            var addexpr = (AddExpression)fdef.Body;
            Assert.IsInstanceOfType(addexpr.LeftExpression, typeof(VariableExpression));
            Assert.IsInstanceOfType(addexpr.RightExpression, typeof(VariableExpression));
            Assert.AreEqual("X", ((VariableExpression)addexpr.LeftExpression).Variable.Name);
            Assert.AreEqual("Y", ((VariableExpression)addexpr.RightExpression).Variable.Name);
        }