ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ThreadTest.java
Revision: 1.6
Committed: Sun Oct 5 23:00:40 2003 UTC (20 years, 7 months ago) by dl
Branch: MAIN
Changes since 1.5: +26 -2 lines
Log Message:
Added tests and documentation

File Contents

# User Rev Content
1 dl 1.1 /*
2     * Written by members of JCP JSR-166 Expert Group and released to the
3     * public domain. Use, modify, and redistribute this code in any way
4     * without acknowledgement. Other contributors include Andrew Wright,
5     * Jeffrey Hayes, Pat Fischer, Mike Judd.
6     */
7    
8     import junit.framework.*;
9    
10 dl 1.3 public class ThreadTest extends JSR166TestCase {
11 dl 1.1 public static void main(String[] args) {
12     junit.textui.TestRunner.run(suite());
13     }
14    
15     public static Test suite() {
16     return new TestSuite(ThreadTest.class);
17     }
18    
19     static class MyHandler implements Thread.UncaughtExceptionHandler {
20     public void uncaughtException(Thread t, Throwable e) {
21     e.printStackTrace();
22     }
23     }
24    
25 dl 1.5 /**
26 dl 1.6 * getUncaughtExceptionHandler returns ThreadGroup unless set,
27     * otherwise returning vlaue of last setUncaughtExceptionHandler.
28 dl 1.5 */
29 dl 1.1 public void testGetAndSetUncaughtExceptionHandler() {
30     // these must be done all at once to avoid state
31     // dependencies across tests
32     Thread current = Thread.currentThread();
33     ThreadGroup tg = current.getThreadGroup();
34     MyHandler eh = new MyHandler();
35     assertEquals(tg, current.getUncaughtExceptionHandler());
36     current.setUncaughtExceptionHandler(eh);
37     assertEquals(eh, current.getUncaughtExceptionHandler());
38     current.setUncaughtExceptionHandler(null);
39     assertEquals(tg, current.getUncaughtExceptionHandler());
40     }
41 dl 1.4
42 dl 1.5 /**
43 dl 1.6 * getDefaultUncaughtExceptionHandler returns value of last
44     * setDefaultUncaughtExceptionHandler.
45 dl 1.5 */
46 dl 1.4 public void testGetAndSetDefaultUncaughtExceptionHandler() {
47     assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
48     // failure due to securityException is OK.
49     // Would be nice to explicitly test both ways, but cannot yet.
50     try {
51     Thread current = Thread.currentThread();
52     ThreadGroup tg = current.getThreadGroup();
53     MyHandler eh = new MyHandler();
54 dl 1.6 Thread.setDefaultUncaughtExceptionHandler(eh);
55     assertEquals(eh, Thread.getDefaultUncaughtExceptionHandler());
56     Thread.setDefaultUncaughtExceptionHandler(null);
57     }
58     catch(SecurityException ok) {
59     }
60     assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
61     }
62    
63     /**
64     * getUncaughtExceptionHandler returns value of last
65     * setDefaultUncaughtExceptionHandler if non-null
66     */
67     public void testGetAfterSetDefaultUncaughtExceptionHandler() {
68     assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
69     // failure due to securityException is OK.
70     // Would be nice to explicitly test both ways, but cannot yet.
71     try {
72     Thread current = Thread.currentThread();
73     ThreadGroup tg = current.getThreadGroup();
74     MyHandler eh = new MyHandler();
75 dl 1.4 assertEquals(tg, current.getUncaughtExceptionHandler());
76     Thread.setDefaultUncaughtExceptionHandler(eh);
77 dl 1.6 assertEquals(eh, current.getUncaughtExceptionHandler());
78 dl 1.4 Thread.setDefaultUncaughtExceptionHandler(null);
79     assertEquals(tg, current.getUncaughtExceptionHandler());
80     }
81     catch(SecurityException ok) {
82     }
83     assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
84     }
85 dl 1.1
86     // How to test actually using UEH within junit?
87    
88     }
89