ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ThreadTest.java
Revision: 1.16
Committed: Sun Feb 22 19:15:14 2015 UTC (9 years, 2 months ago) by jsr166
Branch: MAIN
Changes since 1.15: +19 -12 lines
Log Message:
improve uncaught exception handler tests

File Contents

# Content
1 /*
2 * Written by Doug Lea with assistance from members of JCP JSR-166
3 * Expert Group and released to the public domain, as explained at
4 * http://creativecommons.org/publicdomain/zero/1.0/
5 * Other contributors include Andrew Wright, Jeffrey Hayes,
6 * Pat Fisher, Mike Judd.
7 */
8
9 import junit.framework.Test;
10 import junit.framework.TestSuite;
11
12 public class ThreadTest extends JSR166TestCase {
13 public static void main(String[] args) {
14 junit.textui.TestRunner.run(suite());
15 }
16
17 public static Test suite() {
18 return new TestSuite(ThreadTest.class);
19 }
20
21 static class MyHandler implements Thread.UncaughtExceptionHandler {
22 public void uncaughtException(Thread t, Throwable e) {
23 e.printStackTrace();
24 }
25 }
26
27 /**
28 * getUncaughtExceptionHandler returns ThreadGroup unless set,
29 * otherwise returning value of last setUncaughtExceptionHandler.
30 */
31 public void testGetAndSetUncaughtExceptionHandler() {
32 // these must be done all at once to avoid state
33 // dependencies across tests
34 Thread current = Thread.currentThread();
35 ThreadGroup tg = current.getThreadGroup();
36 MyHandler eh = new MyHandler();
37 assertSame(tg, current.getUncaughtExceptionHandler());
38 current.setUncaughtExceptionHandler(eh);
39 try {
40 assertSame(eh, current.getUncaughtExceptionHandler());
41 } finally {
42 current.setUncaughtExceptionHandler(null);
43 }
44 assertSame(tg, current.getUncaughtExceptionHandler());
45 }
46
47 /**
48 * getDefaultUncaughtExceptionHandler returns value of last
49 * setDefaultUncaughtExceptionHandler.
50 */
51 public void testGetAndSetDefaultUncaughtExceptionHandler() {
52 assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
53 // failure due to securityException is OK.
54 // Would be nice to explicitly test both ways, but cannot yet.
55 Thread.UncaughtExceptionHandler defaultHandler
56 = Thread.getDefaultUncaughtExceptionHandler();
57 Thread current = Thread.currentThread();
58 MyHandler eh = new MyHandler();
59 try {
60 Thread.setDefaultUncaughtExceptionHandler(eh);
61 try {
62 assertSame(eh, Thread.getDefaultUncaughtExceptionHandler());
63 } finally {
64 Thread.setDefaultUncaughtExceptionHandler(defaultHandler);
65 }
66 } catch (SecurityException ok) {
67 assertNotNull(System.getSecurityManager());
68 }
69 assertSame(defaultHandler, Thread.getDefaultUncaughtExceptionHandler());
70 }
71
72 // How to test actually using UEH within junit?
73
74 }