/******************************************************************************* * Copyright (c) 2000, 2015 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.LinkedList; import java.util.List; import java.util.ListIterator; import com.sun.jdi.Mirror; import com.sun.jdi.request.AccessWatchpointRequest; import com.sun.jdi.request.BreakpointRequest; import com.sun.jdi.request.ModificationWatchpointRequest; /** * Tests for JDI com.sun.jdi.Mirror. */ public class MirrorTest extends AbstractJDITest { List<Mirror> fMirrors = new LinkedList<>(); /** * Creates a new test. */ public MirrorTest() { super(); } /** * Init the fields that are used by this test only. */ @Override public void localSetUp() { // Get all kinds of concrete mirror that can be found in the VM // in alphabetical order. //TO DO: Add events too fMirrors = new LinkedList<>(); if (fVM.canWatchFieldAccess()) fMirrors.add(getAccessWatchpointRequest()); // AccessWatchpointRequest fMirrors.add(getObjectArrayReference()); // ArrayReference fMirrors.add(getArrayType()); // ArrayType fMirrors.add(fVM.mirrorOf(true)); // BooleanValue fMirrors.add(getBreakpointRequest()); // BreakpointRequest fMirrors.add(fVM.mirrorOf((byte) 1)); // ByteValue fMirrors.add(fVM.mirrorOf('1')); // CharValue fMirrors.add(getClassLoaderReference()); // ClassLoaderReference fMirrors.add(getMainClass()); // ClassType fMirrors.add(fVM.mirrorOf(12345.6789)); // DoubleValue fMirrors.add(fVM.eventRequestManager()); // EventRequestManager fMirrors.add(fVM.eventQueue()); // EventQueue fMirrors.add(getField()); // Field fMirrors.add(fVM.mirrorOf(123.45f)); // FieldValue fMirrors.add(fVM.mirrorOf(12345)); // IntegerValue fMirrors.add(getInterfaceType()); // InterfaceType fMirrors.add(getLocalVariable()); // LocalVariable fMirrors.add(getLocation()); // Location fMirrors.add(fVM.mirrorOf(123456789l)); // LongValue fMirrors.add(getMethod()); // Method if (fVM.canWatchFieldModification()) fMirrors.add(getModificationWatchpointRequest()); // ModificationWatchpointRequest fMirrors.add(getObjectReference()); // ObjectReference fMirrors.add(fVM.mirrorOf((short) 12345)); // ShortValue fMirrors.add(getFrame(RUN_FRAME_OFFSET)); // StackFrame fMirrors.add(getStringReference()); // StringReference fMirrors.add(getThread().threadGroup()); // ThreadGroupReference fMirrors.add(getThread()); // ThreadReference fMirrors.add(fVM); // VirtualMachine } /** * Make sure the test leaves the VM in the same state it found it. */ @Override public void localTearDown() { ListIterator<Mirror> iterator = fMirrors.listIterator(); while (iterator.hasNext()) { Object mirror = iterator.next(); // Delete the access watchpoint request we created in this test if (mirror instanceof AccessWatchpointRequest) fVM.eventRequestManager().deleteEventRequest( (AccessWatchpointRequest) mirror); // Delete the breakpoint request we created in this test if (mirror instanceof BreakpointRequest) fVM.eventRequestManager().deleteEventRequest( (BreakpointRequest) mirror); // Delete the modification watchpoint request we created in this test if (mirror instanceof ModificationWatchpointRequest) fVM.eventRequestManager().deleteEventRequest( (ModificationWatchpointRequest) mirror); } } /** * Run all tests and output to standard output. * @param args */ public static void main(java.lang.String[] args) { new MirrorTest().runSuite(args); } /** * Gets the name of the test case. * @see junit.framework.TestCase#getName() */ @Override public String getName() { return "com.sun.jdi.Mirror"; } /** * Test JDI toString(). */ public void testJDIToString() { for (int i = 0; i < fMirrors.size(); i++) { Mirror mirror = fMirrors.get(i); assertNotNull(Integer.toString(i), mirror.toString()); } } /** * Test JDI virtualMachine(). */ public void testJDIVirtualMachine() { for (int i = 0; i < fMirrors.size(); i++) { Mirror mirror = fMirrors.get(i); assertEquals(Integer.toString(i), fVM, mirror.virtualMachine()); } } }