public void StaticFields() { String contents = "class MyClass \r\n" + " @@myfield = 1 " + " @@otherfield = 22 " + "end \r\n"; CompilationUnitNode unit = RookParser.ParseContents(contents); Assert.IsNotNull(unit); Assert.AreEqual(0, unit.Namespaces.Count); Assert.AreEqual(1, unit.ClassesTypes.Count); ClassDefinitionStatement ClassDefinitionStatement = unit.ClassesTypes[0] as ClassDefinitionStatement; Assert.IsNotNull(ClassDefinitionStatement); Assert.AreEqual("MyClass", ClassDefinitionStatement.Name); Assert.AreEqual(0, ClassDefinitionStatement.BaseTypes.Count); Assert.AreEqual(2, ClassDefinitionStatement.Statements.Count); FieldDeclarationStatement stmt = ClassDefinitionStatement.Statements[0] as FieldDeclarationStatement; Assert.IsNotNull(stmt); Assert.AreEqual("@@myfield", (stmt.Target as StaticFieldReferenceExpression).Name); Assert.AreEqual("1", (stmt.Value as LiteralExpression).Value); stmt = ClassDefinitionStatement.Statements[1] as FieldDeclarationStatement; Assert.IsNotNull(stmt); Assert.AreEqual("@@otherfield", (stmt.Target as StaticFieldReferenceExpression).Name); Assert.AreEqual("22", (stmt.Value as LiteralExpression).Value); }
public void AssignmentsAndAccessLevels() { String contents = "class MyClass \r\n" + "private \r\n" + " @@myfield = 1 \r\n" + "public \r\n" + " @@otherfield = 2 \r\n" + " @@someother = 3 \r\n" + "end \r\n"; CompilationUnitNode unit = RookParser.ParseContents(contents); Assert.IsNotNull(unit); Assert.AreEqual(0, unit.Namespaces.Count); Assert.AreEqual(1, unit.ClassesTypes.Count); ClassDefinitionStatement ClassDefinitionStatement = unit.ClassesTypes[0] as ClassDefinitionStatement; Assert.IsNotNull(ClassDefinitionStatement); Assert.AreEqual("MyClass", ClassDefinitionStatement.Name); Assert.AreEqual(0, ClassDefinitionStatement.BaseTypes.Count); Assert.AreEqual(3, ClassDefinitionStatement.Statements.Count); FieldDeclarationStatement stmt = ClassDefinitionStatement.Statements[0] as FieldDeclarationStatement; Assert.IsNotNull(stmt); Assert.AreEqual(AccessLevel.Private, stmt.ScopeAccessLevel); Assert.AreEqual("@@myfield", (stmt.Target as StaticFieldReferenceExpression).Name); Assert.AreEqual("1", (stmt.Value as LiteralExpression).Value); stmt = ClassDefinitionStatement.Statements[1] as FieldDeclarationStatement; Assert.IsNotNull(stmt); Assert.AreEqual(AccessLevel.Public, stmt.ScopeAccessLevel); Assert.AreEqual("@@otherfield", (stmt.Target as StaticFieldReferenceExpression).Name); Assert.AreEqual("2", (stmt.Value as LiteralExpression).Value); stmt = ClassDefinitionStatement.Statements[2] as FieldDeclarationStatement; Assert.IsNotNull(stmt); Assert.AreEqual(AccessLevel.Public, stmt.ScopeAccessLevel); Assert.AreEqual("@@someother", (stmt.Target as StaticFieldReferenceExpression).Name); Assert.AreEqual("3", (stmt.Value as LiteralExpression).Value); }
public void AssignmentsAndMethods() { String contents = "class MyClass \r\n" + "private \r\n" + " @@myfield = 1 \r\n" + " \r\n" + " def method1() \r\n" + " end \r\n" + " \r\n" + " def self.method2() \r\n" + " end \r\n" + "end \r\n"; CompilationUnitNode unit = RookParser.ParseContents(contents); Assert.IsNotNull(unit); Assert.AreEqual(0, unit.Namespaces.Count); Assert.AreEqual(1, unit.ClassesTypes.Count); ClassDefinitionStatement ClassDefinitionStatement = unit.ClassesTypes[0] as ClassDefinitionStatement; Assert.IsNotNull(ClassDefinitionStatement); Assert.AreEqual("MyClass", ClassDefinitionStatement.Name); Assert.AreEqual(0, ClassDefinitionStatement.BaseTypes.Count); Assert.AreEqual(3, ClassDefinitionStatement.Statements.Count); FieldDeclarationStatement assignStmt = ClassDefinitionStatement.Statements[0] as FieldDeclarationStatement; MethodDefinitionStatement method1Stmt = ClassDefinitionStatement.Statements[1] as MethodDefinitionStatement; MethodDefinitionStatement method2Stmt = ClassDefinitionStatement.Statements[2] as MethodDefinitionStatement; Assert.IsNotNull(assignStmt); Assert.IsNotNull(method1Stmt); Assert.IsNotNull(method2Stmt); Assert.AreEqual("method1", method1Stmt.Name); Assert.AreEqual("method2", method2Stmt.Name); Assert.AreEqual("self", method2Stmt.BoundTo); }