1 19 20 package org.netbeans.api.debugger; 21 22 import org.netbeans.api.debugger.test.TestDebuggerManagerListener; 23 import java.beans.PropertyChangeListener ; 24 import java.beans.PropertyChangeEvent ; 25 import java.util.List ; 26 27 32 public class BreakpointsTest extends DebuggerApiTestBase { 33 34 public BreakpointsTest(String s) { 35 super(s); 36 } 37 38 public void testBreakpoints() throws Exception { 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 { 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 [] propEventPtr = new PropertyChangeEvent [] { null }; 69 tb.addPropertyChangeListener(Breakpoint.PROP_VALIDITY, new PropertyChangeListener () { 70 public void propertyChange(PropertyChangeEvent 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(); TestDebuggerManagerListener.Event event; 89 List events = dml.getEvents(); 90 assertEquals("Wrong PCS", 0, events.size()); 91 97 } 98 99 private void removeBreakpoint(DebuggerManager dm, TestBreakpoint tb, TestDebuggerManagerListener dml) { 100 List 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 pce = (PropertyChangeEvent ) 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 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 pce = (PropertyChangeEvent ) 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 reason) { 152 setValidity(validity, reason); 153 } 154 155 } 156 } 157 | Popular Tags |