public void TestProperties1()
{
Boo.Lang.Compiler.Ast.Module module = ParseTestCase("properties_1.boo");
ClassDefinition cd = (ClassDefinition)module.Members[0];
Assert.AreEqual("Person", cd.Name);
Assert.AreEqual("_id", cd.Members[0].Name);
Assert.AreEqual("_name", cd.Members[1].Name);
Property p = (Property)cd.Members[3];
Assert.AreEqual("ID", p.Name);
Assert.AreEqual("string", ((SimpleTypeReference)p.Type).Name);
Assert.IsNotNull(p.Getter, "Getter");
Assert.AreEqual(1, p.Getter.Body.Statements.Count);
Assert.AreEqual("_id", ((ReferenceExpression)((ReturnStatement)p.Getter.Body.Statements[0]).Expression).Name);
Assert.IsNull(p.Setter, "Setter");
p = (Property)cd.Members[4];
Assert.AreEqual("Name", p.Name);
Assert.AreEqual("string", ((SimpleTypeReference)p.Type).Name);
Assert.IsNotNull(p.Getter, "Getter ");
Assert.AreEqual(1, p.Getter.Body.Statements.Count);
Assert.AreEqual("_name", ((ReferenceExpression)((ReturnStatement)p.Getter.Body.Statements[0]).Expression).Name);
Assert.IsNotNull(p.Setter, "Setter");
Assert.AreEqual(1, p.Setter.Body.Statements.Count);
BinaryExpression a = (BinaryExpression)((ExpressionStatement)p.Setter.Body.Statements[0]).Expression;
Assert.AreEqual(BinaryOperatorType.Assign, a.Operator);
Assert.AreEqual("_name", ((ReferenceExpression)a.Left).Name);
Assert.AreEqual("value", ((ReferenceExpression)a.Right).Name);
}