Home | History | Annotate | Download | only in lang
      1 /*
      2  *  Licensed to the Apache Software Foundation (ASF) under one or more
      3  *  contributor license agreements.  See the NOTICE file distributed with
      4  *  this work for additional information regarding copyright ownership.
      5  *  The ASF licenses this file to You under the Apache License, Version 2.0
      6  *  (the "License"); you may not use this file except in compliance with
      7  *  the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  */
     17 
     18 package libcore.java.lang;
     19 
     20 import junit.framework.TestCase;
     21 
     22 public class OldInheritableThreadLocalTest extends TestCase {
     23 
     24     public void test_Ljava_lang_InheritableThreadLocal()
     25             throws InterruptedException {
     26         final Object value = new Object();
     27         final Object inheritedValue = new Object();
     28         final ThreadLocal<Object> threadLocal
     29                 = new InheritableThreadLocal<Object>() {
     30             @Override
     31             protected Object childValue(Object parentValue) {
     32                 assertSame(value, parentValue);
     33                 return inheritedValue;
     34             }
     35         };
     36         threadLocal.set(value);
     37         final Object[] holder = new Object[1];
     38         Thread thread = new Thread() {
     39             public void run() {
     40                 holder[0] = threadLocal.get();
     41             }
     42         };
     43         thread.start();
     44         thread.join();
     45         assertSame(value, threadLocal.get());
     46         assertSame(inheritedValue, holder[0]);
     47 
     48         // Cleanup properly, so other tests are not affected.
     49         threadLocal.remove();
     50     }
     51 
     52     public void test_childValue() {
     53         InheritableThreadLocal<String> itl = new InheritableThreadLocal<String>() {
     54             @Override
     55             protected String initialValue() {
     56                 return "initial";
     57             }
     58             @Override
     59             protected String childValue(String parentValue) {
     60                 return "childValue";
     61             }
     62         };
     63         assertEquals("initial", itl.get());
     64     }
     65 
     66 }
     67