blob: 12c2f8ab560ed6dcbb5f15cbf47ce89ec6bde5c9 [file] [log] [blame]
Calin Juravle8f0d92b2013-08-01 17:26:00 +01001/*
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
9package jsr166;
10
11import junit.framework.*;
12
13public class ThreadTest extends JSR166TestCase {
14
15 static class MyHandler implements Thread.UncaughtExceptionHandler {
16 public void uncaughtException(Thread t, Throwable e) {
17 e.printStackTrace();
18 }
19 }
20
21 /**
22 * getUncaughtExceptionHandler returns ThreadGroup unless set,
23 * otherwise returning value of last setUncaughtExceptionHandler.
24 */
25 public void testGetAndSetUncaughtExceptionHandler() {
26 // these must be done all at once to avoid state
27 // dependencies across tests
28 Thread current = Thread.currentThread();
29 ThreadGroup tg = current.getThreadGroup();
30 MyHandler eh = new MyHandler();
31 assertEquals(tg, current.getUncaughtExceptionHandler());
32 current.setUncaughtExceptionHandler(eh);
33 assertEquals(eh, current.getUncaughtExceptionHandler());
34 current.setUncaughtExceptionHandler(null);
35 assertEquals(tg, current.getUncaughtExceptionHandler());
36 }
37
38 /**
39 * getDefaultUncaughtExceptionHandler returns value of last
40 * setDefaultUncaughtExceptionHandler.
41 */
42 public void testGetAndSetDefaultUncaughtExceptionHandler() {
43 // BEGIN android-remove (when running as cts the RuntimeInit will
44 // set a default handler)
45 // assertEquals(null, Thread.getDefaultUncaughtExceptionHandler());
46 // END android-remove
47
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 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 // How to test actually using UEH within junit?
64
65}