diff options
author | aclement <aclement> | 2006-08-22 08:20:36 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-08-22 08:20:36 +0000 |
commit | 50f8ecc4339442c7abaf4d3a9995c1434b768ef2 (patch) | |
tree | 75ca9caf60a4a9bd592b162dbc79146188fe1fc6 /tests/src/org | |
parent | 8b393cc90d5d63171154713e5a73044a1a2fddaf (diff) | |
download | aspectj-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.java | 114 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc150/ajc150.xml | 21 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java | 205 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/ajc151.xml | 15 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java | 243 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc152/ajc152.xml | 33 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/model/Model5Tests.java | 33 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/model/ModelTests.java | 33 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/model/model.xml | 65 |
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> |