/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.jdi.tests; import com.sun.jdi.ClassType; import com.sun.jdi.Method; import com.sun.jdi.ReferenceType; import com.sun.jdi.ThreadReference; import com.sun.jdi.event.Event; import com.sun.jdi.event.MethodEntryEvent; import com.sun.jdi.request.MethodEntryRequest; /** * Tests a method entry request */ public class MethodEntryRequestTest extends AbstractJDITest { /** * @see org.eclipse.debug.jdi.tests.AbstractJDITest#localSetUp() */ @Override public void localSetUp() { } /** * @see org.eclipse.debug.jdi.tests.AbstractJDITest#localTearDown() */ @Override public void localTearDown() { fVM.resume(); waitUntilReady(); } /** * Run all tests and output to standard output. * @param args */ public static void main(java.lang.String[] args) { new MethodEntryRequestTest().runSuite(args); } /** * Gets the name of the test case. * @see junit.framework.TestCase#getName() */ @Override public String getName() { return "com.sun.jdi.MethodEntryRequest"; } /** * Creates and returns a new <code>MethodEntryRequest</code> * @return a new <code>MethodEntryRequest</code> */ protected MethodEntryRequest getMethodEntryRequest() { return fVM.eventRequestManager().createMethodEntryRequest(); } /** * Tests a request without any filtering */ public void testJDIWithoutFilter() { MethodEntryRequest request = getMethodEntryRequest(); Event e = triggerAndWait(request, "BreakpointEvent", true); assertEquals(request, e.request()); MethodEntryEvent event = (MethodEntryEvent) e; assertEquals(getThread(), event.thread()); fVM.eventRequestManager().deleteEventRequest(request); } /** * Test a request with class exclusion filtering */ public void testJDIWithClassExclusionFilter() { MethodEntryRequest request = getMethodEntryRequest(); request.addClassExclusionFilter("org.eclipse.debug.jdi.tests.program.*"); Event e = triggerAndWait(request, "BreakpointEvent", true); assertEquals(request, e.request()); MethodEntryEvent event = (MethodEntryEvent) e; Method m = event.method(); ReferenceType r = m.location().declaringType(); assertTrue("1", !r.name().startsWith("org.eclipse.debug.jdi.tests.program.")); fVM.eventRequestManager().deleteEventRequest(request); } /** * Tests a method entry request with a specified class filter */ public void testJDIWithClassFilter1() { MethodEntryRequest request = getMethodEntryRequest(); ClassType clazz = getClass("java.io.PrintStream"); request.addClassFilter(clazz); Event e = triggerAndWait(request, "BreakpointEvent", true); assertEquals(request, e.request()); MethodEntryEvent event = (MethodEntryEvent) e; Method m = event.method(); ReferenceType r = m.location().declaringType(); assertEquals(clazz, r); fVM.eventRequestManager().deleteEventRequest(request); } /** * Retests a method entry request with a specified class filter */ public void testJDIWithClassFilter2() { MethodEntryRequest request = getMethodEntryRequest(); request.addClassFilter("java.io.PrintStream"); Event e = triggerAndWait(request, "BreakpointEvent", true); assertEquals(request, e.request()); MethodEntryEvent event = (MethodEntryEvent) e; Method m = event.method(); ReferenceType r = m.location().declaringType(); assertEquals("java.io.PrintStream", r.name()); fVM.eventRequestManager().deleteEventRequest(request); } /** * Tests a method entry request with a thread filter */ public void testJDIWithThreadFilter() { MethodEntryRequest request = getMethodEntryRequest(); ThreadReference thr = getMainThread(); request.addThreadFilter(thr); Event e = triggerAndWait(request, "BreakpointEvent", true); assertEquals(request, e.request()); MethodEntryEvent event = (MethodEntryEvent) e; assertEquals(thr, event.thread()); fVM.eventRequestManager().deleteEventRequest(request); } }