summaryrefslogtreecommitdiffstats
path: root/jsr166-tests/src/test/java/jsr166/ThreadTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'jsr166-tests/src/test/java/jsr166/ThreadTest.java')
-rw-r--r--jsr166-tests/src/test/java/jsr166/ThreadTest.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/jsr166-tests/src/test/java/jsr166/ThreadTest.java b/jsr166-tests/src/test/java/jsr166/ThreadTest.java
new file mode 100644
index 0000000..12c2f8a
--- /dev/null
+++ b/jsr166-tests/src/test/java/jsr166/ThreadTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+
+package jsr166;
+
+import junit.framework.*;
+
+public class ThreadTest extends JSR166TestCase {
+
+ static class MyHandler implements Thread.UncaughtExceptionHandler {
+ public void uncaughtException(Thread t, Throwable e) {
+ 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());
+ current.setUncaughtExceptionHandler(eh);
+ assertEquals(eh, current.getUncaughtExceptionHandler());
+ current.setUncaughtExceptionHandler(null);
+ assertEquals(tg, current.getUncaughtExceptionHandler());
+ }
+
+ /**
+ * getDefaultUncaughtExceptionHandler returns value of last
+ * setDefaultUncaughtExceptionHandler.
+ */
+ public void testGetAndSetDefaultUncaughtExceptionHandler() {
+ // BEGIN android-remove (when running as cts the RuntimeInit will
+ // set a default handler)
+ // assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
+ // END android-remove
+
+ // 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?
+
+}