diff options
Diffstat (limited to 'org.aspectj.ajdt.core/testsrc')
-rw-r--r-- | org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjASTTest.java | 126 |
1 files changed, 122 insertions, 4 deletions
diff --git a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjASTTest.java b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjASTTest.java index dd27dca0f..e130a067e 100644 --- a/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjASTTest.java +++ b/org.aspectj.ajdt.core/testsrc/org/aspectj/tools/ajc/AjASTTest.java @@ -62,6 +62,7 @@ import org.aspectj.org.eclipse.jdt.core.dom.SimpleType; import org.aspectj.org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.aspectj.org.eclipse.jdt.core.dom.StringLiteral; import org.aspectj.org.eclipse.jdt.core.dom.Type; +import org.aspectj.org.eclipse.jdt.core.dom.TypeDeclaration; import org.aspectj.org.eclipse.jdt.core.dom.TypePattern; /** @@ -407,6 +408,7 @@ public class AjASTTest extends TestCase { boolean foundJavadoc = false; boolean foundPerClause = false; boolean foundIsPrivileged = false; + boolean foundIsAspect = false; for (Iterator iter = props.iterator(); iter.hasNext();) { Object o = iter.next(); if ((o instanceof ChildPropertyDescriptor)) { @@ -417,14 +419,20 @@ public class AjASTTest extends TestCase { } else if (id.equals("perClause")) { foundPerClause = true; } - } else if ((o instanceof SimplePropertyDescriptor) - && ((SimplePropertyDescriptor)o).getId().equals("privileged")) { - foundIsPrivileged = true; + } else if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor)o; + String id = element.getId(); + if (id.equals("privileged")) { + foundIsPrivileged = true; + } else if (id.equals("aspect")) { + foundIsAspect = true; + } } } assertTrue("AspectDeclaration should have a javadoc PropertyDescriptor",foundJavadoc); assertTrue("AspectDeclaration should have a perClause PropertyDescriptor",foundPerClause); - assertTrue("AspectDeclaration should have an isPrivileged PropertyDescriptor",foundIsPrivileged); + assertTrue("AspectDeclaration should have a privileged PropertyDescriptor",foundIsPrivileged); + assertTrue("AspectDeclaration should have inherited an aspect PropertyDescriptor",foundIsAspect); } public void testCloneAspectDeclaration() { @@ -690,6 +698,116 @@ public class AjASTTest extends TestCase { assertFalse("AjTypeDeclaration should now be a class",d.isAspect()); } + public void testPropertyDescriptorsForAjTypeDeclaration() { + AjAST ajast = createAjAST(); + AjTypeDeclaration d = ajast.newAjTypeDeclaration(); + List props = AjTypeDeclaration.propertyDescriptors(AST.JLS3); + boolean foundAspect = false; + for (Iterator iter = props.iterator(); iter.hasNext();) { + Object o = iter.next(); + if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor)o; + String id = element.getId(); + if (id.equals("aspect")) { + foundAspect = true; + } + } + } + assertTrue("AjTypeDeclaration should have an aspect PropertyDescriptor",foundAspect); + } + + public void testCloneAjTypeDeclaration() { + AjAST ajast = createAjAST(); + AjTypeDeclaration d = ajast.newAjTypeDeclaration(); + d.setAspect(true); + AjTypeDeclaration copy = (AjTypeDeclaration)ASTNode.copySubtree(ajast,d); + assertTrue("the AjTypeDeclaration clone should be an aspect", + copy.isAspect()); + } + + public void testInternalAjTypeDeclaration() { + AjAST ajast = createAjAST(); + AjTypeDeclaration d = ajast.newAjTypeDeclaration(); + List props = AjTypeDeclaration.propertyDescriptors(AST.JLS3); + for (Iterator iter = props.iterator(); iter.hasNext();) { + Object o = iter.next(); + if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor) o; + if (element.getId().equals("aspect")) { + assertNotNull("AjTypeDeclaration's " + element.getId() + " property" + + " should not be null since it is a boolean", + d.getStructuralProperty(element)); + } + } + } + for (Iterator iter = props.iterator(); iter.hasNext();) { + Object o = iter.next(); + if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor) o; + if (element.getId().equals("aspect")) { + Boolean b = new Boolean(true); + d.setStructuralProperty(element,b); + assertEquals("AjTypeDeclaration's aspect property should" + + " now be a SignaturePattern",b,d.getStructuralProperty(element)); + } + } + } + } + + // test for bug 125809 - make sure the property descriptors + // associated with the AspectDeclaration aren't consequently + // associated with the AjTypeDeclaration + public void testPropertyDescriptorsForAjTypeDeclaration2() { + AjAST ajast = createAjAST(); + AspectDeclaration ad = ajast.newAspectDeclaration(); + List aspectProps = AspectDeclaration.propertyDescriptors(AST.JLS3); + AjTypeDeclaration d = ajast.newAjTypeDeclaration(); + List props = AjTypeDeclaration.propertyDescriptors(AST.JLS3); + boolean foundPrivileged = false; + boolean foundPerClause = false; + boolean foundAspect = false; + for (Iterator iter = props.iterator(); iter.hasNext();) { + Object o = iter.next(); + if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor)o; + String id = element.getId(); + if (id.equals("privileged")) { + foundPrivileged = true; + } + } else if (o instanceof ChildPropertyDescriptor) { + ChildPropertyDescriptor element = (ChildPropertyDescriptor)o; + if (element.getId().equals("perClause")) { + foundPerClause = true; + } + } + } + assertFalse("AjTypeDeclaration should not have a privileged PropertyDescriptor",foundPrivileged); + assertFalse("AjTypeDeclaration should not have a perClause PropertyDescriptor",foundPerClause); + } + + // test for bug 125809 - make sure the property descriptors + // associated with the AjTypeDeclaration aren't consequently + // associated with the TypeDeclaration + public void testPropertyDescriptorsForAjTypeDeclaration3() { + AjAST ajast = createAjAST(); + AjTypeDeclaration d = ajast.newAjTypeDeclaration(); + List ajProps = AjTypeDeclaration.propertyDescriptors(AST.JLS3); + TypeDeclaration td = ajast.newTypeDeclaration(); + List props = TypeDeclaration.propertyDescriptors(AST.JLS3); + boolean foundAspect = false; + for (Iterator iter = props.iterator(); iter.hasNext();) { + Object o = iter.next(); + if (o instanceof SimplePropertyDescriptor) { + SimplePropertyDescriptor element = (SimplePropertyDescriptor)o; + String id = element.getId(); + if (id.equals("aspect")) { + foundAspect = true; + } + } + } + assertFalse("TypeDeclaration should not have an aspect PropertyDescriptor",foundAspect); + } + // -------------- DeclareAtFieldDeclaration tests --------------- public void testNewDeclareAtFieldDeclaration() { |