diff options
author | aclement <aclement> | 2006-03-29 12:06:04 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-03-29 12:06:04 +0000 |
commit | a2252d8b395f4da1e56bf77ea5d36e0c8d634ebd (patch) | |
tree | 2fe4505e5618d7f8217023e098ebc2924f7524ea | |
parent | e05ab26570eeb1776836d67e980c37e0813e30e3 (diff) | |
download | aspectj-a2252d8b395f4da1e56bf77ea5d36e0c8d634ebd.tar.gz aspectj-a2252d8b395f4da1e56bf77ea5d36e0c8d634ebd.zip |
more tests for @DeclareParents - building it in pieces.
-rw-r--r-- | tests/bugs151/atDecp/case3/MainClass.java | 37 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case3/Mood.java | 3 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case3/Moody.java | 6 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/AnnotationMoodImplementor.java | 3 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/MainClass.java | 19 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/Mood.java | 3 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/Moody.java | 6 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/MoodyImpl.java | 10 | ||||
-rw-r--r-- | tests/bugs151/atDecp/case4/TheAspect.java | 13 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java | 2 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/ajc151.xml | 33 |
11 files changed, 135 insertions, 0 deletions
diff --git a/tests/bugs151/atDecp/case3/MainClass.java b/tests/bugs151/atDecp/case3/MainClass.java new file mode 100644 index 000000000..f4212e97c --- /dev/null +++ b/tests/bugs151/atDecp/case3/MainClass.java @@ -0,0 +1,37 @@ +package theapp; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclareParents; + +import moody.*; + +class AnnotationMoodImplementor { } + +@Aspect +class AnnotationMoodIndicator { + + public static class MoodyImpl implements Moody { + private Mood mood = Mood.HAPPY; + + public Mood getMood() { return mood; } + public void setMood(Mood mood) { this.mood = mood; } + } + + @DeclareParents(value="theapp.AnnotationMoodImplementor",defaultImpl=MoodyImpl.class) + private Moody implementedInterface; +} + + + +public class MainClass { + public static void main(String[] args) { + AnnotationMoodImplementor ami0 = new AnnotationMoodImplementor(); + AnnotationMoodImplementor ami1 = new AnnotationMoodImplementor(); + + System.err.println("ami0's mood is " + ((Moody) ami0).getMood()); + ((Moody) ami1).setMood(Mood.JOLLY); + System.err.println("ami1's mood is now " + ((Moody) ami1).getMood()); + System.err.println("ami0's mood is still " + ((Moody) ami0).getMood()); + } +} + diff --git a/tests/bugs151/atDecp/case3/Mood.java b/tests/bugs151/atDecp/case3/Mood.java new file mode 100644 index 000000000..9d0591b6f --- /dev/null +++ b/tests/bugs151/atDecp/case3/Mood.java @@ -0,0 +1,3 @@ +package moody; + +public enum Mood { HAPPY, SAD, JOLLY, GRUMPY } diff --git a/tests/bugs151/atDecp/case3/Moody.java b/tests/bugs151/atDecp/case3/Moody.java new file mode 100644 index 000000000..13353c72e --- /dev/null +++ b/tests/bugs151/atDecp/case3/Moody.java @@ -0,0 +1,6 @@ +package moody; + +public interface Moody { + Mood getMood(); + void setMood(Mood mood); +} diff --git a/tests/bugs151/atDecp/case4/AnnotationMoodImplementor.java b/tests/bugs151/atDecp/case4/AnnotationMoodImplementor.java new file mode 100644 index 000000000..548b1fac2 --- /dev/null +++ b/tests/bugs151/atDecp/case4/AnnotationMoodImplementor.java @@ -0,0 +1,3 @@ +package theapp; + +public class AnnotationMoodImplementor {} diff --git a/tests/bugs151/atDecp/case4/MainClass.java b/tests/bugs151/atDecp/case4/MainClass.java new file mode 100644 index 000000000..40a54564d --- /dev/null +++ b/tests/bugs151/atDecp/case4/MainClass.java @@ -0,0 +1,19 @@ +package theapp; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclareParents; + +import moody.*; + +public class MainClass { + public static void main(String[] args) { + AnnotationMoodImplementor ami0 = new AnnotationMoodImplementor(); + AnnotationMoodImplementor ami1 = new AnnotationMoodImplementor(); + + System.err.println("ami0's mood is " + ((Moody) ami0).getMood()); + ((Moody) ami1).setMood(Mood.JOLLY); + System.err.println("ami1's mood is now " + ((Moody) ami1).getMood()); + System.err.println("ami0's mood is still " + ((Moody) ami0).getMood()); + } +} + diff --git a/tests/bugs151/atDecp/case4/Mood.java b/tests/bugs151/atDecp/case4/Mood.java new file mode 100644 index 000000000..9d0591b6f --- /dev/null +++ b/tests/bugs151/atDecp/case4/Mood.java @@ -0,0 +1,3 @@ +package moody; + +public enum Mood { HAPPY, SAD, JOLLY, GRUMPY } diff --git a/tests/bugs151/atDecp/case4/Moody.java b/tests/bugs151/atDecp/case4/Moody.java new file mode 100644 index 000000000..13353c72e --- /dev/null +++ b/tests/bugs151/atDecp/case4/Moody.java @@ -0,0 +1,6 @@ +package moody; + +public interface Moody { + Mood getMood(); + void setMood(Mood mood); +} diff --git a/tests/bugs151/atDecp/case4/MoodyImpl.java b/tests/bugs151/atDecp/case4/MoodyImpl.java new file mode 100644 index 000000000..01d926d98 --- /dev/null +++ b/tests/bugs151/atDecp/case4/MoodyImpl.java @@ -0,0 +1,10 @@ +package theapp; + +import moody.*; + +public class MoodyImpl implements Moody { + private Mood mood = Mood.HAPPY; + + public Mood getMood() { return mood; } + public void setMood(Mood mood) { this.mood = mood; } +} diff --git a/tests/bugs151/atDecp/case4/TheAspect.java b/tests/bugs151/atDecp/case4/TheAspect.java new file mode 100644 index 000000000..daeb0e14d --- /dev/null +++ b/tests/bugs151/atDecp/case4/TheAspect.java @@ -0,0 +1,13 @@ +package theapp; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclareParents; + +import moody.Moody; + +@Aspect +class AnnotationMoodIndicator { + @DeclareParents(value="theapp.AnnotationMoodImplementor",defaultImpl=MoodyImpl.class) + private Moody implementedInterface; +} + diff --git a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java index a5447eaab..9604bab50 100644 --- a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java @@ -29,6 +29,8 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase { // Some @DeclareParents testing public void testAtDecp_1() { runTest("atDecp - simple");} public void testAtDecp_2() { runTest("atDecp - annotation");} + public void testAtDecp_3() { runTest("atDecp - binary interface");} + public void testAtDecp_4() { runTest("atDecp - binary interface - 2");} public void testAnnotationsAndItds_pr98901() { runTest("annotations and itds");} public void testAnnotationsAndItds_pr98901_2() { runTest("annotations and itds - 2");} diff --git a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml index a9ec5f59b..43fb2813d 100644 --- a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml +++ b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml @@ -37,6 +37,39 @@ </run> </ajc-test> + <!-- when interface is binary --> + <ajc-test dir="bugs151/atDecp/case3" title="atDecp - binary interface"> + <compile files="Mood.java,Moody.java" outjar="moody.jar" options="-1.5"/> + <compile files="MainClass.java" classpath="moody.jar" options="-1.5 -showWeaveInfo"> + <message kind="weave" text="Extending interface set for type 'theapp.AnnotationMoodImplementor' (MainClass.java) to include 'moody.Moody' (MainClass.java)"/> + <message kind="weave" text="Type 'theapp.AnnotationMoodImplementor' (MainClass.java) has intertyped method from 'theapp.AnnotationMoodIndicator' (MainClass.java:'moody.Mood moody.Moody.getMood()')"/> + <message kind="weave" text="Type 'theapp.AnnotationMoodImplementor' (MainClass.java) has intertyped method from 'theapp.AnnotationMoodIndicator' (MainClass.java:'void moody.Moody.setMood(moody.Mood)')"/> + </compile> + <run class="theapp.MainClass"> + <stderr> + <line text="ami0's mood is HAPPY"/> + <line text="ami1's mood is now JOLLY"/> + <line text="ami0's mood is still HAPPY"/> + </stderr> + </run> + </ajc-test> + + <!-- when interface is binary and implementation is not an inner --> + <ajc-test dir="bugs151/atDecp/case4" title="atDecp - binary interface - 2"> + <compile files="Mood.java,Moody.java" outjar="moody.jar" options="-1.5"/> + <compile files="MainClass.java,AnnotationMoodImplementor.java,TheAspect.java,MoodyImpl.java" classpath="moody.jar" options="-1.5 -showWeaveInfo"> + <message kind="weave" text="Extending interface set for type 'theapp.AnnotationMoodImplementor' (AnnotationMoodImplementor.java) to include 'moody.Moody' (TheAspect.java)"/> + <message kind="weave" text="Type 'theapp.AnnotationMoodImplementor' (AnnotationMoodImplementor.java) has intertyped method from 'theapp.AnnotationMoodIndicator' (TheAspect.java:'moody.Mood moody.Moody.getMood()')"/> + <message kind="weave" text="Type 'theapp.AnnotationMoodImplementor' (AnnotationMoodImplementor.java) has intertyped method from 'theapp.AnnotationMoodIndicator' (TheAspect.java:'void moody.Moody.setMood(moody.Mood)')"/> + </compile> + <run class="theapp.MainClass"> + <stderr> + <line text="ami0's mood is HAPPY"/> + <line text="ami1's mood is now JOLLY"/> + <line text="ami0's mood is still HAPPY"/> + </stderr> + </run> + </ajc-test> <!-- atDecp end --> |