001: /*******************************************************************************
002: * Copyright (c) 2000, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.debug.jdi.tests;
011:
012: import java.util.List;
013: import java.util.ListIterator;
014:
015: import com.sun.jdi.ThreadGroupReference;
016: import com.sun.jdi.ThreadReference;
017:
018: /**
019: * Tests for JDI com.sun.jdi.ThreadGroupReference
020: * and JDWP ThreadGroup command set.
021: */
022: public class ThreadGroupReferenceTest extends AbstractJDITest {
023:
024: private ThreadGroupReference fThreadGroup;
025:
026: /**
027: * Creates a new test.
028: */
029: public ThreadGroupReferenceTest() {
030: super ();
031: }
032:
033: /**
034: * Init the fields that are used by this test only.
035: */
036: public void localSetUp() {
037: // Get value of "fThread"
038: ThreadReference thread = getThread();
039:
040: // Get its thread group
041: fThreadGroup = thread.threadGroup();
042: }
043:
044: /**
045: * Make sure the test leaves the VM in the same state it found it.
046: */
047: public void localTearDown() {
048: // The test has resumed the thread group, and so the test thread, so suspend it
049: waitUntilReady();
050: }
051:
052: /**
053: * Run all tests and output to standard output.
054: * @param args
055: */
056: public static void main(java.lang.String[] args) {
057: new ThreadGroupReferenceTest().runSuite(args);
058: }
059:
060: /**
061: * Gets the name of the test case.
062: * @see junit.framework.TestCase#getName()
063: */
064: public String getName() {
065: return "com.sun.jdi.ThreadGroupReference";
066: }
067:
068: /**
069: * Test JDI name() and JDWP 'ThreadGroup - Get name'.
070: */
071: public void testJDIName() {
072: assertEquals("1", "Test ThreadGroup", fThreadGroup.name());
073: }
074:
075: /**
076: * Test JDI parent() and JDWP 'ThreadGroup - Get parent'.
077: */
078: public void testJDIParent() {
079: ThreadGroupReference systemThreadGroup = fThreadGroup.parent();
080: assertNotNull("1", systemThreadGroup);
081: assertEquals("2", "main", systemThreadGroup.name());
082: // assertTrue("3", systemThreadGroup.parent() == null);
083: }
084:
085: /**
086: * Test JDI suspend() and resume().
087: */
088: public void testJDISuspendResume() {
089: fThreadGroup.suspend();
090: fThreadGroup.resume();
091: }
092:
093: /**
094: * Test JDI threadGroups().
095: */
096: public void testJDIThreadGroups() {
097: List threadGroups = fThreadGroup.threadGroups();
098: assertEquals("1", 0, threadGroups.size());
099: }
100:
101: /**
102: * Test JDI threads() and JDWP 'ThreadGroup - Get children'.
103: */
104: public void testJDIThreads() {
105: List threads = fThreadGroup.threads();
106: ListIterator iterator = threads.listIterator();
107: boolean isIncluded = false;
108: while (iterator.hasNext()) {
109: ThreadReference thread = (ThreadReference) iterator.next();
110: if (thread.name().equals("Test Thread")) {
111: isIncluded = true;
112: break;
113: }
114: }
115: assertTrue("1", isIncluded);
116: }
117: }
|