--- jsr166/src/test/tck/ThreadTest.java 2003/09/20 18:20:08 1.5 +++ jsr166/src/test/tck/ThreadTest.java 2003/10/05 23:00:40 1.6 @@ -23,7 +23,8 @@ public class ThreadTest extends JSR166Te } /** - * + * getUncaughtExceptionHandler returns ThreadGroup unless set, + * otherwise returning vlaue of last setUncaughtExceptionHandler. */ public void testGetAndSetUncaughtExceptionHandler() { // these must be done all at once to avoid state @@ -39,7 +40,8 @@ public class ThreadTest extends JSR166Te } /** - * + * getDefaultUncaughtExceptionHandler returns value of last + * setDefaultUncaughtExceptionHandler. */ public void testGetAndSetDefaultUncaughtExceptionHandler() { assertEquals(null, Thread.getDefaultUncaughtExceptionHandler()); @@ -49,8 +51,30 @@ public class ThreadTest extends JSR166Te 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()); + } + + /** + * getUncaughtExceptionHandler returns value of last + * setDefaultUncaughtExceptionHandler if non-null + */ + public void testGetAfterSetDefaultUncaughtExceptionHandler() { + 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(); assertEquals(tg, current.getUncaughtExceptionHandler()); Thread.setDefaultUncaughtExceptionHandler(eh); + assertEquals(eh, current.getUncaughtExceptionHandler()); Thread.setDefaultUncaughtExceptionHandler(null); assertEquals(tg, current.getUncaughtExceptionHandler()); }