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