18bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson/* 28bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 38bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * this work for additional information regarding copyright ownership. 48bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 58bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * (the "License"); you may not use this file except in compliance with 68bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * the License. You may obtain a copy of the License at 78bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 88bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 98bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Unless required by applicable law or agreed to in writing, software 118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * See the License for the specific language governing permissions and 148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * limitations under the License. 158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpackage libcore.java.lang; 188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.io.File; 208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.io.IOException; 218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.io.InputStream; 228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.io.Serializable; 238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.annotation.Annotation; 248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.annotation.Retention; 258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.annotation.RetentionPolicy; 268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.Constructor; 278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.Field; 288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.Method; 298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.ParameterizedType; 308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.Type; 318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.lang.reflect.TypeVariable; 328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.net.URL; 338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.net.URLClassLoader; 348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.AbstractList; 358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.Collection; 368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.List; 378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport java.util.Vector; 388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport tests.support.Support_ClassLoader; 398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonimport tests.support.resource.Support_Resources; 408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson@SuppressWarnings("deprecation") 428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilsonpublic class OldClassTest extends junit.framework.TestCase { 438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String packageName = getClass().getPackage().getName(); 448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String classNameInitError1 = packageName + ".TestClass1"; 458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String classNameInitError2 = packageName + ".TestClass1B"; 468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String classNameLinkageError = packageName + ".TestClass"; 478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String sourceJARfile = "illegalClasses.jar"; 488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String illegalClassName = "illegalClass"; 498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @Retention(RetentionPolicy.RUNTIME) 518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public @interface TestAnnotation { 528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String value(); 538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class TestClass1C { 568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static TestClass2 tc = new TestClass2(0); 578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass1C() { 598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class TestClass2 { 648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public TestClass2(int i) throws IllegalArgumentException { 668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson throw new IllegalArgumentException(); 678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class TestClass3 { 718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private TestClass3() {} 728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface TestInterface { 758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static int TEST_INTERFACE_FIELD = 0; 768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int getCount(); 788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson void setCount(int value); 798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static class StaticMember$Class { 828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Member2$A { 838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Member$Class { 878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Member3$B { 888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @Deprecated 928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @TestAnnotation("libcore.java.lang.OldClassTest$ExtendTestClass") 938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class ExtendTestClass extends PublicTestClass { 948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private static final long serialVersionUID = 1L; 968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public enum enumExm {ONE, TWO, THREE}; 988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @Override 998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void setCount(int value) { 1008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public class ExtendTestClass1 extends ExtendTestClass { 1058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @TestAnnotation("libcore.java.lang.OldClassTest$PublicTestClass") 1098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class PublicTestClass implements TestInterface, Serializable, Cloneable { 1108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private static final long serialVersionUID = 1L; 1128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static String TEST_FIELD = "test field"; 1148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object clazz; 1168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public PublicTestClass() { 1188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class LocalClass { } 1198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz = new LocalClass(); 1218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public Object getLocalClass() { 1248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class LocalClass {} 1258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object returnedObject = new LocalClass(); 1268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return returnedObject; 1278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int count = 0; 1308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int getCount() { 1328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return count; 1338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void setCount(int value) { 1368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson count = value; 1378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private class PrivateClass1 { 1408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public String toString() { 1428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return "PrivateClass0"; 1438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public class PrivateClass2 { 1478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public String toString() { 1498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return "PrivateClass1"; 1508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class TestClass { 1558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @SuppressWarnings("unused") 1568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private int privField = 1; 1578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int pubField = 2; 1598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private Object cValue = null; 1618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public Object ack = new Object(); 1638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @SuppressWarnings("unused") 1658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private int privMethod() { 1668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return 1; 1678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int pubMethod() { 1708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return 2; 1718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public Object cValue() { 1748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return cValue; 1758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public TestClass() { 1788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @SuppressWarnings("unused") 1818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson private TestClass(Object o) { 1828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public static class SubTestClass extends TestClass { 1868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface Intf1 { 1898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 1; 1908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field2 = 1; 1918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson void test(); 1928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface Intf2 { 1958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 1; 1968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson void test(); 1978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 1988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 1998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface Intf3 extends Intf1 { 2008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 1; 2018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface Intf4 extends Intf1, Intf2 { 2048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 1; 2058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson void test2(int a, Object b); 2068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson interface Intf5 extends Intf1 { 2098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Cls1 implements Intf2 { 2128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 2; 2138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field2 = 2; 2148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test() { 2158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Cls2 extends Cls1 implements Intf1 { 2198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public int field1 = 2; 2208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson @Override 2218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test() { 2228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class Cls3 implements Intf3, Intf4 { 2268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test() { 2278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test2(int a, Object b) { 2298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson static class Cls4 { 2338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getAnnotations() { 2378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Annotation [] annotations = PublicTestClass.class.getAnnotations(); 2388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, annotations.length); 2398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(TestAnnotation.class, annotations[0].annotationType()); 2408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson annotations = ExtendTestClass.class.getAnnotations(); 2428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(2, annotations.length); 2438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < annotations.length; i++) { 2458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<? extends Annotation> type = annotations[i].annotationType(); 2468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue("Annotation's type " + i + ": " + type, 2478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson type.equals(Deprecated.class) || 2488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson type.equals(TestAnnotation.class)); 2498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_forNameLjava_lang_StringLbooleanLClassLoader() throws Exception { 2538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader pcl = getClass().getClassLoader(); 2558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<?> [] classes = {PublicTestClass.class, ExtendTestClass.class, 2578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass1.class, TestInterface.class, String.class}; 2588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < classes.length; i++) { 2608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<?> clazz = Class.forName(classes[i].getName(), true, pcl); 2618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(classes[i], clazz); 2628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz = Class.forName(classes[i].getName(), false, pcl); 2648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(classes[i], clazz); 2658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<?> [] systemClasses = {String.class, Integer.class, Object.class, 2688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object[].class}; 2698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < systemClasses.length; i++) { 2718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<?> clazz = Class.forName(systemClasses[i].getName(), true, 2728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader.getSystemClassLoader()); 2738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(systemClasses[i], clazz); 2748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz = Class.forName(systemClasses[i].getName(), false, 2768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader.getSystemClassLoader()); 2778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(systemClasses[i], clazz); 2788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName(null, true, pcl); 2828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 2838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 2848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName("NotExistClass", true, pcl); 2898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ClassNotFoundException is not thrown for non existent class."); 2908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassNotFoundException cnfe) { 2918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 2938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 2948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 2958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName("String", false, pcl); 2968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ClassNotFoundException is not thrown for non existent class."); 2978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassNotFoundException cnfe) { 2988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 2998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName("libcore.java.lang.NonexistentClass", false, pcl); 3038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ClassNotFoundException is not thrown for non existent class."); 3048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassNotFoundException cnfe) { 3058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 3068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // AndroidOnly: Class.forName method throws ClassNotFoundException on Android. 3108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_forNameLjava_lang_StringLbooleanLClassLoader_AndroidOnly() throws Exception { 3118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Android doesn't support loading class files from a jar. 3138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson URL url = getClass().getClassLoader().getResource( 3168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson packageName.replace(".", "/") + "/" + sourceJARfile); 3178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader loader = new URLClassLoader(new URL[] { url }, 3198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson getClass().getClassLoader()); 3208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName(classNameLinkageError, true, loader); 3228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("LinkageError or ClassNotFoundException expected."); 3238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (java.lang.LinkageError le) { 3248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected for the RI. 3258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (java.lang.ClassNotFoundException ce) { 3268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected for Android. 3278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(Exception e) { 3298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Unexpected exception was thrown: " + e.toString()); 3308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class.forName(classNameInitError2, 3348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson true, getClass().getClassLoader()); 3358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ExceptionInInitializerError or ClassNotFoundException " + 3368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "should be thrown."); 3378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (java.lang.ExceptionInInitializerError ie) { 3388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected for the RI. 3398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Remove this comment to let the test pass on Android. 3408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (java.lang.ClassNotFoundException ce) { 3418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected for Android. 3428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getAnnotation() { 3468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestAnnotation target = PublicTestClass.class.getAnnotation(TestAnnotation.class); 3478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(target.value(), PublicTestClass.class.getName()); 3488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(PublicTestClass.class.getAnnotation(Deprecated.class)); 3508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Deprecated target2 = ExtendTestClass.class.getAnnotation(Deprecated.class); 3528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull(target2); 3538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaredAnnotations() { 3568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Annotation [] annotations = PublicTestClass.class.getDeclaredAnnotations(); 3578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, annotations.length); 3588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson annotations = ExtendTestClass.class.getDeclaredAnnotations(); 3608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(2, annotations.length); 3618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson annotations = TestInterface.class.getDeclaredAnnotations(); 3638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, annotations.length); 3648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson annotations = String.class.getDeclaredAnnotations(); 3668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, annotations.length); 3678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getEnclosingClass() { 3708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class clazz = OldClassTest.class.getEnclosingClass(); 3718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(clazz); 3728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(getClass(), Cls1.class.getEnclosingClass()); 3748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(getClass(), Intf1.class.getEnclosingClass()); 3758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(getClass(), Cls4.class.getEnclosingClass()); 3768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getEnclosingMethod() { 3798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Method clazz = ExtendTestClass.class.getEnclosingMethod(); 3808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(clazz); 3818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass ptc = new PublicTestClass(); 3838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 3848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("getEnclosingMethod returns incorrect method.", 3858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.getMethod("getLocalClass", 3868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson (Class []) null), 3878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ptc.getLocalClass().getClass().getEnclosingMethod()); 3888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NoSuchMethodException nsme) { 3898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NoSuchMethodException was thrown."); 3908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 3928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getEnclosingConstructor() { 3948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass ptc = new PublicTestClass(); 3968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 3978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("getEnclosingConstructor method returns incorrect class.", 3988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.getConstructors()[0], 3998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ptc.clazz.getClass().getEnclosingConstructor()); 4008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("getEnclosingConstructor should return null for local " + 4028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "class declared in method.", 4038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ptc.getLocalClass().getClass().getEnclosingConstructor()); 4048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("getEnclosingConstructor should return null for local " + 4068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "class declared in method.", 4078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.getEnclosingConstructor()); 4088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getEnumConstants() { 4128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object [] clazz = ExtendTestClass.class.getEnumConstants(); 4138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(clazz); 4148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object [] constants = TestEnum.class.getEnumConstants(); 4158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(TestEnum.values().length, constants.length); 4168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < constants.length; i++) { 4178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(TestEnum.values()[i], constants[i]); 4188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, TestEmptyEnum.class.getEnumConstants().length); 4208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public enum TestEnum { 4228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ONE, TWO, THREE 4238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public enum TestEmptyEnum { 4258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getGenericInterfaces() { 4288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Type [] types = ExtendTestClass1.class.getGenericInterfaces(); 4298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, types.length); 4308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] interfaces = {TestInterface.class, Serializable.class, 4328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Cloneable.class}; 4338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson types = PublicTestClass.class.getGenericInterfaces(); 4348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(interfaces.length, types.length); 4358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < types.length; i++) { 4368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(interfaces[i], types[i]); 4378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson types = TestInterface.class.getGenericInterfaces(); 4408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, types.length); 4418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson types = List.class.getGenericInterfaces(); 4438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, types.length); 4448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Collection.class, ((ParameterizedType)types[0]).getRawType()); 4458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, int.class.getGenericInterfaces().length); 4478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, void.class.getGenericInterfaces().length); 4488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getGenericSuperclass () { 4518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(PublicTestClass.class, 4528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.getGenericSuperclass()); 4538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(ExtendTestClass.class, 4548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass1.class.getGenericSuperclass()); 4558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Object.class, PublicTestClass.class.getGenericSuperclass()); 4568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Object.class, String.class.getGenericSuperclass()); 4578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(null, TestInterface.class.getGenericSuperclass()); 4588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ParameterizedType type = (ParameterizedType) Vector.class.getGenericSuperclass(); 4608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(AbstractList.class, type.getRawType()); 4618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 4628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // AndroidOnly: Uses dalvik.system.PathClassLoader. 4648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Different behavior between cts host and run-core-test") 4658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getPackage() { 4668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Package thisPackage = getClass().getPackage(); 4688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("libcore.java.lang", 4698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson thisPackage.getName()); 4708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Package stringPackage = String.class.getPackage(); 4728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("java.lang", stringPackage.getName()); 4738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String hyts_package_name = "hyts_package_dex.jar"; 4758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson File resources = Support_Resources.createTempFolder(); 4768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Support_Resources.copyFile(resources, "Package", hyts_package_name); 4778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String resPath = resources.toString(); 4798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\') 4808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson resPath = resPath.substring(1); 4818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 4838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson URL resourceURL = new URL("file:/" + resPath + "/Package/" 4858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson + hyts_package_name); 4868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader cl = Support_ClassLoader.getInstance(resourceURL, 4888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson getClass().getClassLoader()); 4898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class clazz = cl.loadClass("C"); 4918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("getPackage for C.class should return null", 4928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz.getPackage()); 4938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz = cl.loadClass("a.b.C"); 4958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Package cPackage = clazz.getPackage(); 4968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("getPackage for a.b.C.class should not return null", 4978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson cPackage); 4988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 4998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson /* 5008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * URLClassLoader doesn't work on Android for jar files 5018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 5028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * URL url = getClass().getClassLoader().getResource( 5038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * packageName.replace(".", "/") + "/" + sourceJARfile); 5048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 5058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * ClassLoader loader = new URLClassLoader(new URL[] { url }, null); 5068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * 5078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * try { 5088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Class<?> clazz = loader.loadClass(illegalClassName); 5098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * Package pack = clazz.getPackage(); 5108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * assertNull(pack); 5118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * } catch(ClassNotFoundException cne) { 5128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * fail("ClassNotFoundException was thrown for " + illegalClassName); 5138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson * } 5148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson */ 5158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(Exception e) { 5168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Unexpected exception was thrown: " + e.toString()); 5178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getSigners() { 5218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(void.class.getSigners()); 5228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(PublicTestClass.class.getSigners()); 5238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getSimpleName() { 5268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("PublicTestClass", PublicTestClass.class.getSimpleName()); 5278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("void", void.class.getSimpleName()); 5288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("int[]", int[].class.getSimpleName()); 5298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getTypeParameters() { 5328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, PublicTestClass.class.getTypeParameters().length); 5338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TypeVariable [] tv = TempTestClass1.class.getTypeParameters(); 5348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, tv.length); 5358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Object.class, tv[0].getBounds()[0]); 5368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TempTestClass2<String> tc = new TempTestClass2<String>(); 5388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson tv = tc.getClass().getTypeParameters(); 5398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, tv.length); 5408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(String.class, tv[0].getBounds()[0]); 5418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class TempTestClass1<T> { 5448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class TempTestClass2<S extends String> extends TempTestClass1<S> { 5478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isAnnotation() { 5508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(Deprecated.class.isAnnotation()); 5518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(TestAnnotation.class.isAnnotation()); 5528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(PublicTestClass.class.isAnnotation()); 5538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(String.class.isAnnotation()); 5548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isAnnotationPresent() { 5578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(PublicTestClass.class.isAnnotationPresent(TestAnnotation.class)); 5588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(ExtendTestClass1.class.isAnnotationPresent(TestAnnotation.class)); 5598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(String.class.isAnnotationPresent(Deprecated.class)); 5608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(ExtendTestClass.class.isAnnotationPresent(TestAnnotation.class)); 5618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(ExtendTestClass.class.isAnnotationPresent(Deprecated.class)); 5628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isAnonymousClass() { 5658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(PublicTestClass.class.isAnonymousClass()); 5668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue((new Thread() {}).getClass().isAnonymousClass()); 5678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isEnum() { 5708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(PublicTestClass.class.isEnum()); 5718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(ExtendTestClass.class.isEnum()); 5728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(TestEnum.ONE.getClass().isEnum()); 5738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(TestEnum.class.isEnum()); 5748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isLocalClass() { 5778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(ExtendTestClass.class.isLocalClass()); 5788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(TestInterface.class.isLocalClass()); 5798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(TestEnum.class.isLocalClass()); 5808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson class InternalClass {} 5818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(InternalClass.class.isLocalClass()); 5828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isMemberClass() { 5858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(OldClassTest.class.isMemberClass()); 5868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse(String.class.isMemberClass()); 5878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(TestEnum.class.isMemberClass()); 5888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(StaticMember$Class.class.isMemberClass()); 5898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 5918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isSynthetic() { 5928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("Returned true for non synthetic class.", 5938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.isSynthetic()); 5948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("Returned true for non synthetic class.", 5958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestInterface.class.isSynthetic()); 5968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("Returned true for non synthetic class.", 5978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String.class.isSynthetic()); 5988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 5998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getCanonicalName() { 6018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] classArray = { int.class, int[].class, String.class, 6028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class, TestInterface.class, 6038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class }; 6048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String [] classNames = {"int", "int[]", "java.lang.String", 6058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "libcore.java.lang.OldClassTest.PublicTestClass", 6068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "libcore.java.lang.OldClassTest.TestInterface", 6078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "libcore.java.lang.OldClassTest.ExtendTestClass"}; 6088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < classArray.length; i++) { 6108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(classNames[i], classArray[i].getCanonicalName()); 6118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getClassLoader() { 6158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(ExtendTestClass.class.getClassLoader(), 6168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.getClassLoader()); 6178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(int.class.getClassLoader()); 6198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(void.class.getClassLoader()); 6208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getClasses() { 6238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect class array returned", 6248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 11, OldClassTest.class.getClasses().length); 6258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaredClasses() { 6288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] declClasses = Object.class.getDeclaredClasses(); 6298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect length of declared classes array is returned " + 6308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "for Object.", 0, declClasses.length); 6318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson declClasses = PublicTestClass.class.getDeclaredClasses(); 6338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(2, declClasses.length); 6348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, int.class.getDeclaredClasses().length); 6368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, void.class.getDeclaredClasses().length); 6378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < declClasses.length; i++) { 6398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Constructor<?> constr = declClasses[i].getDeclaredConstructors()[0]; 6408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson constr.setAccessible(true); 6418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass publicClazz = new PublicTestClass(); 6428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object o = constr.newInstance(publicClazz); 6448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue("Returned incorrect class: " + o.toString(), 6458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson o.toString().startsWith("PrivateClass")); 6468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(Exception e) { 6478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Unexpected exception was thrown: " + e.toString()); 6488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson declClasses = TestInterface.class.getDeclaredClasses(); 6528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, declClasses.length); 6538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaredConstructor$Ljava_lang_Class() throws Exception { 6568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getDeclaredConstructor(String.class); 6588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NoSuchMethodException should be thrown."); 6598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NoSuchMethodException nsme) { 6608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 6618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaredFieldLjava_lang_String() throws Exception { 6658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getDeclaredField(null); 6678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 6688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 6698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 6708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getDeclaredField("NonExistentField"); 6748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NoSuchFieldException is not thrown."); 6758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NoSuchFieldException nsfe) { 6768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 6778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaredMethodLjava_lang_String$Ljava_lang_Class() throws Exception { 6818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getDeclaredMethod(null, new Class[0]); 6838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 6848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 6858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 6868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 6898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getDeclaredMethod("NonExistentMethod", new Class[0]); 6908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NoSuchMethodException is not thrown."); 6918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NoSuchMethodException nsme) { 6928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 6938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 6958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 6968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getMethodLjava_lang_String$Ljava_lang_Class() throws Exception { 6978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Method m = ExtendTestClass1.class.getMethod("getCount", new Class[0]); 6988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Returned incorrect method", 0, ((Integer) (m.invoke(new ExtendTestClass1()))) 6998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson .intValue()); 7008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 7028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson m = TestClass.class.getMethod("init", new Class[0]); 7038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Failed to throw exception accessing to init method"); 7048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (NoSuchMethodException e) { 7058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Correct 7068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson return; 7078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 7108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getMethod("pubMethod", new Class[0]); 7118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 7128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 7138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 7148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getDeclaringClass() { 718c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(OldClassTest.class, Intf1.class.getDeclaringClass()); 719c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, Serializable.class.getDeclaringClass()); 720c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, OldClassTest.class.getDeclaringClass()); 721c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes 722c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(OldClassTest.class, PublicTestClass.class.getDeclaringClass()); 723c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes 724c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes // https://code.google.com/p/android/issues/detail?id=61003 725c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, new Object() {}.getClass().getDeclaringClass()); 726c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, new AnonymousMemberFixture().instanceOfAnonymousClass.getClass().getDeclaringClass()); 727c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes 728c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes // Arrays, primitive types, and void all return null. 729c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, char[].class.getDeclaringClass()); 730c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, int.class.getDeclaringClass()); 731c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes assertEquals(null, void.class.getDeclaringClass()); 7328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getFieldLjava_lang_String() throws Exception { 7358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Field f = TestClass.class.getField("pubField"); 7368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Returned incorrect field", 2, f.getInt(new TestClass())); 7378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f = PublicTestClass.class.getField("TEST_FIELD"); 7398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Returned incorrect field", "test field", 7408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f.get(new PublicTestClass())); 7418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f = PublicTestClass.class.getField("TEST_INTERFACE_FIELD"); 7438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Returned incorrect field", 0, 7448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f.getInt(new PublicTestClass())); 7458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 7478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass.class.getField(null); 7488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is thrown."); 7498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 7508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 7518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getFields2() throws Exception { 7558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Field[] f; 7568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Field expected = null; 7578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f = PublicTestClass.class.getFields(); 7598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Test 1: Incorrect number of fields;", 2, f.length); 7608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f = Cls2.class.getFields(); 7628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Test 2: Incorrect number of fields;", 6, f.length); 7638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson f = Cls3.class.getFields(); 7658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Test 2: Incorrect number of fields;", 5, f.length); 7668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Field field : f) { 7688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (field.toString().equals("public static final int " 7698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson + "libcore.java.lang.OldClassTest$Intf3.field1")) { 7708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = field; 7718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 7728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 7758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Test 3: getFields() did not return all fields."); 7768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Test 4: Incorrect field;", expected, 7788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Cls3.class.getField("field1")); 7798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = null; 7818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Field field : f) { 7828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if(field.toString().equals("public static final int " + 7838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "libcore.java.lang.OldClassTest$Intf1.field2")) { 7848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = field; 7858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 7868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 7898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Test 5: getFields() did not return all fields."); 7908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Test 6: Incorrect field;", expected, 7928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Cls3.class.getField("field2")); 7938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 7948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 7958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getFields() throws Exception { 7968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Field expected = null; 7978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Field[] fields = Cls2.class.getFields(); 7988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Field field : fields) { 7998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if(field.toString().equals("public int libcore.java.lang.OldClassTest$Cls2.field1")) { 8008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = field; 8018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 8028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 8058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("getFields() did not return all fields"); 8068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(expected, Cls2.class.getField("field1")); 8088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getInterfaces() { 8118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] interfaces1 = Cls1.class.getInterfaces(); 8128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, interfaces1.length); 8138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Intf2.class, interfaces1[0]); 8148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] interfaces2 = Cls2.class.getInterfaces(); 8168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(1, interfaces2.length); 8178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Intf1.class, interfaces2[0]); 8188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] interfaces3 = Cls3.class.getInterfaces(); 8208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(2, interfaces3.length); 8218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Intf3.class, interfaces3[0]); 8228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(Intf4.class, interfaces3[1]); 8238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] interfaces4 = Cls4.class.getInterfaces(); 8258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(0, interfaces4.length); 8268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getMethods() throws Exception { 8298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect number of methods", 10, 8308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Cls2.class.getMethods().length); 8318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect number of methods", 11, 8328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Cls3.class.getMethods().length); 8338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Method expected = null; 8358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Method[] methods = Cls2.class.getMethods(); 8368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Method method : methods) { 8378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if(method.toString().equals("public void libcore.java.lang.OldClassTest$Cls2.test()")) { 8388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = method; 8398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 8408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 8438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("getMethods() did not return all methods"); 8448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(expected, Cls2.class.getMethod("test")); 8468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = null; 8488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson methods = Cls3.class.getMethods(); 8498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Method method : methods) { 8508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if(method.toString().equals("public void libcore.java.lang.OldClassTest$Cls3.test()")) { 8518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = method; 8528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 8538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 8568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("getMethods() did not return all methods"); 8578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(expected, Cls3.class.getMethod("test")); 8598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = null; 8618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson methods = Cls3.class.getMethods(); 8628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for (Method method : methods) { 8638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if(method.toString().equals("public void libcore.java.lang.OldClassTest$Cls3.test2(int," 8648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson + "java.lang.Object)")) { 8658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson expected = method; 8668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson break; 8678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson if (expected == null) { 8708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("getMethods() did not return all methods"); 8718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(expected, Cls3.class.getMethod("test2", int.class, 8748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object.class)); 8758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals("Incorrect number of methods", 1, 8778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Intf5.class.getMethods().length); 8788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getResourceLjava_lang_String() { 8818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(getClass().getResource( 8828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "libcore/java/lang/NonExistentResource")); 8838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(getClass().getResource(getClass().getName() + "NonExistentResource")); 8848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 8858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_getResourceAsStreamLjava_lang_String() throws Exception { 8878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String name = "/HelloWorld.txt"; 8888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull("the file " + name + " can not be found in this " + 8898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson "directory", getClass().getResourceAsStream(name)); 8908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson final String nameBadURI = "org/apache/harmony/luni/tests/test_resource.txt"; 8928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull("the file " + nameBadURI + " should not be found in this directory", 8938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson getClass().getResourceAsStream(nameBadURI)); 8948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ClassLoader pcl = getClass().getClassLoader(); 8968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class<?> clazz = pcl.loadClass("libcore.java.lang.OldClassTest"); 8978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNotNull(clazz.getResourceAsStream("HelloWorld1.txt")); 8988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 8998bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson getClass().getResourceAsStream(null); 9018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 9028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 9038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9048bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_isAssignableFromLjava_lang_Class() { 9088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("returned true not assignable classes", 9098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Integer.class.isAssignableFrom(String.class)); 9108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Runnable.class.isAssignableFrom(null); 9138bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 9148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 9158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9188bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_newInstance() throws Exception { 9208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass3.class.newInstance(); 9228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("IllegalAccessException is not thrown."); 9238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(IllegalAccessException iae) { 9248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson TestClass1C.class.newInstance(); 9298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ExceptionInInitializerError should be thrown."); 9308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch (java.lang.ExceptionInInitializerError ie) { 9318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9328bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9338bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9348bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9358bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_asSubclass1() { 9368bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(ExtendTestClass.class, 9378bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.asSubclass(PublicTestClass.class)); 9388bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9398bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(PublicTestClass.class, 9408bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.asSubclass(TestInterface.class)); 9418bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9428bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(ExtendTestClass1.class, 9438bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass1.class.asSubclass(PublicTestClass.class)); 9448bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9458bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertEquals(PublicTestClass.class, 9468bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.asSubclass(PublicTestClass.class)); 9478bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9488bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9498bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_asSubclass2() { 9508bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9518bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.asSubclass(ExtendTestClass.class); 9528bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Test 1: ClassCastException expected."); 9538bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassCastException cce) { 9548bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected. 9558bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9568bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9578bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9588bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson PublicTestClass.class.asSubclass(String.class); 9598bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Test 2: ClassCastException expected."); 9608bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassCastException cce) { 9618bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson // Expected. 9628bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9638bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9648bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9658bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_cast() { 9668bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Object o = PublicTestClass.class.cast(new ExtendTestClass()); 9678bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertTrue(o instanceof ExtendTestClass); 9688bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9698bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9708bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.cast(new PublicTestClass()); 9718bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("Test 1: ClassCastException expected."); 9728bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassCastException cce) { 9738bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9748bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9758bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9768bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 9778bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class.cast(new String()); 9788bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("ClassCastException is not thrown."); 9798bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(ClassCastException cce) { 9808bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 9818bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9828bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9838bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9848bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void test_desiredAssertionStatus() { 9858bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class [] classArray = { Object.class, Integer.class, 9868bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String.class, PublicTestClass.class, 9878bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson ExtendTestClass.class, ExtendTestClass1.class}; 9888bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9898bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson for(int i = 0; i < classArray.length; i++) { 9908bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertFalse("assertion status for " + classArray[i], 9918bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson classArray[i].desiredAssertionStatus()); 9928bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9938bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 9948bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9958bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void testGetResourceAsStream1() throws IOException { 9968bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class clazz = getClass(); 9978bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 9988bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson InputStream stream = clazz.getResourceAsStream("HelloWorld.txt"); 99967a368573213811c0037cb1b972a0d5fdb3eaf48Elliott Hughes assertNotNull(stream); 10008bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10018bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson byte[] buffer = new byte[20]; 10028bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int length = stream.read(buffer); 10038bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String s = new String(buffer, 0, length); 100471e607dfb13e52d3e59ca8902820de5f0cdb6ed3Elliott Hughes assertEquals("Hello, World.\n", s); 10058bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10068bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson stream.close(); 10078bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 10088bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10098bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson public void testGetResourceAsStream2() throws IOException { 10108bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson Class clazz = getClass(); 10118bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10128bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson InputStream stream = clazz.getResourceAsStream("/libcore/java/lang/HelloWorld.txt"); 101367a368573213811c0037cb1b972a0d5fdb3eaf48Elliott Hughes assertNotNull(stream); 10148bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10158bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson byte[] buffer = new byte[20]; 10168bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson int length = stream.read(buffer); 10178bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson String s = new String(buffer, 0, length); 101871e607dfb13e52d3e59ca8902820de5f0cdb6ed3Elliott Hughes assertEquals("Hello, World.\n", s); 10198bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10208bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson stream.close(); 10218bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson 10228bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson try { 10238bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson clazz.getResourceAsStream(null); 10248bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson fail("NullPointerException is not thrown."); 10258bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } catch(NullPointerException npe) { 10268bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson //expected 10278bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 10288bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(clazz.getResourceAsStream("/NonExistentResource")); 10298bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson assertNull(clazz.getResourceAsStream("libcore/java/lang/HelloWorld.txt")); 10308bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson } 10318bc50e8d16e9d630ce236b7ea076f72f9dac0d69Jesse Wilson} 1032c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes 1033c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughesclass AnonymousMemberFixture { 1034c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes Object instanceOfAnonymousClass = new Object() {}; 1035c9b3e3cd287eff82f85a58934b192b5b174ae61cElliott Hughes} 1036