1 19 20 package org.netbeans.api.debugger; 21 22 import org.netbeans.api.debugger.test.TestDICookie; 23 import org.netbeans.api.debugger.test.TestDebuggerManagerListener; 24 import org.netbeans.api.debugger.test.TestLazyDebuggerManagerListener; 25 26 import java.util.*; 27 import java.beans.PropertyChangeEvent ; 28 29 34 public class LaunchDebuggerTest extends DebuggerApiTestBase { 35 36 public LaunchDebuggerTest(String s) { 37 super(s); 38 } 39 40 public void testLookup () throws Exception { 41 42 DebuggerManager dm = DebuggerManager.getDebuggerManager(); 43 TestDebuggerManagerListener dml = new TestDebuggerManagerListener(); 44 dm.addDebuggerListener(dml); 45 46 TestLazyDebuggerManagerListener ldml = (TestLazyDebuggerManagerListener) 47 dm.lookupFirst (null, LazyDebuggerManagerListener.class); 48 assertNotNull("Lazy debugger manager listener not loaded", ldml); 49 50 Map args = new HashMap(); 51 TestDICookie tdi = TestDICookie.create(args); 52 53 Object [] services = new Object [] { tdi, this }; 54 DebuggerInfo di = DebuggerInfo.create(TestDICookie.ID, services); 55 56 DebuggerEngine engines [] = dm.startDebugging(di); 57 assertEquals("Wrong number of debugger engines started", engines.length, 1); 58 59 testStartEvents(dml, engines); 60 testStartEvents(ldml, engines); 61 62 DebuggerEngine debugger = engines[0]; 63 DebuggerInfo dic = (DebuggerInfo) debugger.lookupFirst(null, DebuggerInfo.class); 64 assertSame("Wrong debugger info in engine lookup", dic, di); 65 assertTrue("Engine did not start", tdi.hasInfo(ActionsManager.ACTION_START)); 66 67 dm.getCurrentSession().kill(); 68 assertTrue("Engine did not finish", tdi.hasInfo(ActionsManager.ACTION_KILL)); 69 70 testKillEvents(dml); 71 testKillEvents(ldml); 72 73 dm.removeDebuggerListener(dml); 74 } 75 76 private void testKillEvents(TestDebuggerManagerListener dml) { 77 List events; 78 TestDebuggerManagerListener.Event event; 79 events = dml.getEvents(); 80 assertEquals("Wrong number of events generated", events.size(), 5); 81 for (Iterator i = events.iterator(); i.hasNext();) { 82 event = (TestDebuggerManagerListener.Event) i.next(); 83 if (event.getName().equals("sessionRemoved")) { 84 i.remove(); 85 } else if (event.getName().equals("propertyChange")) { 86 PropertyChangeEvent pce = (PropertyChangeEvent ) event.getParam(); 87 if (pce.getPropertyName().equals("sessions")) { 88 i.remove(); 89 } else if (pce.getPropertyName().equals("debuggerEngines")) { 90 i.remove(); 91 } else if (pce.getPropertyName().equals("currentEngine")) { 92 assertNull("Bad current engine", pce.getNewValue()); 93 i.remove(); 94 } else if (pce.getPropertyName().equals("currentSession")) { 95 assertNull("Bad current session", pce.getNewValue()); 96 i.remove(); 97 } 98 } 99 } 100 assertEquals("Wrong events generated", events.size(), 0); 101 } 102 103 private void testStartEvents(TestDebuggerManagerListener dml, DebuggerEngine[] engines) { 104 List events; 105 TestDebuggerManagerListener.Event event; 106 events = dml.getEvents(); 107 assertEquals("Wrong number of events generated", events.size(), 5); 108 for (Iterator i = events.iterator(); i.hasNext();) { 109 event = (TestDebuggerManagerListener.Event) i.next(); 110 if (event.getName().equals("sessionAdded")) { 111 i.remove(); 112 } else if (event.getName().equals("propertyChange")) { 113 PropertyChangeEvent pce = (PropertyChangeEvent ) event.getParam(); 114 if (pce.getPropertyName().equals("sessions")) { 115 i.remove(); 116 } else if (pce.getPropertyName().equals("debuggerEngines")) { 117 i.remove(); 118 } else if (pce.getPropertyName().equals("currentEngine")) { 119 assertSame("Bad PCE new current engine", pce.getNewValue(), engines[0]); 120 i.remove(); 121 } else if (pce.getPropertyName().equals("currentSession")) { 122 i.remove(); 123 } 124 } 125 } 126 assertEquals("Wrong events generated", events.size(), 0); 127 } 128 } 129 | Popular Tags |