/******************************************************************************* * Copyright (c) 2000, 2012 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 java.util.List; import java.util.ListIterator; import com.sun.jdi.Field; import com.sun.jdi.Location; import com.sun.jdi.request.AccessWatchpointRequest; import com.sun.jdi.request.BreakpointRequest; import com.sun.jdi.request.ClassPrepareRequest; import com.sun.jdi.request.ClassUnloadRequest; import com.sun.jdi.request.EventRequestManager; import com.sun.jdi.request.ExceptionRequest; import com.sun.jdi.request.ModificationWatchpointRequest; import com.sun.jdi.request.StepRequest; import com.sun.jdi.request.ThreadDeathRequest; import com.sun.jdi.request.ThreadStartRequest; /** * Tests for JDI com.sun.jdi.request.EventRequestManager. */ public class EventRequestManagerTest extends AbstractJDITest { private EventRequestManager fManager; /** * Creates a new test. */ public EventRequestManagerTest() { super(); } /** * Init the fields that are used by this test only. */ @Override public void localSetUp() { // Get the event request manager fManager = fVM.eventRequestManager(); } /** * Run all tests and output to standard output. * @param args */ public static void main(java.lang.String[] args) { new EventRequestManagerTest().runSuite(args); } /** * Gets the name of the test case. * @see junit.framework.TestCase#getName() */ @Override public String getName() { return "com.sun.jdi.request.EventRequestManager"; } /** * Test JDI createAccessWatchpointRequest(Field), accessWatchpointRequests() * and deleteEventRequest(EventRequest) */ public void testJDIAccessWatchpointRequest() { if (!fVM.canWatchFieldAccess()) return; // Create an access watchpoint request Field field = getField(); AccessWatchpointRequest request = fManager.createAccessWatchpointRequest(field); assertEquals("1", field, request.field()); // Get all access watchpoint requests List<?> requests = fManager.accessWatchpointRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("2."+i++, iterator.next() instanceof AccessWatchpointRequest); } // Delete an access watchpoint request fManager.deleteEventRequest(request); assertEquals("3", 0, fManager.accessWatchpointRequests().size()); } /** * Test JDI createBreakpointRequest(Location), breakpointRequests(), * deleteEventRequest(EventRequest) and deleteAllBreakpoints() */ public void testJDIBreakpointRequest() { // Create a breakpoint at a valid location Location location = getLocation(); BreakpointRequest bp = fManager.createBreakpointRequest(location); assertEquals("1", location, bp.location()); // Get all breakpoints List<?> breakpoints = fManager.breakpointRequests(); ListIterator<?> iterator = breakpoints.listIterator(); while (iterator.hasNext()) { Object breakpoint = iterator.next(); assertTrue("3", breakpoint instanceof BreakpointRequest); } // Delete a breakpoint fManager.deleteEventRequest(bp); assertEquals("4", 0, fManager.breakpointRequests().size()); // Delete all breakpoints fManager.createBreakpointRequest(location); fManager.deleteAllBreakpoints(); assertEquals("5", 0, fManager.breakpointRequests().size()); } /** * Test JDI createClassPrepareRequest(), classPrepareRequests() * and deleteEventRequest(EventRequest) */ public void testJDIClassPrepareRequest() { // Create a class prepare request ClassPrepareRequest request= fManager.createClassPrepareRequest(); // Get all class prepare requests List<?> requests = fManager.classPrepareRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof ClassPrepareRequest); } // Delete a class prepare request fManager.deleteEventRequest(request); assertEquals("2", 0, fManager.classPrepareRequests().size()); } /** * Test JDI createClassUnloadRequest(), classUnloadRequests() * and deleteEventRequest(EventRequest) */ public void testJDIClassUnloadRequest() { // Create a class unload request ClassUnloadRequest request= fManager.createClassUnloadRequest(); // Get all class unload requests List<?> requests = fManager.classUnloadRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof ClassUnloadRequest); } // Delete a class unload request fManager.deleteEventRequest(request); assertEquals("2", 0, fManager.classUnloadRequests().size()); } /** * Test JDI createExceptionRequest(), exceptionRequests() * and deleteEventRequest(EventRequest) */ public void testJDIExceptionRequest() { // Create a exception request ExceptionRequest request= fManager.createExceptionRequest(null, true, true); // Get all exception requests List<?> requests = fManager.exceptionRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof ExceptionRequest); } // Delete a exception request fManager.deleteEventRequest(request); assertEquals("2", i-1, fManager.exceptionRequests().size()); } /** * Test JDI createModificationWatchpointRequest(Field), * accessWatchpointRequests() and deleteEventRequest(EventRequest) */ public void testJDIModificationWatchpointRequest() { if (!fVM.canWatchFieldAccess()) return; // Create a modification watchpoint Field field = getField(); ModificationWatchpointRequest request = fManager.createModificationWatchpointRequest(field); assertEquals("1", field, request.field()); // Get all modification watchpoints List<?> requests = fManager.modificationWatchpointRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("2."+i++, iterator.next() instanceof ModificationWatchpointRequest); } // Delete a modification watchpoint fManager.deleteEventRequest(request); assertEquals("3", 0, fManager.modificationWatchpointRequests().size()); } /** * Test JDI createStepRequest(), stepRequests() * and deleteEventRequest(EventRequest) */ public void testJDIStepRequest() { // Create a step request StepRequest request= fManager.createStepRequest(getThread(), StepRequest.STEP_LINE, StepRequest.STEP_OVER); // Get all step requests List<?> requests = fManager.stepRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof StepRequest); } // Delete a step request fManager.deleteEventRequest(request); assertEquals("2", 0, fManager.stepRequests().size()); } /** * Test JDI createThreadDeathRequest(), threadDeathRequests() * and deleteEventRequest(EventRequest) */ public void testJDIThreadDeathRequest() { // Create a ThreadDeath request ThreadDeathRequest request= fManager.createThreadDeathRequest(); // Get all ThreadDeath requests List<?> requests = fManager.threadDeathRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof ThreadDeathRequest); } // Delete a ThreadDeath request fManager.deleteEventRequest(request); assertEquals("2", 0, fManager.threadDeathRequests().size()); } /** * Test JDI createThreadStartRequest(), classUnloadRequests() * and deleteEventRequest(EventRequest) */ public void testJDIThreadStartRequest() { // Create a ThreadStart request ThreadStartRequest request= fManager.createThreadStartRequest(); // Get all ThreadStart requests List<?> requests = fManager.classUnloadRequests(); ListIterator<?> iterator = requests.listIterator(); int i=0; while (iterator.hasNext()) { assertTrue("1."+i++, iterator.next() instanceof ThreadStartRequest); } // Delete a ThreadStart request fManager.deleteEventRequest(request); assertEquals("2", 0, fManager.classUnloadRequests().size()); } }