1 8 package com.mountainminds.eclemma.internal.core; 9 10 import java.util.ArrayList ; 11 import java.util.List ; 12 13 import junit.framework.TestCase; 14 15 import org.eclipse.core.runtime.IPath; 16 import org.eclipse.debug.core.ILaunchConfiguration; 17 18 import com.mountainminds.eclemma.core.ICoverageSession; 19 import com.mountainminds.eclemma.core.IInstrumentation; 20 import com.mountainminds.eclemma.core.ISessionListener; 21 import com.mountainminds.eclemma.core.ISessionManager; 22 23 27 public class SessionManagerTest extends TestCase { 28 29 protected ISessionManager manager; 30 protected ISessionListener listener; 31 protected ISessionListener reflistener; 32 33 protected void setUp() throws Exception { 34 manager = new SessionManager(); 35 listener = new RecordingListener(); 36 manager.addSessionListener(listener); 37 reflistener = new RecordingListener(); 38 } 39 40 public void testAddSession1() { 41 ICoverageSession s0 = new DummySession(); 42 ICoverageSession s1 = new DummySession(); 43 ICoverageSession s2 = new DummySession(); 44 manager.addSession(s0, false, null); 45 manager.addSession(s1, false, null); 46 manager.addSession(s2, false, null); 47 ICoverageSession[] sessions = manager.getSessions(); 48 assertEquals(3, sessions.length); 49 assertSame(s0, sessions[0]); 50 assertSame(s1, sessions[1]); 51 assertSame(s2, sessions[2]); 52 assertNull(manager.getActiveSession()); 53 } 54 55 public void testAddSession2() { 56 ICoverageSession s0 = new DummySession(); 57 ICoverageSession s1 = new DummySession(); 58 ICoverageSession s2 = new DummySession(); 59 manager.addSession(s0, false, null); 60 manager.addSession(s1, true, null); 61 manager.addSession(s2, false, null); 62 ICoverageSession[] sessions = manager.getSessions(); 63 assertEquals(3, sessions.length); 64 assertSame(s0, sessions[0]); 65 assertSame(s1, sessions[1]); 66 assertSame(s2, sessions[2]); 67 assertSame(s1, manager.getActiveSession()); 68 } 69 70 public void testAddSession3() { 71 ICoverageSession s0 = new DummySession(); 72 ICoverageSession s1 = new DummySession(); 73 manager.addSession(s0, false, null); 74 manager.addSession(s1, true, null); 75 reflistener.sessionAdded(s0); 76 reflistener.sessionAdded(s1); 77 reflistener.sessionActivated(s1); 78 assertEquals(reflistener, listener); 79 } 80 81 public void testAddSession4() { 82 try { 83 manager.addSession(null, false, null); 84 fail("NullPointerException expected."); 85 } catch (NullPointerException npe) { 86 } 87 } 88 89 public void testRemoveSession1() { 90 ICoverageSession s0 = new DummySession(); 91 manager.addSession(s0, true, null); 92 manager.removeSession(s0); 93 assertEquals(0, manager.getSessions().length); 94 assertNull(manager.getActiveSession()); 95 reflistener.sessionAdded(s0); 96 reflistener.sessionActivated(s0); 97 reflistener.sessionRemoved(s0); 98 reflistener.sessionActivated(null); 99 assertEquals(reflistener, listener); 100 } 101 102 public void testRemoveSession2() { 103 ICoverageSession s0 = new DummySession(); 104 ICoverageSession s1 = new DummySession(); 105 manager.addSession(s0, false, null); 106 manager.addSession(s1, true, null); 107 manager.removeSession(s1); 108 ICoverageSession[] sessions = manager.getSessions(); 109 assertEquals(1, sessions.length); 110 assertSame(s0, sessions[0]); 111 assertSame(s0, manager.getActiveSession()); 112 reflistener.sessionAdded(s0); 113 reflistener.sessionAdded(s1); 114 reflistener.sessionActivated(s1); 115 reflistener.sessionRemoved(s1); 116 reflistener.sessionActivated(s0); 117 assertEquals(reflistener, listener); 118 } 119 120 public void testRemoveSession3() { 121 Object key0 = new Object (); 122 Object key1 = new Object (); 123 ICoverageSession s0 = new DummySession(); 124 ICoverageSession s1 = new DummySession(); 125 manager.addSession(s0, false, key0); 126 manager.addSession(s1, true, key1); 127 manager.removeSession(key1); 128 ICoverageSession[] sessions = manager.getSessions(); 129 assertEquals(1, sessions.length); 130 assertSame(s0, sessions[0]); 131 assertSame(s0, manager.getActiveSession()); 132 reflistener.sessionAdded(s0); 133 reflistener.sessionAdded(s1); 134 reflistener.sessionActivated(s1); 135 reflistener.sessionRemoved(s1); 136 reflistener.sessionActivated(s0); 137 assertEquals(reflistener, listener); 138 } 139 140 public void testRemoveSession4() { 141 Object key0 = new Object (); 142 Object key1 = new Object (); 143 Object key2 = new Object (); 144 ICoverageSession s0 = new DummySession(); 145 ICoverageSession s1 = new DummySession(); 146 manager.addSession(s0, false, key0); 147 manager.addSession(s1, true, key1); 148 manager.removeSession(key2); 149 assertEquals(2, manager.getSessions().length); 150 } 151 152 public void testRemoveAllSessions1() { 153 ICoverageSession s0 = new DummySession(); 154 ICoverageSession s1 = new DummySession(); 155 manager.addSession(s0, false, null); 156 manager.addSession(s1, true, null); 157 manager.removeAllSessions(); 158 assertEquals(0, manager.getSessions().length); 159 assertNull(manager.getActiveSession()); 160 reflistener.sessionAdded(s0); 161 reflistener.sessionAdded(s1); 162 reflistener.sessionActivated(s1); 163 reflistener.sessionRemoved(s0); 164 reflistener.sessionRemoved(s1); 165 reflistener.sessionActivated(null); 166 assertEquals(reflistener, listener); 167 } 168 169 public void testGetSessions1() { 170 ICoverageSession[] sessions = manager.getSessions(); 171 assertNotNull(sessions); 172 assertEquals(0, sessions.length); 173 } 174 175 public void testGetSession1() { 176 Object key0 = new Object (); 177 Object key1 = new Object (); 178 Object key2 = new Object (); 179 ICoverageSession s0 = new DummySession(); 180 ICoverageSession s1 = new DummySession(); 181 manager.addSession(s0, false, key0); 182 manager.addSession(s1, false, key1); 183 assertEquals(s0, manager.getSession(key0)); 184 assertEquals(s1, manager.getSession(key1)); 185 assertNull(manager.getSession(key2)); 186 } 187 188 189 private static class DummySession implements ICoverageSession { 190 191 public String getDescription() { 192 return toString(); 193 } 194 195 public IInstrumentation[] getInstrumentations() { 196 return new IInstrumentation[0]; 197 } 198 199 public IPath[] getCoverageDataFiles() { 200 return new IPath[0]; 201 } 202 203 public ILaunchConfiguration getLaunchConfiguration() { 204 return null; 205 } 206 207 public ICoverageSession merge(ICoverageSession other, String description) { 208 return new DummySession(); 209 } 210 211 public Object getAdapter(Class adapter) { 212 return null; 213 } 214 215 public String toString() { 216 return "Session@" + System.identityHashCode(this); 217 } 218 219 } 220 221 private static class RecordingListener implements ISessionListener { 222 223 private List l = new ArrayList (); 224 225 public void sessionAdded(ICoverageSession addedSession) { 226 l.add("ADDED"); l.add(addedSession); 227 } 228 229 public void sessionRemoved(ICoverageSession removedSession) { 230 l.add("REMOVED"); l.add(removedSession); 231 } 232 233 public void sessionActivated(ICoverageSession session) { 234 l.add("ACTIVATED"); l.add(session); 235 } 236 237 public boolean equals(Object obj) { 238 if (obj instanceof RecordingListener) { 239 return l.equals(((RecordingListener) obj).l); 240 } else { 241 return false; 242 } 243 } 244 245 public int hashCode() { 246 return l.hashCode(); 247 } 248 249 public String toString() { 250 return l.toString(); 251 } 252 253 } 254 255 } 256 | Popular Tags |