diff options
Diffstat (limited to 'tests/new/pointcutLibrary/langlib/PointcutsCW.java')
-rw-r--r-- | tests/new/pointcutLibrary/langlib/PointcutsCW.java | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/tests/new/pointcutLibrary/langlib/PointcutsCW.java b/tests/new/pointcutLibrary/langlib/PointcutsCW.java new file mode 100644 index 000000000..8d567ff95 --- /dev/null +++ b/tests/new/pointcutLibrary/langlib/PointcutsCW.java @@ -0,0 +1,217 @@ +package langlib; +import org.aspectj.testing.Tester; + +import java.awt.Button; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeListener; +import java.io.*; +import java.lang.reflect.Method; + +import javax.swing.*; +import javax.swing.Action; + +// DO NOT CHANGE LINEATION! WARNING NUMBERS DEPEND ON IT! See grep below + + + + + +/** + * todo yet untested: + * - dynamic calls + */ +public aspect PointcutsCW { + declare error: Pointcuts.never() : "never"; + declare error: within(PointcutsCW) && Pointcuts.never() : "never"; + + declare warning: Pointcuts.mainExecution() : "mainExecution"; + declare warning: Pointcuts.anyMethodExecution() : "anyMethodExecution"; + declare warning: Pointcuts.anyPublicMethodExecution() : "anyPublicMethodExecution"; + declare warning: Pointcuts.anyNonPrivateMethodExecution() : "anyNonPrivateMethodExecution"; + declare warning: Pointcuts.anyConstructorExecution() : "anyConstructorExecution"; + declare warning: Pointcuts.anyPublicConstructorExecution() : "anyPublicConstructorExecution"; + declare warning: Pointcuts.anyNonPrivateConstructorExecution() : "anyNonPrivateConstructorExecution"; + + declare warning: Pointcuts.anyPublicFieldGet() : "anyPublicFieldGet"; + declare warning: Pointcuts.anyNonPrivateFieldGet() : "anyNonPrivateFieldGet"; + declare warning: Pointcuts.anyPublicFieldSet() : "anyPublicFieldSet"; + declare warning: Pointcuts.anyNonPrivateFieldSet() : "anyNonPrivateFieldSet"; + declare warning: Pointcuts.withinSetter() : "withinSetter"; + declare warning: Pointcuts.withinGetter() : "withinGetter"; + declare warning: Pointcuts.anyNonPublicFieldSetOutsideConstructorOrSetter() : "anyNonPublicFieldSetOutsideConstructorOrSetter"; + + declare warning: Pointcuts.anyRunnableImplementation() : "anyRunnableImplementation"; + declare warning: Pointcuts.anyGetSystemErrOut() : "anyGetSystemErrOut"; + declare warning: Pointcuts.anySetSystemErrOut() : "anySetSystemErrOut"; + declare warning: Pointcuts.withinAnyJavaCode() : "withinAnyJavaCode"; // XXX + declare warning: Pointcuts.notWithinJavaCode() : "notWithinJavaCode"; // XXX + declare warning: Pointcuts.toStringExecution() : "toStringExecution"; + declare warning: Pointcuts.anyThreadConstruction() : "anyThreadConstruction"; + declare warning: Pointcuts.anyJavaIOCalls() : "anyJavaIOCalls"; + declare warning: Pointcuts.anyJavaAWTOrSwingCalls() : "anyJavaAWTOrSwingCalls"; + declare warning: Pointcuts.cloneImplementationsInNonCloneable() : "cloneImplementationsInNonCloneable"; + declare warning: Pointcuts.runImplementationsInNonRunnable() : "runImplementationsInNonRunnable"; + declare warning: Pointcuts.anySystemReflectiveCalls() : "anySystemReflectiveCalls"; + declare warning: Pointcuts.anySystemClassLoadingCalls() : "anySystemClassLoadingCalls"; + declare warning: Pointcuts.anySystemProcessSpawningCalls() : "anySystemProcessSpawningCalls"; + declare warning: Pointcuts.mostThrowableReadCalls() : "mostThrowableReadCalls"; + declare warning: Pointcuts.exceptionWrappingCalls() : "exceptionWrappingCalls"; + + public static int publicStaticInt; + public int publicInt; + private static int privateStaticInt; + private int privateInt; + static int defaultStaticInt; + int defaultInt; + + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public static void main(String[] list) { + new PointcutsCW().toString(); // RT cflowMainExecution + } + + private PointcutsCW() {} // CW anyConstructorExecution + + public PointcutsCW(int i) {} // CW anyConstructorExecution, anyPublicConstructorExecution, anyNonPrivateConstructorExecution + + PointcutsCW(String s) { // CW anyConstructorExecution, anyNonPrivateConstructorExecution + + defaultInt = 0; // CW anyNonPrivateFieldSet + + } + + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public String toString() {// CW toStringExecution + return ""; + } + + private int perrorCode() { } // CW anyMethodExecution + + private void setInt() { // CW anyMethodExecution, + + defaultInt = 0; // CW anyNonPrivateFieldSet, withinSetter + + } + + private int getInt() { + + return defaultInt; // CW anyNonPrivateFieldGet, withinGetter + + } + + static class NotRunnable { + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public void run() { // CW runImplementationsInNonRunnable + } + } + + static class R implements Runnable { // CW anyRunnableImplementation + + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public void run() { + + } + + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public Object clone() { // CW cloneImplementationsInNonCloneable + return null; + } + + } + + // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution + public static void pserrorCode() throws IOException { + + i = publicStaticInt; // CW anyPublicFieldGet, anyNonPrivateFieldGet + + i = publicInt; // CW anyPublicFieldGet, anyNonPrivateFieldGet + + i = privateStaticInt; + + i = privateInt; + + i = defaultStaticInt; // CW anyNonPrivateFieldGet + + i = defaultInt; // CW anyNonPrivateFieldGet + + publicStaticInt = 1; // CW anyPublicFieldSet, anyNonPrivateFieldSet + + publicInt = 1; // CW anyPublicFieldSet, anyNonPrivateFieldSet + + // for these 4: CW anyNonPublicFieldSetOutsideConstructorOrSetter + privateStaticInt = 1; + + privateInt = 1; + + defaultStaticInt = 1; // CW anyNonPrivateFieldSet + + defaultInt = 1; // CW anyNonPrivateFieldSet + + System.out.println(""); // CW anyGetSystemErrOut, anyNonPrivateFieldGet, anyPublicFieldGet + + System.err.println(""); // CW anyGetSystemErrOut, anyNonPrivateFieldGet anyPublicFieldGet + + new Thread((Runnable)null); // CW anyThreadConstruction + + FileReader fr = new FileReader("none"); // CW anyJavaIOCalls + + int i = fr.read(); // CW anyJavaIOCalls + + DefaultListModel model = new DefaultListModel(); // CW anyJavaAWTOrSwingCalls + + model.addElement(null); // CW anyJavaAWTOrSwingCalls + + Button button = new Button(); // CW anyJavaAWTOrSwingCalls + + button.addActionListener(null); // CW anyJavaAWTOrSwingCalls + + String myName = PointcutsCW.class.getName(); + + Class me = Class.forName(myName); // CW anySystemClassLoadingCalls + + Method m = me.getDeclaredMethod("notFound", new Class[]{}); // CW anySystemReflectiveCalls + + Process p = Runtime.exec("ls"); // CW anySystemProcessSpawningCalls + + Error e = new Error("hello"); + + e.getMessage(); // CW mostThrowableReadCalls + + e.printStackTrace(); // CW mostThrowableReadCalls + + e.getClass(); // CW mostThrowableReadCalls + + } + +} + +aspect DynamicTests { + static { + Tester.expectEvent("mainExecution"); + Tester.expectEvent("cflowMainExecution"); + Tester.expectEvent("adviceCflow"); + Tester.expectEvent("notInAdviceCflow"); + } + after(PointcutsCE pointcutsCE) returning : target(pointcutsCE) + && Pointcuts.cflowMainExecution() && call(String toString()) { + String targ = pointcutsCE.toString(); + Tester.event("cflowMainExecution"); + Tester.event("adviceCflow"); + } + + after(PointcutsCE pointcutsCE) returning : target(pointcutsCE) + && notInAdviceCflow() && call(String toString()) { + Tester.event("notInAdviceCflow"); // should only get one of these + } + + after() returning : within(PointcutsCE) && Pointcuts.mainExecution() { + Tester.event("mainExecution"); // also cflowMainExecution + Tester.checkAllEvents(); + } + +} +/* + grep -n " CW" PointcutsCW.java \ + | sed 's|^\(.*\)\:.*\/\/*CW \(.*\)$|<message kind="warning" line="\1" text="\2"/>|' \ + > messages.txt + +*/
\ No newline at end of file |