/******************************************************************************* * 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.ThreadGroupReference; import com.sun.jdi.ThreadReference; /** * Tests for JDI com.sun.jdi.ThreadGroupReference * and JDWP ThreadGroup command set. */ public class ThreadGroupReferenceTest extends AbstractJDITest { private ThreadGroupReference fThreadGroup; /** * Creates a new test. */ public ThreadGroupReferenceTest() { super(); } /** * Init the fields that are used by this test only. */ @Override public void localSetUp() { // Get value of "fThread" ThreadReference thread = getThread(); // Get its thread group fThreadGroup = thread.threadGroup(); } /** * Make sure the test leaves the VM in the same state it found it. */ @Override public void localTearDown() { // The test has resumed the thread group, and so the test thread, so suspend it waitUntilReady(); } /** * Run all tests and output to standard output. * @param args */ public static void main(java.lang.String[] args) { new ThreadGroupReferenceTest().runSuite(args); } /** * Gets the name of the test case. * @see junit.framework.TestCase#getName() */ @Override public String getName() { return "com.sun.jdi.ThreadGroupReference"; } /** * Test JDI name() and JDWP 'ThreadGroup - Get name'. */ public void testJDIName() { assertEquals("1", "Test ThreadGroup", fThreadGroup.name()); } /** * Test JDI parent() and JDWP 'ThreadGroup - Get parent'. */ public void testJDIParent() { ThreadGroupReference systemThreadGroup = fThreadGroup.parent(); assertNotNull("1", systemThreadGroup); assertEquals("2", "main", systemThreadGroup.name()); // assertTrue("3", systemThreadGroup.parent() == null); } /** * Test JDI suspend() and resume(). */ public void testJDISuspendResume() { fThreadGroup.suspend(); fThreadGroup.resume(); } /** * Test JDI threadGroups(). */ public void testJDIThreadGroups() { List<?> threadGroups = fThreadGroup.threadGroups(); assertEquals("1", 0, threadGroups.size()); } /** * Test JDI threads() and JDWP 'ThreadGroup - Get children'. */ public void testJDIThreads() { List<?> threads = fThreadGroup.threads(); ListIterator<?> iterator = threads.listIterator(); boolean isIncluded = false; while (iterator.hasNext()) { ThreadReference thread = (ThreadReference) iterator.next(); if (thread.name().equals("Test Thread")) { isIncluded = true; break; } } assertTrue("1", isIncluded); } }