--- jsr166/src/test/tck/ThreadTest.java 2003/09/01 00:17:10 1.2 +++ jsr166/src/test/tck/ThreadTest.java 2014/12/31 19:05:43 1.15 @@ -1,25 +1,21 @@ /* - * Written by members of JCP JSR-166 Expert Group and released to the - * public domain. Use, modify, and redistribute this code in any way - * without acknowledgement. Other contributors include Andrew Wright, - * Jeffrey Hayes, Pat Fischer, Mike Judd. + * Written by Doug Lea with assistance from members of JCP JSR-166 + * Expert Group and released to the public domain, as explained at + * http://creativecommons.org/publicdomain/zero/1.0/ + * Other contributors include Andrew Wright, Jeffrey Hayes, + * Pat Fisher, Mike Judd. */ -import junit.framework.*; -import java.util.concurrent.Semaphore; +import junit.framework.Test; +import junit.framework.TestSuite; -/** - * Test java.lang.Thread - * - */ - -public class ThreadTest extends TestCase { +public class ThreadTest extends JSR166TestCase { public static void main(String[] args) { - junit.textui.TestRunner.run(suite()); + junit.textui.TestRunner.run(suite()); } - + public static Test suite() { - return new TestSuite(ThreadTest.class); + return new TestSuite(ThreadTest.class); } static class MyHandler implements Thread.UncaughtExceptionHandler { @@ -27,21 +23,45 @@ public class ThreadTest extends TestCase e.printStackTrace(); } } - + + /** + * getUncaughtExceptionHandler returns ThreadGroup unless set, + * otherwise returning value of last setUncaughtExceptionHandler. + */ public void testGetAndSetUncaughtExceptionHandler() { // these must be done all at once to avoid state // dependencies across tests Thread current = Thread.currentThread(); ThreadGroup tg = current.getThreadGroup(); MyHandler eh = new MyHandler(); - assertEquals(tg, current.getUncaughtExceptionHandler()); + assertEquals(tg, current.getUncaughtExceptionHandler()); current.setUncaughtExceptionHandler(eh); - assertEquals(eh, current.getUncaughtExceptionHandler()); + assertEquals(eh, current.getUncaughtExceptionHandler()); current.setUncaughtExceptionHandler(null); - assertEquals(tg, current.getUncaughtExceptionHandler()); + assertEquals(tg, current.getUncaughtExceptionHandler()); + } + + /** + * getDefaultUncaughtExceptionHandler returns value of last + * setDefaultUncaughtExceptionHandler. + */ + public void testGetAndSetDefaultUncaughtExceptionHandler() { + assertEquals(null, Thread.getDefaultUncaughtExceptionHandler()); + // failure due to securityException is OK. + // Would be nice to explicitly test both ways, but cannot yet. + try { + Thread current = Thread.currentThread(); + ThreadGroup tg = current.getThreadGroup(); + MyHandler eh = new MyHandler(); + Thread.setDefaultUncaughtExceptionHandler(eh); + assertEquals(eh, Thread.getDefaultUncaughtExceptionHandler()); + Thread.setDefaultUncaughtExceptionHandler(null); + } + catch (SecurityException ok) { + } + assertEquals(null, Thread.getDefaultUncaughtExceptionHandler()); } - + // How to test actually using UEH within junit? } -