public void ParseBlockWithParametersAndLocalVariables()
{
ModelParser parser = new ModelParser("[ :a :b | | x y | ^a + b]");
IExpression expression = parser.ParseExpression();
Assert.IsNotNull(expression);
Assert.IsInstanceOfType(expression, typeof(BlockExpression));
BlockExpression bexpression = (BlockExpression)expression;
Assert.IsNotNull(bexpression.Body);
Assert.IsInstanceOfType(bexpression.Body.First(), typeof(ReturnExpression));
Assert.AreEqual(2, bexpression.ParameterNames.Count);
Assert.AreEqual("a", bexpression.ParameterNames[0]);
Assert.AreEqual("b", bexpression.ParameterNames[1]);
Assert.AreEqual(2, bexpression.LocalVariables.Count);
Assert.AreEqual("x", bexpression.LocalVariables[0]);
Assert.AreEqual("y", bexpression.LocalVariables[1]);
Assert.AreEqual("[ :a :b | | x y | ^a + b]", expression.AsString());
}