KickJava   Java API By Example, From Geeks To Geeks.

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


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.TestDebuggerManagerListener;
23 import java.beans.PropertyChangeListener JavaDoc;
24 import java.beans.PropertyChangeEvent JavaDoc;
25 import java.util.List JavaDoc;
26
27 /**
28  * Tests adding and removing of breakpoints and firing of breakpoint events.
29  *
30  * @author Maros Sandor
31  */

32 public class BreakpointsTest extends DebuggerApiTestBase {
33
34     public BreakpointsTest(String JavaDoc s) {
35         super(s);
36     }
37
38     public void testBreakpoints() throws Exception JavaDoc {
39         DebuggerManager dm = DebuggerManager.getDebuggerManager();
40         TestBreakpoint tb = new TestBreakpoint();
41         TestDebuggerManagerListener dml = new TestDebuggerManagerListener();
42         dm.addDebuggerListener(dml);
43
44         initBreakpoints(dm, dml);
45         addBreakpoint(dm, tb, dml);
46         addBreakpoint(dm, tb, dml);
47         addBreakpoint(dm, tb, dml);
48         removeBreakpoint(dm, tb, dml);
49         removeBreakpoint(dm, tb, dml);
50         addBreakpoint(dm, tb, dml);
51         removeBreakpoint(dm, tb, dml);
52         addBreakpoint(dm, tb, dml);
53         removeBreakpoint(dm, tb, dml);
54         removeBreakpoint(dm, tb, dml);
55
56         dm.removeDebuggerListener(dml);
57     }
58     
59     public void testBreakpointValidity() throws Exception JavaDoc {
60         DebuggerManager dm = DebuggerManager.getDebuggerManager();
61         TestBreakpoint tb = new TestBreakpoint();
62         TestDebuggerManagerListener dml = new TestDebuggerManagerListener();
63         dm.addDebuggerListener(dml);
64
65         initBreakpoints(dm, dml);
66         addBreakpoint(dm, tb, dml);
67         assertEquals("Wrong initial validity", Breakpoint.VALIDITY.UNKNOWN, tb.getValidity());
68         final PropertyChangeEvent JavaDoc[] propEventPtr = new PropertyChangeEvent JavaDoc[] { null };
69         tb.addPropertyChangeListener(Breakpoint.PROP_VALIDITY, new PropertyChangeListener JavaDoc() {
70             public void propertyChange(PropertyChangeEvent JavaDoc evt) {
71                 propEventPtr[0] = evt;
72             }
73         });
74         tb.doSetValidity(Breakpoint.VALIDITY.VALID, null);
75         assertNotNull("Got no prop change event!", propEventPtr[0]);
76         assertEquals("Bad event, unexpected new validity", Breakpoint.VALIDITY.VALID, propEventPtr[0].getNewValue());
77         assertEquals("Unexpected validity", Breakpoint.VALIDITY.VALID, tb.getValidity());
78         propEventPtr[0] = null;
79         tb.doSetValidity(Breakpoint.VALIDITY.INVALID, "Some crazy breakpoint");
80         assertNotNull("Got no prop change event!", propEventPtr[0]);
81         assertEquals("Bad event, unexpected new validity", Breakpoint.VALIDITY.INVALID, propEventPtr[0].getNewValue());
82         assertEquals("Unexpected validity", Breakpoint.VALIDITY.INVALID, tb.getValidity());
83         assertEquals("Unexpected reason", "Some crazy breakpoint", tb.getValidityMessage());
84     }
85
86     private void initBreakpoints(DebuggerManager dm, TestDebuggerManagerListener dml) {
87         dm.getBreakpoints(); // trigger the "breakpointsInit" property change
88
TestDebuggerManagerListener.Event event;
89         List JavaDoc events = dml.getEvents();
90         assertEquals("Wrong PCS", 0, events.size());
91         /*
92         event = (TestDebuggerManagerListener.Event) events.get(0);
93         assertEquals("Wrong PCS", "propertyChange", event.getName());
94         PropertyChangeEvent pce = (PropertyChangeEvent) event.getParam();
95         assertEquals("Wrong PCE name", "breakpointsInit", pce.getPropertyName());
96          */

97     }
98
99     private void removeBreakpoint(DebuggerManager dm, TestBreakpoint tb, TestDebuggerManagerListener dml) {
100         List JavaDoc events;
101         TestDebuggerManagerListener.Event event;
102         Breakpoint [] bpts;
103
104         int bptSize = dm.getBreakpoints().length;
105         dm.removeBreakpoint(tb);
106         events = dml.getEvents();
107         assertEquals("Wrong PCS", 2, events.size());
108         assertTrue("Wrong PCS", events.remove(new TestDebuggerManagerListener.Event("breakpointRemoved", tb)));
109         event = (TestDebuggerManagerListener.Event) events.get(0);
110         assertEquals("Wrong PCS", "propertyChange", event.getName());
111         PropertyChangeEvent JavaDoc pce = (PropertyChangeEvent JavaDoc) event.getParam();
112         assertEquals("Wrong PCE name", "breakpoints", pce.getPropertyName());
113         bpts = dm.getBreakpoints();
114         assertEquals("Wrong number of installed breakpoionts", bptSize - 1, bpts.length);
115     }
116
117     private void addBreakpoint(DebuggerManager dm, TestBreakpoint tb, TestDebuggerManagerListener dml) {
118         List JavaDoc events;
119         TestDebuggerManagerListener.Event event;
120         Breakpoint [] bpts;
121
122         int bptSize = dm.getBreakpoints().length;
123         dm.addBreakpoint(tb);
124         events = dml.getEvents();
125         assertEquals("Wrong PCS", 2, events.size());
126         assertTrue("Wrong PCS", events.remove(new TestDebuggerManagerListener.Event("breakpointAdded", tb)));
127         event = (TestDebuggerManagerListener.Event) events.get(0);
128         assertEquals("Wrong PCS", "propertyChange", event.getName());
129         PropertyChangeEvent JavaDoc pce = (PropertyChangeEvent JavaDoc) event.getParam();
130         assertEquals("Wrong PCE name", "breakpoints", pce.getPropertyName());
131         bpts = dm.getBreakpoints();
132         assertEquals("Wrong number of installed breakpoints", bptSize + 1, bpts.length);
133     }
134
135     class TestBreakpoint extends Breakpoint
136     {
137         private boolean isEnabled;
138
139         public boolean isEnabled() {
140             return isEnabled;
141         }
142
143         public void disable() {
144             isEnabled = false;
145         }
146
147         public void enable() {
148             isEnabled = true;
149         }
150         
151         public void doSetValidity(Breakpoint.VALIDITY validity, String JavaDoc reason) {
152             setValidity(validity, reason);
153         }
154
155     }
156 }
157
Popular Tags