1 package ch.ethz.prose.crosscut; 2 3 import junit.framework.TestCase; 4 import ch.ethz.prose.*; 5 import ch.ethz.prose.filter.*; 6 7 12 public class MethodArgumentsTest extends TestCase { 13 14 protected static boolean crosscutted; 15 16 public MethodArgumentsTest(String name) { 17 super(name); 18 } 19 20 protected void setUp() throws SystemStartupException { 21 ProseSystem.startup(); 22 } 23 24 protected void tearDown() throws SystemTeardownException { 25 ProseSystem.teardown(); 26 } 27 28 public void myMethod() {} 29 public void myMethodByte(byte arg1, byte arg2) {} 30 public void myMethodShort(short arg1, short arg2) {} 31 public void myMethodInt(int arg1, int arg2) {} 32 public void myMethodLong(long arg1, long arg2) {} 33 public void myMethodFloat(float arg1, float arg2) {} 34 public void myMethodDouble(double arg1, double arg2) {} 35 public void myMethodReference(Object arg1, Object arg2) {} 36 public void myMethodMixed( 37 byte arg1, 38 short arg2, 39 int arg3, 40 long arg4, 41 float arg5, 42 double arg6, 43 Object arg7, 44 byte arg8, 45 short arg9, 46 int arg10, 47 long arg11, 48 float arg12, 49 double arg13, 50 Object arg14) { 51 } 52 53 public void test_010_interface() { 54 ProseSystem.getAspectManager().insert(new MethodAspect()); 55 MyInterface mi = new MyClass(); 56 57 crosscutted = false; 58 myMethod(); 59 assertTrue("Method invocation is cross-cutted (empty)", crosscutted); 60 61 crosscutted = false; 62 byte b = 0; 63 myMethodByte(b, b); 64 assertTrue("Method invocation is cross-cutted (byte)", crosscutted); 65 66 crosscutted = false; 67 short s = 0; 68 myMethodShort(s, s); 69 assertTrue("Method invocation is cross-cutted (short)", crosscutted); 70 71 crosscutted = false; 72 myMethodInt(0, 0); 73 assertTrue("Method invocation is cross-cutted (int)", crosscutted); 74 75 crosscutted = false; 76 myMethodLong(0, 0); 77 assertTrue("Method invocation is cross-cutted (long)", crosscutted); 78 79 crosscutted = false; 80 myMethodFloat(0, 0); 81 assertTrue("Method invocation is cross-cutted (float)", crosscutted); 82 83 crosscutted = false; 84 myMethodDouble(0, 0); 85 assertTrue("Method invocation is cross-cutted (double)", crosscutted); 86 87 crosscutted = false; 88 myMethodReference(null, null); 89 assertTrue("Method invocation is cross-cutted (ref)", crosscutted); 90 91 crosscutted = false; 92 myMethodMixed(b, s, 0, 0, 0, 0, null, b, s, 0, 0, 0, 0, null); 93 assertTrue("Method invocation is cross-cutted (mixed)", crosscutted); 94 } 95 96 public interface MyInterface { 97 public void myMethod(); 98 } 99 100 public class MyClass implements MyInterface { 101 public void myMethod() {}; 102 } 103 104 public class MethodAspect extends DefaultAspect { 105 public Crosscut c = new MethodCut() { 106 public void METHOD_ARGS(MethodArgumentsTest c, REST r) { 107 crosscutted = true; 108 } 109 protected PointCutter pointCutter() { 110 return Within.method("myMethod.*").AND(Executions.before()); 111 } 112 protected Class [] potentialCrosscutClasses() { 113 return new Class [] { MethodArgumentsTest.class }; 114 } 115 }; 116 }; 117 } | Popular Tags |