aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/org
diff options
context:
space:
mode:
authoraclement <aclement>2006-08-22 08:20:36 +0000
committeraclement <aclement>2006-08-22 08:20:36 +0000
commit50f8ecc4339442c7abaf4d3a9995c1434b768ef2 (patch)
tree75ca9caf60a4a9bd592b162dbc79146188fe1fc6 /tests/src/org
parent8b393cc90d5d63171154713e5a73044a1a2fddaf (diff)
downloadaspectj-50f8ecc4339442c7abaf4d3a9995c1434b768ef2.tar.gz
aspectj-50f8ecc4339442c7abaf4d3a9995c1434b768ef2.zip
refactored tests for 154552 - use new model testing structure
Diffstat (limited to 'tests/src/org')
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java114
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ajc150.xml21
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java205
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/ajc151.xml15
-rw-r--r--tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java243
-rw-r--r--tests/src/org/aspectj/systemtest/ajc152/ajc152.xml33
-rw-r--r--tests/src/org/aspectj/systemtest/model/Model5Tests.java33
-rw-r--r--tests/src/org/aspectj/systemtest/model/ModelTests.java33
-rw-r--r--tests/src/org/aspectj/systemtest/model/model.xml65
9 files changed, 153 insertions, 609 deletions
diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
index 7a153b282..e5cd1ee29 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
@@ -14,8 +14,6 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Iterator;
-import java.util.List;
import junit.framework.Test;
@@ -25,10 +23,6 @@ import org.aspectj.apache.bcel.classfile.Signature;
import org.aspectj.apache.bcel.util.ClassPath;
import org.aspectj.apache.bcel.util.SyntheticRepository;
import org.aspectj.asm.AsmManager;
-import org.aspectj.asm.IHierarchy;
-import org.aspectj.asm.IProgramElement;
-import org.aspectj.asm.IRelationship;
-import org.aspectj.asm.internal.Relationship;
import org.aspectj.testing.XMLBasedAjcTestCase;
import org.aspectj.util.LangUtil;
@@ -589,104 +583,6 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
runTest("ClassCastException with generic wildcard");
}
- public void testAdviceInStructureModelWithAnonymousInnerClass_pr77269() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("advice in structure model with anonymous inner class");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // checking that the run() method inside anonymous inner class is in
- // the structure model
- IProgramElement anonRunMethodIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"run()");
-
- assertNotNull("Couldn't find 'run()' element in the tree",anonRunMethodIPE);
- List l = AsmManager.getDefault().getRelationshipMap().get(anonRunMethodIPE);
- assertNotNull("Should have some relationships but does not",l);
- assertTrue("Should have one relationship but has " + l.size(),l.size()==1);
- Relationship rel = (Relationship)l.get(0);
- List targets = rel.getTargets();
- assertTrue("Should have one target but has" + targets.size(),
- targets.size()==1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)targets.get(0));
- assertEquals("target of relationship should be 'before(): p..' but is "
- + target.toLabelString(),"before(): p..",target.toLabelString());
-
-
- IProgramElement adviceIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.ADVICE,"before(): p..");
- assertNotNull("Couldn't find 'before(): p..' element in the tree",adviceIPE);
- l = AsmManager.getDefault().getRelationshipMap().get(adviceIPE);
- assertNotNull("Should have some relationships but does not",l);
- assertTrue("Should have a relationship but does not ",l.size()>0);
- for (Iterator iter = l.iterator(); iter.hasNext();) {
- IRelationship element = (IRelationship) iter.next();
- if (element.getName().equals("advises")) {
- rel = (Relationship) element;
- break;
- }
- }
- targets = rel.getTargets();
- assertTrue("Should have one target but has" + targets.size(),
- targets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)targets.get(0));
- assertEquals("target of relationship should be 'run()' but is "
- + target.toLabelString(),"run()",target.toLabelString());
-
- }
-
- public void testAdviceInStructureModelWithNamedInnerClass_pr77269() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("advice in structure model with named inner class");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // checking that the m() method inside named inner class is in
- // the structure model
- IProgramElement namedMethodIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"m()");
- assertNotNull("Couldn't find 'm()' element in the tree",namedMethodIPE);
- List l = AsmManager.getDefault().getRelationshipMap().get(namedMethodIPE);
- assertNotNull("Should have some relationships but does not",l);
- assertTrue("Should have one relationship but has " + l.size(),l.size()==1);
- Relationship rel = (Relationship)l.get(0);
- List targets = rel.getTargets();
- assertTrue("Should have one target but has" + targets.size(),
- targets.size()==1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)targets.get(0));
- assertEquals("target of relationship should be 'before(): p..' but is "
- + target.toLabelString(),"before(): p..",target.toLabelString());
-
-
- IProgramElement adviceIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.ADVICE,"before(): p..");
- assertNotNull("Couldn't find 'before(): p..' element in the tree",adviceIPE);
- l = AsmManager.getDefault().getRelationshipMap().get(adviceIPE);
- assertNotNull("Should have some relationships but does not",l);
- assertTrue("Should have a relationship but does not ",l.size()>0);
- for (Iterator iter = l.iterator(); iter.hasNext();) {
- IRelationship element = (IRelationship) iter.next();
- if (element.getName().equals("advises")) {
- rel = (Relationship) element;
- break;
- }
- }
- targets = rel.getTargets();
- assertTrue("Should have one target but has" + targets.size(),
- targets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)targets.get(0));
- assertEquals("target of relationship should be 'm()' but is "
- + target.toLabelString(),"m()",target.toLabelString());
-
- }
-
- public void testDWInStructureModelWithAnonymousInnerClass_pr77269() {
- // AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("declare warning in structure model with anonymous inner class");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement pe = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.CODE,"method-call(void pack.Test.someMethod())");
- assertNotNull("Couldn't find 'method-call(void pack.Test.someMethod())' element in the tree",pe);
- }
-
public void testVarArgsIITDInConstructor() {
runTest("ITD varargs in constructor");
}
@@ -802,16 +698,6 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testXlintMessageForImproperAnnotationType_pr115252_Throws() {runTest("xlint message for improper annotated throws pattern");}
public void testXlintMessageForImproperAnnotationType_pr115252_MoreThanOne() {runTest("xlint message for more than one improper annotated parameter type");}
- public void testDeclareAtTypeInStructureModel_pr115607() {
- runTest("declare at type appears correctly in structure model");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement pe = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.DECLARE_ANNOTATION_AT_TYPE,"declare @type: Simple : @I");
- assertNotNull("Couldn't find 'declare @type: Simple : @I' element in the tree",pe);
- List l = AsmManager.getDefault().getRelationshipMap().get(pe);
- assertNotNull("Should have some relationships but does not",l);
- }
-
public void testNoNPEWhenInaccessibleMethodIsCalledWithinITD_pr119019() {
runTest("no NPE when inaccessible method is called within itd");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
index 3de18f230..2bb9a6ae2 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
@@ -1380,22 +1380,6 @@
<run class="pr100195"/>
</ajc-test>
- <ajc-test dir="bugs150/pr77269" title="advice in structure model with anonymous inner class">
- <compile files="pack/pr77269.aj" options="-emacssym">
- </compile>
- </ajc-test>
-
- <ajc-test dir="bugs150" title="advice in structure model with named inner class">
- <compile files="pr77269b.aj" options="-emacssym">
- </compile>
- </ajc-test>
-
- <ajc-test dir="bugs150/pr77269" title="declare warning in structure model with anonymous inner class">
- <compile files="pack/pr77269c.aj" options="-emacssym">
- <message kind="warning" line="8" text="blah blah blah"/>
- </compile>
- </ajc-test>
-
<ajc-test dir="bugs150" title="weaveinfo message for declare at method on an ITDd method">
<compile files="pr113073.java" options="-1.5 -showWeaveInfo">
<message kind="weave" text="Type 'C' (pr113073.java) has intertyped method from 'D' (pr113073.java:'void C.anotherMethod()')"/>
@@ -1529,11 +1513,6 @@
</compile>
</ajc-test>
- <ajc-test dir="bugs150" title="declare at type appears correctly in structure model">
- <compile files="pr115607.java" options="-1.5,-emacssym">
- </compile>
- </ajc-test>
-
<ajc-test dir="bugs150/pr119019" title="no NPE when inaccessible method is called within itd">
<compile files="bar/TargetITDClass.java,foo/ITDWithACall.aj"/>
<run class="foo.ITDWithACall"/>
diff --git a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
index 8e9d48fe8..79461c477 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
@@ -11,15 +11,12 @@
package org.aspectj.systemtest.ajc151;
import java.io.File;
-import java.util.Iterator;
-import java.util.List;
import junit.framework.Test;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
-import org.aspectj.asm.internal.Relationship;
import org.aspectj.systemtest.ajc150.GenericsTests;
import org.aspectj.testing.XMLBasedAjcTestCase;
@@ -136,149 +133,6 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
runTest("no ClassCastException with generic aspect and unknown type");
}
- public void testStructureModelForGenericITD_pr131932() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("structure model for generic itd");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // get the IProgramElements corresponding to the ITDs and classes
- IProgramElement foo = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.CLASS,"Foo");
- assertNotNull("Couldn't find Foo element in the tree",foo);
- IProgramElement bar = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.CLASS,"Bar");
- assertNotNull("Couldn't find Bar element in the tree",bar);
-
- IProgramElement method = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.INTER_TYPE_METHOD,"Bar.getFirst()");
- assertNotNull("Couldn't find 'Bar.getFirst()' element in the tree",method);
- IProgramElement field = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.INTER_TYPE_FIELD,"Bar.children");
- assertNotNull("Couldn't find 'Bar.children' element in the tree",field);
- IProgramElement constructor = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR,"Foo.Foo(java.util.List<T>)");
- assertNotNull("Couldn't find 'Foo.Foo(java.util.List<T>)' element in the tree",constructor);
-
- // check that the relationship map has 'itd method declared on bar'
- List matches = AsmManager.getDefault().getRelationshipMap().get(method);
- assertNotNull("itd Bar.getFirst() should have some relationships but does not",matches);
- assertTrue("method itd should have one relationship but has " + matches.size(), matches.size() == 1);
- List matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("itd Bar.getFirst() should have one target but has " + matchesTargets.size(),matchesTargets.size() == 1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the Bar class but is IPE with label "
- + target.toLabelString(),bar,target);
-
- // check that the relationship map has 'itd field declared on bar'
- matches = AsmManager.getDefault().getRelationshipMap().get(field);
- assertNotNull("itd Bar.children should have some relationships but does not",matches);
- assertTrue("field itd should have one relationship but has " + matches.size(), matches.size() == 1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("itd Bar.children should have one target but has " + matchesTargets.size(),matchesTargets.size() == 1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the Bar class but is IPE with label "
- + target.toLabelString(),bar,target);
-
- // check that the relationship map has 'itd constructor declared on foo'
- matches = AsmManager.getDefault().getRelationshipMap().get(constructor);
- assertNotNull("itd Foo.Foo(List<T>) should have some relationships but does not",matches);
- assertTrue("constructor itd should have one relationship but has " + matches.size(), matches.size() == 1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("itd Foo.Foo(List<T>) should have one target but has " + matchesTargets.size(),matchesTargets.size() == 1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the Foo class but is IPE with label "
- + target.toLabelString(),foo,target);
-
- // check that the relationship map has 'bar aspect declarations method and field itd'
- matches = AsmManager.getDefault().getRelationshipMap().get(bar);
- assertNotNull("Bar should have some relationships but does not",matches);
- assertTrue("Bar should have one relationship but has " + matches.size(), matches.size() == 1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("Bar should have two targets but has " + matchesTargets.size(),matchesTargets.size() == 2);
- for (Iterator iter = matchesTargets.iterator(); iter.hasNext();) {
- String element = (String) iter.next();
- target = AsmManager.getDefault().getHierarchy().findElementForHandle(element);
- if (!target.equals(method) && !target.equals(field)) {
- fail("Expected rel target to be " + method.toLabelString() + " or " + field.toLabelString()
- + ", found " + target.toLabelString());
- }
- }
-
- // check that the relationship map has 'foo aspect declarations constructor itd'
- matches = AsmManager.getDefault().getRelationshipMap().get(foo);
- assertNotNull("Foo should have some relationships but does not",matches);
- assertTrue("Foo should have one relationship but has " + matches.size(), matches.size() == 1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("Foo should have one target but has " + matchesTargets.size(),matchesTargets.size() == 1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the Foo.Foo(List<T>) itd but is IPE with label "
- + target.toLabelString(),constructor,target);
- }
-
-
- public void testDeclareAnnotationAppearsInStructureModel_pr132130() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("declare annotation appears in structure model when in same file");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // get the IProgramElements corresponding to the different code entries
- IProgramElement decam = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.DECLARE_ANNOTATION_AT_METHOD,"declare @method: * debit(..) : @Secured(role = \"supervisor\")");
- assertNotNull("Couldn't find 'declare @method' element in the tree",decam);
- IProgramElement method = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"debit(long,long)");
- assertNotNull("Couldn't find the 'debit(long,long)' method element in the tree",method);
- IProgramElement decac = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.DECLARE_ANNOTATION_AT_CONSTRUCTOR,"declare @constructor: BankAccount+.new(..) : @Secured(role = \"supervisor\")");
- assertNotNull("Couldn't find 'declare @constructor' element in the tree",decac);
- IProgramElement ctr = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.CONSTRUCTOR,"BankAccount(java.lang.String,int)");
- assertNotNull("Couldn't find the 'BankAccount(String,int)' constructor element in the tree",ctr);
-
-
- // check that decam has a annotates relationship with the debit method
- List matches = AsmManager.getDefault().getRelationshipMap().get(decam);
- assertNotNull("'declare @method' should have some relationships but does not",matches);
- assertTrue("'declare @method' should have one relationships but has " + matches.size(),matches.size()==1);
- List matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'declare @method' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'debit(long,long)' method but is IPE with label "
- + target.toLabelString(),method,target);
-
- // check that the debit method has an annotated by relationship with the declare @method
- matches = AsmManager.getDefault().getRelationshipMap().get(method);
- assertNotNull("'debit(long,long)' should have some relationships but does not",matches);
- assertTrue("'debit(long,long)' should have one relationships but has " + matches.size(),matches.size()==1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'debit(long,long)' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'declare @method' ipe but is IPE with label "
- + target.toLabelString(),decam,target);
-
- // check that decac has a annotates relationship with the constructor
- matches = AsmManager.getDefault().getRelationshipMap().get(decac);
- assertNotNull("'declare @method' should have some relationships but does not",matches);
- assertTrue("'declare @method' should have one relationships but has " + matches.size(),matches.size()==1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'declare @method' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'debit(long, long)' method but is IPE with label "
- + target.toLabelString(),ctr,target);
-
- // check that the constructor has an annotated by relationship with the declare @constructor
- matches = AsmManager.getDefault().getRelationshipMap().get(ctr);
- assertNotNull("'debit(long, long)' should have some relationships but does not",matches);
- assertTrue("'debit(long, long)' should have one relationships but has " + matches.size(),matches.size()==1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'debit(long, long)' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'declare @method' ipe but is IPE with label "
- + target.toLabelString(),decac,target);
-
-
- }
-
/*
* @AspectJ bugs and enhancements
*/
@@ -289,64 +143,7 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testAtAspectInheritsAbstractPointcut_pr125810 () {
runTest("warning when inherited pointcut not made concrete");
}
-
- public void testAtAspectDEOWInStructureModel_pr120356() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("@AJ deow appear correctly when structure model is generated");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // get the IProgramElements corresponding to the @DeclareWarning statement
- // and the method it matches.
- IProgramElement warningMethodIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"warningMethod()");
- assertNotNull("Couldn't find 'warningMethod()' element in the tree",warningMethodIPE);
- IProgramElement atDeclareWarningIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.FIELD,"warning");
- assertNotNull("Couldn't find @DeclareWarning element in the tree",atDeclareWarningIPE);
-
- // check that the method has a matches declare relationship with @DeclareWarning
- List matches = AsmManager.getDefault().getRelationshipMap().get(warningMethodIPE);
- assertNotNull("warningMethod should have some relationships but does not",matches);
- assertTrue("warningMethod should have one relationships but has " + matches.size(),matches.size()==1);
- List matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("warningMethod should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the @DeclareWarning 'warning' but is IPE with label "
- + target.toLabelString(),atDeclareWarningIPE,target);
-
- // check that the @DeclareWarning has a matches relationship with the warningMethod
- List matchedBy = AsmManager.getDefault().getRelationshipMap().get(atDeclareWarningIPE);
- assertNotNull("@DeclareWarning should have some relationships but does not",matchedBy);
- assertTrue("@DeclareWarning should have one relationship but has " + matchedBy.size(), matchedBy.size() == 1);
- List matchedByTargets = ((Relationship)matchedBy.get(0)).getTargets();
- assertTrue("@DeclareWarning 'matched by' relationship should have one target " +
- "but has " + matchedByTargets.size(), matchedByTargets.size() == 1);
- IProgramElement matchedByTarget = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchedByTargets.get(0));
- assertEquals("target of relationship should be the warningMethod but is IPE with label "
- + matchedByTarget.toLabelString(),warningMethodIPE,matchedByTarget);
-
- // get the IProgramElements corresponding to the @DeclareError statement
- // and the method it matches.
- IProgramElement errorMethodIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"badMethod()");
- assertNotNull("Couldn't find 'badMethod()' element in the tree",errorMethodIPE);
- IProgramElement atDeclarErrorIPE = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.FIELD,"error");
- assertNotNull("Couldn't find @DeclareError element in the tree",atDeclarErrorIPE);
-
- // check that the @DeclareError has a matches relationship with the badMethod
- List matchedByE = AsmManager.getDefault().getRelationshipMap().get(atDeclarErrorIPE);
- assertNotNull("@DeclareError should have some relationships but does not",matchedByE);
- assertTrue("@DeclareError should have one relationship but has " + matchedByE.size(), matchedByE.size() == 1);
- List matchedByTargetsE = ((Relationship)matchedByE.get(0)).getTargets();
- assertTrue("@DeclareError 'matched by' relationship should have one target " +
- "but has " + matchedByTargetsE.size(), matchedByTargetsE.size() == 1);
- IProgramElement matchedByTargetE = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchedByTargetsE.get(0));
- assertEquals("target of relationship should be the badMethod but is IPE with label "
- + matchedByTargetE.toLabelString(),errorMethodIPE,matchedByTargetE);
-
- }
-
+
public void testAtAspectNoNPEWithDEOWWithoutStructureModel_pr120356() {
runTest("@AJ no NPE with deow when structure model isn't generated");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
index caac4da14..088cd8399 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
+++ b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
@@ -341,13 +341,6 @@
<ajc-test dir="bugs151" title="E extends Enum(E) again">
<compile files="Pr126316.aj" options="-1.5"/>
- </ajc-test>
-
- <ajc-test dir="bugs151/pr120356" title="@AJ deow appear correctly when structure model is generated">
- <compile files="C.java, A.java" options="-1.5, -emacssym">
- <message kind="error" line="8" text="error"/>
- <message kind="warning" line="5" text="warning"/>
- </compile>
</ajc-test>
<ajc-test dir="bugs151/pr120356" title="@AJ no NPE with deow when structure model isn't generated">
@@ -402,14 +395,6 @@
</compile>
</ajc-test>
- <ajc-test dir="bugs151" title="structure model for generic itd">
- <compile files="pr131932.aj" options="-1.5 -emacssym"/>
- </ajc-test>
-
- <ajc-test dir="bugs151" title="declare annotation appears in structure model when in same file">
- <compile files="pr132130.aj" options="-1.5 -emacssym"/>
- </ajc-test>
-
<!-- New features down here... when they arent big enough to have their own test file -->
<ajc-test dir="features151/ptw" title="exposing withintype">
diff --git a/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java b/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
index a47368db7..02ee42cd7 100644
--- a/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
@@ -11,21 +11,15 @@
package org.aspectj.systemtest.ajc152;
import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import junit.framework.Test;
-import org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
-import org.aspectj.asm.IRelationshipMap;
-import org.aspectj.asm.internal.Relationship;
import org.aspectj.testing.XMLBasedAjcTestCase;
import org.aspectj.util.CharOperation;
-import org.aspectj.weaver.World;
public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
@@ -114,41 +108,6 @@ public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testJRockitBooleanReturn2_pr148007() { runTest("jrockit boolean fun (no aspects)");}
public void testSyntheticAjcMembers_pr147711() { runTest("synthetic ajc$ members"); }
- public void testDeclareAtMethodRelationship_pr143924() {
- //AsmManager.setReporting("c:/debug.txt",true,true,true,true);
- runTest("declare @method relationship");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
-
- // get the IProgramElements corresponding to the different code entries
- IProgramElement decam = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.DECLARE_ANNOTATION_AT_METHOD,
- "declare @method: * debit(..) : @Secured(role = \"supervisor\")");
- assertNotNull("Couldn't find 'declare @method' element in the tree",decam);
- IProgramElement method = top.findElementForLabel(top.getRoot(),
- IProgramElement.Kind.METHOD,"debit(java.lang.String,long)");
- assertNotNull("Couldn't find the 'debit(String,long)' method element in the tree",method);
-
- List matches = AsmManager.getDefault().getRelationshipMap().get(decam);
- assertNotNull("'declare @method' should have some relationships but does not",matches);
- assertTrue("'declare @method' should have one relationships but has " + matches.size(),matches.size()==1);
- List matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'declare @method' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- IProgramElement target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'debit(java.lang.String,long)' method but is IPE with label "
- + target.toLabelString(),method,target);
-
- // check that the debit method has an annotated by relationship with the declare @method
- matches = AsmManager.getDefault().getRelationshipMap().get(method);
- assertNotNull("'debit(java.lang.String,long)' should have some relationships but does not",matches);
- assertTrue("'debit(java.lang.String,long)' should have one relationships but has " + matches.size(),matches.size()==1);
- matchesTargets = ((Relationship)matches.get(0)).getTargets();
- assertTrue("'debit(java.lang.String,long)' should have one targets but has" + matchesTargets.size(),matchesTargets.size()==1);
- target = AsmManager.getDefault().getHierarchy().findElementForHandle((String)matchesTargets.get(0));
- assertEquals("target of relationship should be the 'declare @method' ipe but is IPE with label "
- + target.toLabelString(),decam,target);
-
- }
-
// this next one reported as a bug by Rob Harrop, but I can't reproduce the failure yet...
//public void testAtAspectWithReferencePCPerClause_pr138220() { runTest("@Aspect with reference pointcut in perclause");}
@@ -156,178 +115,19 @@ public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testJarChecking_pr137235_2() { runTest("directory with .jar extension"); }
public void testMakePreMethodNPE_pr136393() { runTest("NPE in makePreMethod");}
- public void testGetParameterHandles_pr141730() {
- runTest("new IProgramElement handle methods");
-
- checkParametersForIPE("intMethod(int)",IProgramElement.Kind.METHOD,"I",true);
- checkParametersForIPE("stringMethod(java.lang.String)",IProgramElement.Kind.METHOD,"Ljava/lang/String;",true);
- checkParametersForIPE("myClassMethod(MyClass)",IProgramElement.Kind.METHOD,"LMyClass;",true);
- checkParametersForIPE("genericMethod(java.util.List<java.lang.String>)",IProgramElement.Kind.METHOD,"Pjava/util/List<Ljava/lang/String;>;",true);
- checkParametersForIPE("genericMethod2(MyGenericClass<java.lang.String,MyClass>)",IProgramElement.Kind.METHOD,"PMyGenericClass<Ljava/lang/String;LMyClass;>;",true);
- checkParametersForIPE("main(java.lang.String[])",IProgramElement.Kind.METHOD,"[Ljava/lang/String;",true);
- checkParametersForIPE("multiMethod(java.lang.String[][])",IProgramElement.Kind.METHOD,"[[Ljava/lang/String;",true);
- checkParametersForIPE("intArray(int[])",IProgramElement.Kind.METHOD,"[I",true);
+ public void testGetParameterSignatures_pr141730() {
+ runTest("new iprogramelement method getParameterSignatures");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement twoArgsMethod = top.findElementForLabel(
- top.getRoot(),IProgramElement.Kind.METHOD,"twoArgsMethod(int,java.lang.String)");
- assertNotNull("Couldn't find 'twoArgsMethod(int,java.lang.String)' element in the tree",twoArgsMethod);
- List l = twoArgsMethod.getParameterSignatures();
- assertEquals("",((char[])l.get(0))[0],'I');
- boolean eq = CharOperation.equals(((char[])l.get(1)),"Ljava/lang/String;".toCharArray());
- assertTrue("expected parameter to be 'Ljava/lang/String;' but found '" +
- new String(((char[])l.get(1))) + "'",eq);
+ checkGetParamSigOfMethod("stringMethod(java.lang.String)","Ljava/lang/String;");
+ checkGetParamSigOfMethod("main(java.lang.String[])","[Ljava/lang/String;");
+ checkGetParamSigOfMethod("multiMethod(java.lang.String[][])","[[Ljava/lang/String;");
}
- public void testGetParameterTypes_pr141730() {
- runTest("new IProgramElement handle methods");
+ public void testGetParameterSignaturesWithGenerics_pr141730() {
+ runTest("new iprogramelement method getParameterSignatures with generics");
- checkParametersForIPE("intMethod(int)",IProgramElement.Kind.METHOD,"int",false);
- checkParametersForIPE("stringMethod(java.lang.String)",IProgramElement.Kind.METHOD,"java.lang.String",false);
- checkParametersForIPE("myClassMethod(MyClass)",IProgramElement.Kind.METHOD,"MyClass",false);
- checkParametersForIPE("genericMethod(java.util.List<java.lang.String>)",IProgramElement.Kind.METHOD,"java.util.List<java.lang.String>",false);
- checkParametersForIPE("genericMethod2(MyGenericClass<java.lang.String,MyClass>)",IProgramElement.Kind.METHOD,"MyGenericClass<java.lang.String,MyClass>",false);
- checkParametersForIPE("main(java.lang.String[])",IProgramElement.Kind.METHOD,"java.lang.String[]",false);
- checkParametersForIPE("multiMethod(java.lang.String[][])",IProgramElement.Kind.METHOD,"java.lang.String[][]",false);
- checkParametersForIPE("intArray(int[])",IProgramElement.Kind.METHOD,"int[]",false);
- }
-
- public void testToSignatureString_pr141730() {
- runTest("new IProgramElement handle methods");
-
- checkSignatureOfIPE("main(java.lang.String[])",IProgramElement.Kind.METHOD);
- checkSignatureOfIPE("C",IProgramElement.Kind.CLASS);
- checkSignatureOfIPE("C()",IProgramElement.Kind.CONSTRUCTOR);
- checkSignatureOfIPE("method()",IProgramElement.Kind.METHOD);
- checkSignatureOfIPE("p()",IProgramElement.Kind.POINTCUT);
- checkSignatureOfIPE("before(): p..",IProgramElement.Kind.ADVICE,"before()");
- checkSignatureOfIPE("MyClass.method()",IProgramElement.Kind.INTER_TYPE_METHOD);
- checkSignatureOfIPE("multiMethod(java.lang.String[][])",IProgramElement.Kind.METHOD);
- checkSignatureOfIPE("intArray(int[])",IProgramElement.Kind.METHOD);
- checkSignatureOfIPE("MyClass.MyClass()",IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
- }
-
- // if not filling in the model for aspects contained in jar files then
- // want to ensure that the relationship map is correct and has nodes
- // which can be used in AJDT - ensure no NPE occurs for the end of
- // the relationship with aspectpath
- public void testAspectPathRelWhenNotFillingInModel_pr141730() {
- World.createInjarHierarchy = false;
- try {
- runTest("ensure aspectpath injar relationships are correct when not filling in model");
-
- // expecting:
- // sourceOfRelationship main in MyFoo.java
- // relationship advised by
- // target MyBar.class
- //
- // and
- //
- // sourceOfRelationship MyBar.class
- // relationship advises
- // target main in MyFoo.java
-
-
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IRelationshipMap asmRelMap = AsmManager.getDefault().getRelationshipMap();
- assertEquals("expected two sources of relationships but only found "
- + asmRelMap.getEntries().size(),2,asmRelMap.getEntries().size());
- for (Iterator iter = asmRelMap.getEntries().iterator(); iter.hasNext();) {
- String sourceOfRelationship = (String) iter.next();
- IProgramElement ipe = top.findElementForHandle(sourceOfRelationship);
- List relationships = asmRelMap.get(ipe);
- if (ipe.getName().equals("MyBar.class")) {
- assertEquals("expected MyBar.class to have one relationships but found "
- + relationships.size(),1,relationships.size());
- Relationship rel = (Relationship)relationships.get(0);
- assertEquals("expected relationship to be 'advises' but was "
- + rel.getName(), "advises", rel.getName());
- List targets = rel.getTargets();
- assertEquals("expected one target but found " + targets.size(),1,targets.size());
- IProgramElement link = top.findElementForHandle((String)targets.get(0));
- assertEquals("expected target 'method-call(void foo.MyFoo.main())' but target " + link.getName(),
- "method-call(void foo.MyFoo.main())",link.getName());
- String fileName = link.getSourceLocation().getSourceFile().toString();
- assertTrue("expected 'main' to be in class MyFoo.java but found it " +
- "in " + fileName,fileName.indexOf("MyFoo.java") != -1);
- } else if (ipe.getName().equals("method-call(void foo.MyFoo.main())")) {
- String fileName = ipe.getSourceLocation().getSourceFile().toString();
- assertTrue("expected 'method-call(void foo.MyFoo.main())' to be in " +
- "class MyFoo.java but found it in"
- + fileName,fileName.indexOf("MyFoo.java") != -1);
- assertEquals("expected 'method-call(void foo.MyFoo.main())' " +
- "to have one relationships but found "
- + relationships.size(),1,relationships.size());
- Relationship rel = (Relationship)relationships.get(0);
- assertEquals("expected relationship to be 'advised by' but was "
- + rel.getName(), "advised by", rel.getName());
- List targets = rel.getTargets();
- assertEquals("expected one target but found " + targets.size(),1,targets.size());
- IProgramElement link = top.findElementForHandle((String)targets.get(0));
- assertEquals("expected target 'MyBar.class' but target " + link.getName(),
- "MyBar.class",link.getName());
-
- } else {
- fail("unexpected element " + ipe.getName() + " in the relationship map");
- }
- }
- } finally {
- World.createInjarHierarchy = true;
- }
- }
-
- // if not filling in the model for classes contained in jar files then
- // want to ensure that the relationship map is correct and has nodes
- // which can be used in AJDT - ensure no NPE occurs for the end of
- // the relationship with inpath
- public void testNoNPEWithInpathWhenNotFillingInModel_pr141730() {
- World.createInjarHierarchy = false;
- try {
- runTest("ensure inpath injar relationships are correct when not filling in model");
- // the aspect used for this test has advice, declare parents, deow,
- // and declare @type, @constructor, @field and @method. We only expect
- // there to be relationships in the map for declare parents and declare @type
- // (provided the model isn't being filled in) because the logic in the other
- // addXXXRelationship methods use AspectJElementHierarchy.findElementForType().
- // This method which returns null because there is no such ipe. The relationship is
- // therefore not added to the model. Adding declare @type and declare parents
- // uses AspectJElementHierarchy.findElementForHandle() which returns the file
- // node ipe if it can't find one for the given handle. Therefore the relationships
- // are added against the file node. Before change to using ipe's to create handles
- // we also had the deow relationship, however, now we don't because this also
- // uses findElementForType to find the targetNode which in the inpath case is null.
-
- // just check that the number of entries is what we expect:
- // We expect 3 (the declare @type and declare parents statements plus the filenode)
- IRelationshipMap relMap = AsmManager.getDefault().getRelationshipMap();
- assertEquals("expected 3 entries in the relationship map but found "
- + relMap.getEntries().size(), 3, relMap.getEntries().size());
- } finally {
- World.createInjarHierarchy = true;
- }
- }
-
- public void testPCDInClassAppearsInModel_pr148027() {
- // only want to test that its there if we're creating the uses pointcut
- // relationship. This should be addressed by pr148027
- if (!AsmHierarchyBuilder.shouldAddUsesPointcut) return;
- World.createInjarHierarchy = false;
- try {
- runTest("ensure pcd declare in class appears in model");
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement pcd = top.findElementForLabel(top.getRoot(),IProgramElement.Kind.POINTCUT,"pointcutInClass()");
- IRelationshipMap relMap = AsmManager.getDefault().getRelationshipMap();
- List relationships = relMap.get(pcd);
- assertNotNull("expected relationships for pointcut " + pcd.toLinkLabelString()
- + " but didn't", relationships);
-
- pcd = top.findElementForLabel(top.getRoot(),IProgramElement.Kind.POINTCUT,"pointcutInAspect()");
- relationships = relMap.get(pcd);
- assertNotNull("expected relationships for pointcut " + pcd.toLinkLabelString()
- + " but didn't", relationships);
- } finally {
- World.createInjarHierarchy = true;
- }
+ checkGetParamSigOfMethod("genericMethod(java.util.List<java.lang.String>)","Pjava/util/List<Ljava/lang/String;>;");
+ checkGetParamSigOfMethod("genericMethod2(MyGenericClass<java.lang.String,MyClass>)","PMyGenericClass<Ljava/lang/String;LMyClass;>;");
}
// public void testFunkyGenericErrorWithITDs_pr126355_2() {
@@ -352,34 +152,15 @@ public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
// ---------------- helper methods ---------------
- private void checkParametersForIPE(String ipeLabel, IProgramElement.Kind kind, String expectedParm, boolean getHandles) {
+ private void checkGetParamSigOfMethod(String ipeLabel, String expectedParm) {
IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement ipe = top.findElementForLabel(top.getRoot(),kind,ipeLabel);
+ IProgramElement ipe = top.findElementForLabel(top.getRoot(),IProgramElement.Kind.METHOD,ipeLabel);
assertNotNull("Couldn't find '" + ipeLabel + "' element in the tree",ipe);
- List l = new ArrayList();
- if (getHandles) {
- l = ipe.getParameterSignatures();
- } else {
- l = ipe.getParameterTypes();
- }
+ List l = ipe.getParameterSignatures();
boolean eq = CharOperation.equals(((char[])l.get(0)),expectedParm.toCharArray());
assertTrue("expected parameter to be '" + expectedParm + "' but found '" +
new String(((char[])l.get(0))) + "'",eq);
}
-
- private void checkSignatureOfIPE(String ipeLabel, IProgramElement.Kind kind) {
- checkSignatureOfIPE(ipeLabel,kind,ipeLabel);
- }
-
- private void checkSignatureOfIPE(String ipeLabel, IProgramElement.Kind kind, String expectedSig) {
- IHierarchy top = AsmManager.getDefault().getHierarchy();
- IProgramElement ipe = top.findElementForLabel(
- top.getRoot(),kind,ipeLabel);
- assertNotNull("Couldn't find '" + ipeLabel + "' element in the tree",ipe);
- assertEquals("expected signature to be '"+ expectedSig + "' but was " +
- ipe.toSignatureString(true),expectedSig,ipe.toSignatureString(true));
-
- }
/////////////////////////////////////////
public static Test suite() {
diff --git a/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml b/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
index c841d7999..39bb0146a 100644
--- a/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
+++ b/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
@@ -643,10 +643,6 @@
<compile files="Covariance.java" options="-1.5"/>
</ajc-test>
- <ajc-test dir="bugs152" title="new IProgramElement handle methods">
- <compile files="pr141730.aj" options="-emacssym -1.5"/>
- </ajc-test>
-
<ajc-test dir="bugs152/pr147701" title="package for exception ignored">
<compile files="TestBean.java" options="-1.5"/>
<run class="a.b.c.TestBean"/>
@@ -663,12 +659,6 @@
</compile>
</ajc-test>
- <ajc-test dir="bugs152" title="declare @method relationship">
- <compile files="pr143924.aj" options="-1.5 -showWeaveInfo -emacssym">
- <message kind="weave" text="'public void BankAccount.debit(String,long)' (pr143924.aj:7) is annotated with @Secured"/>
- </compile>
- </ajc-test>
-
<!-- wont work whilst the compiler BuildArgParser.setDebugOptions is always switching debug on -->
<ajc-test dir="bugs152/pr129408" title="long winded ataj messages">
<compile files="AtAj.java" options="-XterminateAfterCompilation -g:none -1.5"/>
@@ -699,16 +689,6 @@
</stderr>
</run>
</ajc-test>
-
- <ajc-test dir="bugs152/pr141730/aspectpath" title="ensure aspectpath injar relationships are correct when not filling in model">
- <compile files="MyFoo.java" aspectpath="aspectpath.jar" options="-emacssym"/>
- </ajc-test>
-
- <ajc-test dir="bugs152/pr141730/inpath" title="ensure inpath injar relationships are correct when not filling in model">
- <compile files="MyBar.aj, MyAnnotation.java, NewClass.java" inpath="inpath.jar" options="-1.5 -emacssym">
- <message kind="warning" line="20" text="System.out should not be called"/>
- </compile>
- </ajc-test>
<ajc-test dir="ltw" title="weaveinfo messages with include and exclude">
<compile files="EmptyTest1.java, EmptyTest2.java"/>
@@ -746,10 +726,6 @@
</run>
</ajc-test>
- <ajc-test dir="bugs152/pr148027" title="ensure pcd declare in class appears in model">
- <compile files="A.aj, C.aj" options="-emacssym"/>
- </ajc-test>
-
<ajc-test dir="bugs152/pr148007" title="jrockit boolean fun">
<compile files="test/BooleanUnitTest.java, test/LoggingAspect.aj"/>
<run class="test.BooleanUnitTest"/>
@@ -794,4 +770,13 @@
</stdout>
</run>
</ajc-test>
+
+
+ <ajc-test dir="bugs152" title="new iprogramelement method getParameterSignatures">
+ <compile files="pr141730a.java" options="-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs152" title="new iprogramelement method getParameterSignatures with generics">
+ <compile files="pr141730b.java" options="-1.5 -emacssym"/>
+ </ajc-test>
</suite> \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/model/Model5Tests.java b/tests/src/org/aspectj/systemtest/model/Model5Tests.java
index 6678256e6..bdd16f3c0 100644
--- a/tests/src/org/aspectj/systemtest/model/Model5Tests.java
+++ b/tests/src/org/aspectj/systemtest/model/Model5Tests.java
@@ -15,6 +15,7 @@ import java.io.File;
import junit.framework.Test;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.weaver.World;
/**
* Tests the model when there is a requirement on Java5 features.
@@ -30,6 +31,38 @@ public class Model5Tests extends ModelTestCase {
debugTest = false;
}
+ public void testDeclareAtTypeInStructureModel_pr115607() {runModelTest("declare at type appears correctly in structure model","pr115607");}
+ public void testStructureModelForGenericITD_pr131932() {runModelTest("structure model for generic itd","pr131932");}
+ public void testDeclareAnnotationAppearsInStructureModel_pr132130() {runModelTest("declare annotation appears in structure model when in same file","pr132130");}
+ public void testAtAspectDEOWInStructureModel_pr120356() {runModelTest("@AJ deow appear correctly when structure model is generated","pr120356");}
+ public void testDeclareAtMethodRelationship_pr143924() {runModelTest("declare @method relationship","pr143924");}
+ public void testNewIProgramElementMethodsForGenerics_pr141730() {runModelTest("new iprogramelement methods for generics","pr141730_2");}
+
+ // if not filling in the model for classes contained in jar files then
+ // want to ensure that the relationship map is correct and has nodes
+ // which can be used in AJDT - ensure no NPE occurs for the end of
+ // the relationship with inpath
+ public void testAspectPathRelWhenNotFillingInModel_pr141730() {
+ World.createInjarHierarchy = false;
+ try {
+ // the aspect used for this test has advice, declare parents, deow,
+ // and declare @type, @constructor, @field and @method. We only expect
+ // there to be relationships in the map for declare parents and declare @type
+ // (provided the model isn't being filled in) because the logic in the other
+ // addXXXRelationship methods use AspectJElementHierarchy.findElementForType().
+ // This method which returns null because there is no such ipe. The relationship is
+ // therefore not added to the model. Adding declare @type and declare parents
+ // uses AspectJElementHierarchy.findElementForHandle() which returns the file
+ // node ipe if it can't find one for the given handle. Therefore the relationships
+ // are added against the file node. Before change to using ipe's to create handles
+ // we also had the deow relationship, however, now we don't because this also
+ // uses findElementForType to find the targetNode which in the inpath case is null.
+ runModelTest("ensure inpath injar relationships are correct when not filling in model","pr141730_4");
+ } finally {
+ World.createInjarHierarchy = true;
+ }
+ }
+
// ///////////////////////////////////////
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Model5Tests.class);
diff --git a/tests/src/org/aspectj/systemtest/model/ModelTests.java b/tests/src/org/aspectj/systemtest/model/ModelTests.java
index 304321698..0ffa27a26 100644
--- a/tests/src/org/aspectj/systemtest/model/ModelTests.java
+++ b/tests/src/org/aspectj/systemtest/model/ModelTests.java
@@ -14,7 +14,9 @@ import java.io.File;
import junit.framework.Test;
+import org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import org.aspectj.weaver.World;
/**
* Tests the model when there is no requirement on Java5 features.
@@ -29,11 +31,42 @@ public class ModelTests extends ModelTestCase {
// Switch this to true if you want to debug the comparison
debugTest = false;
}
+
+ public void testAdviceInStructureModelWithAnonymousInnerClass_pr77269() {runModelTest("advice in structure model with anonymous inner class","pr77269_1");}
+ public void testAdviceInStructureModelWithNamedInnerClass_pr77269() {runModelTest("advice in structure model with named inner class","pr77269_2");}
+ public void testDWInStructureModelWithAnonymousInnerClass_pr77269() {runModelTest("declare warning in structure model with anonymous inner class","pr77269_3");}
+ public void testNewIProgramElementMethods_pr141730() {runModelTest("new iprogramelement methods","pr141730_1");}
+
+ // if not filling in the model for aspects contained in jar files then
+ // want to ensure that the relationship map is correct and has nodes
+ // which can be used in AJDT - ensure no NPE occurs for the end of
+ // the relationship with aspectpath
+ public void testAspectPathRelWhenNotFillingInModel_pr141730() {
+ World.createInjarHierarchy = false;
+ try {
+ runModelTest("ensure aspectpath injar relationships are correct when not filling in model","pr141730_3");
+ } finally {
+ World.createInjarHierarchy = true;
+ }
+ }
+
+ public void testPCDInClassAppearsInModel_pr148027() {
+ boolean b = AsmHierarchyBuilder.shouldAddUsesPointcut;
+ AsmHierarchyBuilder.shouldAddUsesPointcut = true;
+ World.createInjarHierarchy = false;
+ try {
+ runModelTest("ensure pcd declare in class appears in model", "pr148027");
+ } finally {
+ World.createInjarHierarchy = true;
+ AsmHierarchyBuilder.shouldAddUsesPointcut = b;
+ }
+ }
public void testSourceLocationAndJarFile_pr145963() {runModelTest("sourcelocation and jar file","pr145963_1");}
public void testSourceLocationAndClassFile_pr145963() {runModelTest("sourcelocation and class file","pr145963_2");}
public void testAspectInDefaultPackage_pr145963() {runModelTest("aspect in default package", "pr145963_3");}
public void testAspectInJavaFile_pr145963() {runModelTest("aspect in java file", "pr145963_4");}
+
/////////////////////////////////////////
public static Test suite() {
diff --git a/tests/src/org/aspectj/systemtest/model/model.xml b/tests/src/org/aspectj/systemtest/model/model.xml
index 5a1843e22..6cfd4cca9 100644
--- a/tests/src/org/aspectj/systemtest/model/model.xml
+++ b/tests/src/org/aspectj/systemtest/model/model.xml
@@ -2,6 +2,21 @@
<!-- Model and Hierarchy Tests -->
<suite>
+<!-- non-AspectJ 5 specific tests -->
+
+ <ajc-test dir="model/pr77269_1" title="advice in structure model with anonymous inner class">
+ <compile files="pack/pr77269.aj" options="-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr77269_2" title="advice in structure model with named inner class">
+ <compile files="pr77269b.aj" options="-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr77269_3" title="declare warning in structure model with anonymous inner class">
+ <compile files="pack/pr77269c.aj" options="-emacssym">
+ <message kind="warning" line="8" text="blah blah blah"/>
+ </compile>
+ </ajc-test>
<ajc-test dir="model/pr145963_1" title="sourcelocation and jar file">
<compile files="C.java, SourceAspect.aj" aspectpath="simple.jar" options="-emacssym">
@@ -26,6 +41,56 @@
<message kind="warning" line="6" text="There should be no printlns"/>
</compile>
</ajc-test>
+
+ <ajc-test dir="model/pr141730_1" title="new iprogramelement methods">
+ <compile files="pr141730.aj" options="-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr141730_3" title="ensure aspectpath injar relationships are correct when not filling in model">
+ <compile files="MyFoo.java" aspectpath="aspectpath.jar" options="-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr148027" title="ensure pcd declare in class appears in model">
+ <compile files="A.aj, C.aj" options="-emacssym"/>
+ </ajc-test>
+
+
+<!-- AspectJ 5 specific tests -->
+
+ <ajc-test dir="model/pr115607" title="declare at type appears correctly in structure model">
+ <compile files="pr115607.java" options="-1.5,-emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr131932" title="structure model for generic itd">
+ <compile files="pr131932.aj" options="-1.5 -emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr132130" title="declare annotation appears in structure model when in same file">
+ <compile files="pr132130.aj" options="-1.5 -emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr120356" title="@AJ deow appear correctly when structure model is generated">
+ <compile files="C.java, A.java" options="-1.5, -emacssym">
+ <message kind="error" line="8" text="error"/>
+ <message kind="warning" line="5" text="warning"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="model/pr143924" title="declare @method relationship">
+ <compile files="pr143924.aj" options="-1.5 -showWeaveInfo -emacssym">
+ <message kind="weave" text="'public void BankAccount.debit(String,long)' (pr143924.aj:7) is annotated with @Secured"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="model/pr141730_2" title="new iprogramelement methods for generics">
+ <compile files="pr141730.aj" options="-1.5 -emacssym"/>
+ </ajc-test>
+
+ <ajc-test dir="model/pr141730_4" title="ensure inpath injar relationships are correct when not filling in model">
+ <compile files="MyBar.aj, MyAnnotation.java, NewClass.java" inpath="inpath.jar" options="-1.5 -emacssym">
+ <message kind="warning" line="20" text="System.out should not be called"/>
+ </compile>
+ </ajc-test>
</suite>