public void Docstrings()
{
/*
"""
A module can have a docstring.
"""
namespace Foo.Bar
"""
And so can the namespace declaration.
"""
class Person:
"""
A class can have it.
With multiple lines.
"""
_fname as string
"""Fields can have one."""
def constructor([required] fname as string):
"""
And so can a method or constructor.
"""
_fname = fname
FirstName as string:
"""And why couldn't a property?"""
get:
return _fname
interface ICustomer:
"""an interface."""
def Initialize()
"""interface method"""
Name as string:
"""interface property"""
get
enum AnEnum:
"""and so can an enum"""
AnItem
"""and its items"""
AnotherItem
*/
Boo.Lang.Compiler.Ast.Module module = ParseTestCase("docstrings_1.boo");
Assert.AreEqual("A module can have a docstring.", module.Documentation);
Assert.AreEqual("And so can the namespace declaration.", module.Namespace.Documentation);
ClassDefinition person = (ClassDefinition)module.Members[0];
Assert.AreEqual("A class can have it.\nWith multiple lines.", person.Documentation);
Assert.AreEqual("Fields can have one.", person.Members[0].Documentation);
Assert.AreEqual("\tAnd so can a method or constructor.\n\t", person.Members[1].Documentation);
Assert.AreEqual("And why couldn't a property?", person.Members[2].Documentation);
InterfaceDefinition customer = (InterfaceDefinition)module.Members[1];
Assert.AreEqual("an interface.", customer.Documentation);
Assert.AreEqual("interface method", customer.Members[0].Documentation);
Assert.AreEqual("interface property", customer.Members[1].Documentation);
EnumDefinition anEnum = (EnumDefinition)module.Members[2];
Assert.AreEqual("and so can an enum", anEnum.Documentation);
Assert.AreEqual("and its items", anEnum.Members[0].Documentation);
}