KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > api > debugger > LaunchDebuggerTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

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 JavaDoc;
28
29 /**
30  * Launches and finishes a debugger session. Tests services registration and lookup and event firing.
31  *
32  * @author Maros Sandor
33  */

34 public class LaunchDebuggerTest extends DebuggerApiTestBase {
35
36     public LaunchDebuggerTest(String JavaDoc s) {
37         super(s);
38     }
39
40     public void testLookup () throws Exception JavaDoc {
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 JavaDoc [] services = new Object JavaDoc[] { 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 JavaDoc pce = (PropertyChangeEvent JavaDoc) 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 JavaDoc pce = (PropertyChangeEvent JavaDoc) 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