1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang.reflect; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Annotation; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.ElementType; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Inherited; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Retention; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.RetentionPolicy; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Target; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.AccessibleObject; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Modifier; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class AccessibleObjectTest extends junit.framework.TestCase { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class TestClass { 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object aField; 35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @InheritedRuntime 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void annotatedMethod(){} 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 39f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public class SubTestClass extends TestClass{ 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @AnnotationRuntime0 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @AnnotationRuntime1 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @AnnotationClass0 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @AnnotationSource0 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void annotatedMethod(){} 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.RUNTIME) 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.METHOD}) 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface AnnotationRuntime0 { 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.RUNTIME) 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( { ElementType.METHOD}) 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface AnnotationRuntime1 { 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.CLASS) 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( { ElementType.METHOD}) 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface AnnotationClass0 { 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.SOURCE) 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.METHOD}) 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface AnnotationSource0 { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 68f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Inherited 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.RUNTIME) 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.METHOD}) 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface InheritedRuntime { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //used for constructor test 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static class MyAccessibleObject extends AccessibleObject{ 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public MyAccessibleObject() { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 83229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.AccessibleObject#AccessibleObject() 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(new MyAccessibleObject()); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 90229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.AccessibleObject#isAccessible() 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isAccessible() { 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.AccessibleObject.isAccessible() 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = TestClass.class.getField("aField"); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.setAccessible(true); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false to isAccessible", ao.isAccessible()); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.setAccessible(false); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true to isAccessible", !ao.isAccessible()); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 107229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.AccessibleObject#setAccessible(java.lang.reflect.AccessibleObject[], 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * boolean) 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setAccessible$Ljava_lang_reflect_AccessibleObjectZ() { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = TestClass.class.getField("aField"); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject[] aoa = new AccessibleObject[] { ao }; 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject.setAccessible(aoa, true); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false to isAccessible", ao.isAccessible()); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject.setAccessible(aoa, false); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true to isAccessible", !ao.isAccessible()); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 122f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 124229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.lang.reflect.AccessibleObject#setAccessible(boolean) 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_setAccessible() throws Exception { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = TestClass.class.getField("aField"); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.setAccessible(true); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false to isAccessible", ao.isAccessible()); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.setAccessible(false); 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Returned true to isAccessible", ao.isAccessible()); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getAnnotation() throws Exception{ 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = SubTestClass.class.getMethod("annotatedMethod"); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //test error case 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean npeThrown = false; 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.getAnnotation(null); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NPE expected"); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project npeThrown = true; 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("NPE expected", npeThrown); 145f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //test inherited on method has no effect 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InheritedRuntime ir = ao.getAnnotation(InheritedRuntime.class); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Inherited Annotations should have no effect", ir); 149f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //test ordinary runtime annotation 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AnnotationRuntime0 rt0 = ao.getAnnotation(AnnotationRuntime0.class); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull("AnnotationRuntime0 instance expected", rt0); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getAnnotations() throws Exception { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = SubTestClass.class.getMethod("annotatedMethod"); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[] annotations = ao.getAnnotations(); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, annotations.length); 159f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<Class<?>> ignoreOrder = new HashSet<Class<?>>(); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[0].annotationType()); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[1].annotationType()); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 164f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Missing @AnnotationRuntime0", 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.contains(AnnotationRuntime0.class)); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing @AnnotationRuntime1", 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.contains(AnnotationRuntime1.class)); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getDeclaredAnnotations() throws Exception { 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = SubTestClass.class.getMethod("annotatedMethod"); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[] annotations = ao.getDeclaredAnnotations(); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, annotations.length); 174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<Class<?>> ignoreOrder = new HashSet<Class<?>>(); 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[0].annotationType()); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[1].annotationType()); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 179f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Missing @AnnotationRuntime0", 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.contains(AnnotationRuntime0.class)); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing @AnnotationRuntime1", 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.contains(AnnotationRuntime1.class)); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isAnnotationPresent() throws Exception { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project AccessibleObject ao = SubTestClass.class.getMethod("annotatedMethod"); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing @AnnotationRuntime0", 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.isAnnotationPresent(AnnotationRuntime0.class)); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("AnnotationSource0 should not be visible at runtime", 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.isAnnotationPresent(AnnotationSource0.class)); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean npeThrown = false; 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ao.isAnnotationPresent(null); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NPE expected"); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project npeThrown = true; 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("NPE expected", npeThrown); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 216