1 7 package ch.ethz.prose.engine; 8 9 import java.util.*; 11 12 import junit.framework.*; 13 import ch.ethz.inf.iks.jvmai.jvmdi.MethodExecutionJoinPointImpl; 14 import ch.ethz.jvmai.*; 15 16 22 public 23 class JoinPointManagerTest extends TestCase { 24 25 static class TestListener extends JoinPointListener 27 { 28 public List receivedEvents = new Vector(); 29 public void joinPointReached(FieldAccessJoinPoint e) 30 { 31 receivedEvents.add(e); 32 } 33 34 public void joinPointReached(FieldModificationJoinPoint e) 35 { 36 receivedEvents.add(e); 37 } 38 39 public void joinPointReached(MethodEntryJoinPoint e) 40 { 41 receivedEvents.add(e); 42 } 43 44 public void joinPointReached(MethodExitJoinPoint e) 45 { 46 receivedEvents.add(e); 47 } 48 49 public void joinPointReached(ExceptionJoinPoint e) 50 { 51 receivedEvents.add(e); 52 } 53 54 public void joinPointReached(ExceptionCatchJoinPoint e) 55 { 56 receivedEvents.add(e); 57 } 58 59 } 60 61 62 static class TestRequest extends JoinPointRequest 63 { 64 public String getKind() 65 { 66 return ""; 67 } 68 public int getMask() 69 { 70 return 0; 71 } 72 long mySignature; 73 public TestRequest(long signature) 74 { 75 super(null); 76 mySignature = signature; 77 } 78 protected void setWatch(Object listeners) { } 79 protected void clearWatch() { } 80 public boolean equals(Object other) { return ((other instanceof TestRequest) && (((TestRequest)other).mySignature==mySignature)); } 81 public int hashCode() { return (int)mySignature; } 82 } 83 84 88 public JoinPointManagerTest(String name) 89 { 90 super(name); 91 } 92 93 94 class VisibleJoinPointManager extends JoinPointManager 95 { 96 public VisibleJoinPointManager(boolean ic, JVMAspectInterface ai, boolean rev) {super(ic,ai,rev);} 97 public Map getReq2listener() 98 { return req2listener; } 99 public Map getListener2Req() 100 { return listener2req; } 101 } 102 103 VisibleJoinPointManager jpMgr = null; 104 105 JoinPointRequest jpr1 = null; 106 JoinPointRequest jpr2 = null; 107 JoinPointRequest jpr3 = null; 108 JoinPointListener jpList1 = null; 109 JoinPointListener jpList2 = null; 110 MethodEntryJoinPoint jp1 = null; 111 MethodEntryJoinPoint jp2 = null; 112 static class TestMethodEntryJoinPoint extends MethodExecutionJoinPointImpl implements MethodEntryJoinPoint 113 { 114 ListenerList llist; 115 protected TestMethodEntryJoinPoint(ListenerList l) 116 { 117 super(null,null); 118 llist=l; 119 } 120 121 public Object getAopTag() 122 { 123 return llist; 124 } 125 126 public boolean equals(Object other) 127 { 128 if (other instanceof TestMethodEntryJoinPoint) 129 return true; 130 else 131 return false; 132 } 133 134 public int hashCode() 135 { 136 return 0xDEADBEEF; 137 } 138 }; 139 140 143 protected 144 void setUp() 145 { 146 jpMgr = new VisibleJoinPointManager(false, null, true); jpr1 = new TestRequest(1000); 148 jpr2 = new TestRequest(2000); 149 jpr3 = new TestRequest(1000); 150 jpList1 = new TestListener(); 151 jpList2 = new TestListener(); 152 153 jpMgr.registerListener(jpList1,jpr1); 162 jpMgr.registerListener(jpList2,jpr2); 163 jpMgr.registerListener(jpList2,jpr3); 164 165 166 jp1 = new TestMethodEntryJoinPoint((ListenerList)((VisibleJoinPointManager)jpMgr).getReq2listener().get(jpr1)); 167 jp2 = new TestMethodEntryJoinPoint((ListenerList)((VisibleJoinPointManager)jpMgr).getReq2listener().get(jpr2)); 168 } 169 170 public void testEvents() 171 { 172 assertTrue(jpr1.equals(jpr3)); 174 assertTrue(!jpr1.equals(jpr2)); 175 } 176 177 public void testRegisterListener() 178 { 179 assertTrue(((VisibleJoinPointManager)jpMgr).getReq2listener().size() == 2); 180 assertTrue(((VisibleJoinPointManager)jpMgr).getListener2Req().size() == 2); 181 assertTrue(((Set)((VisibleJoinPointManager)jpMgr).getListener2Req().get(jpList2)).size() == 2); 182 } 183 184 185 186 public void testNotifyListeners() 187 { 188 jpMgr.onMethodEntry(jp1); 191 assertEquals(((TestListener)jpList1).receivedEvents,((TestListener)jpList2).receivedEvents); 192 assertTrue(((TestListener)jpList1).receivedEvents.size() > 0); 193 194 ((TestListener)jpList1).receivedEvents = new Vector(); 196 ((TestListener)jpList2).receivedEvents = new Vector(); 197 198 jpMgr.onMethodEntry(jp2); 200 assertTrue(((TestListener)jpList1).receivedEvents.isEmpty()); 201 assertTrue(!((TestListener)jpList2).receivedEvents.isEmpty()); 202 assertTrue(((TestListener)jpList2).receivedEvents.get(0).equals(jp2)); 203 } 204 205 public void testUnregisterListeners() 206 { 207 jpMgr.unregisterListener(jpList2); 209 210 assertTrue(((VisibleJoinPointManager)jpMgr).getReq2listener().size() == 1); 212 assertTrue(((VisibleJoinPointManager)jpMgr).getListener2Req().size() == 1); 213 assertTrue(((Set)((VisibleJoinPointManager)jpMgr).getListener2Req().get(jpList2)) == null); 214 215 jpMgr.onMethodEntry(jp1); 219 assertTrue(!((TestListener)jpList1).receivedEvents.isEmpty()); 220 assertTrue(((TestListener)jpList2).receivedEvents.isEmpty()); 221 } 222 223 227 public static 228 Test suite() 229 { 230 return new TestSuite(JoinPointManagerTest.class); 231 } 232 } 233 234 | Popular Tags |