|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.api.debugger.jpda; /** * Tests class breakpoints. * * @author Maros Sandor */ public class ClassBreakpointTest extends DebuggerJPDAApiTestBase { private JPDASupport support; private JPDADebugger debugger; private static final String CLASS_NAME = "basic.ClassBreakpointApp"; public ClassBreakpointTest(String s) { super(s); } protected void setUp() throws Exception { super.setUp(); } public void testMethodBreakpoints() throws Exception { try { ClassLoadUnloadBreakpoint cb1 = ClassLoadUnloadBreakpoint.create("basic.ClassBreakpointTest1", false, ClassLoadUnloadBreakpoint.TYPE_CLASS_LOADED); TestBreakpointListener tbl = new TestBreakpointListener("basic.ClassBreakpointTest1", 1); cb1.addJPDABreakpointListener(tbl); dm.addBreakpoint(cb1); ClassLoadUnloadBreakpoint cb2 = ClassLoadUnloadBreakpoint.create("*", false, ClassLoadUnloadBreakpoint.TYPE_CLASS_LOADED); TestBreakpointListener tb2 = new TestBreakpointListener(null, -1); cb2.addJPDABreakpointListener(tb2); dm.addBreakpoint(cb2); support = JPDASupport.listen(CLASS_NAME, false); debugger = support.getDebugger(); for (;;) { support.waitStates(DebuggerConstants.STATE_STOPPED, DebuggerConstants.STATE_DISCONNECTED, 10000); if (debugger.getState() == DebuggerConstants.STATE_DISCONNECTED) break; support.doContinue(); } tbl.assertFailure(); tb2.assertFailure(); dm.removeBreakpoint(cb1); dm.removeBreakpoint(cb2); } finally { support.doFinish(); } } private class TestBreakpointListener implements JPDABreakpointListener { private int hitCount; private AssertionError failure; private String className; private int expectedHitCount; public TestBreakpointListener(String className, int expectedHitCount) { this.className = className; this.expectedHitCount = expectedHitCount; } public void breakpointReached(JPDABreakpointEvent event) { try { checkEvent(event); } catch (AssertionError e) { failure = e; } catch (Throwable e) { failure = new AssertionError(e); } } private void checkEvent(JPDABreakpointEvent event) { ClassLoadUnloadBreakpoint cb = (ClassLoadUnloadBreakpoint) event.getSource(); assertEquals("Breakpoint event: Condition evaluation failed", DebuggerConstants.CONDITION_NONE, event.getConditionResult()); assertNotNull("Breakpoint event: Context thread is null", event.getThread()); assertNotNull("Breakpoint event: Reference type is null", event.getReferenceType()); if (className != null) { assertEquals("Breakpoint event: Hit at wrong class", className, event.getReferenceType().name()); } hitCount++; } public void assertFailure() { if (failure != null) throw failure; if (expectedHitCount != -1) { assertEquals("Breakpoint hit count mismatch for: " + className, expectedHitCount, hitCount); } } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.