Home | History | Annotate | Download | only in jsr166
      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 package jsr166;
     10 
     11 import junit.framework.*;
     12 
     13 public 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 }
     66