1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.lang.reflect; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Annotation; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.ElementType; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Retention; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.RetentionPolicy; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Target; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Constructor; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Modifier; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Type; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.TypeVariable; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ConstructorTest extends junit.framework.TestCase { 33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.RUNTIME) 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.CONSTRUCTOR, ElementType.PARAMETER}) 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface ConstructorTestAnnotationRuntime0 { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.RUNTIME) 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.CONSTRUCTOR, ElementType.PARAMETER}) 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface ConstructorTestAnnotationRuntime1 { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.CLASS) 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.CONSTRUCTOR, ElementType.PARAMETER}) 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface ConstructorTestAnnotationClass0 { 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Retention(RetentionPolicy.SOURCE) 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Target( {ElementType.CONSTRUCTOR, ElementType.PARAMETER}) 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static @interface ConstructorTestAnnotationSource0 { 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class ConstructorTestHelper extends Object { 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int cval; 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @ConstructorTestAnnotationRuntime0 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @ConstructorTestAnnotationRuntime1 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @ConstructorTestAnnotationClass0 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @ConstructorTestAnnotationSource0 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ConstructorTestHelper() throws IndexOutOfBoundsException { 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project cval = 99; 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ConstructorTestHelper( 67f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes @ConstructorTestAnnotationRuntime0 68f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes @ConstructorTestAnnotationRuntime1 69f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes @ConstructorTestAnnotationClass0 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @ConstructorTestAnnotationSource0 Object x) { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public ConstructorTestHelper(String... x) { 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private ConstructorTestHelper(int a) { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected ConstructorTestHelper(long a) { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int check() { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return cval; 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static class GenericConstructorTestHelper<T, S extends T, E extends Exception> { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public GenericConstructorTestHelper(T t, S s) {} 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public GenericConstructorTestHelper() throws E{} 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 91f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 926a00ab92038e717b828161a1222fea0c54592705Elliott Hughes static class NoPublicConstructorTestHelper { 936a00ab92038e717b828161a1222fea0c54592705Elliott Hughes // This class has no public constructor. 946a00ab92038e717b828161a1222fea0c54592705Elliott Hughes } 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// Used to test synthetic constructor. 97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// static class Outer { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// private Outer(){} 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// class Inner { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// {new Outer();} 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getParameterAnnotations() throws Exception { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> ctor1 = ConstructorTestHelper.class 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(Object.class); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[][] paramAnnotations = ctor1.getParameterAnnotations(); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Annotations for wrong number of parameters returned", 1, 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramAnnotations.length); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of annotations returned", 2, 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project paramAnnotations[0].length); 113f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<Class<?>> ignoreOrder = new HashSet<Class<?>>(); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(paramAnnotations[0][0].annotationType()); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(paramAnnotations[0][1].annotationType()); 117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing ConstructorTestAnnotationRuntime0", ignoreOrder 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(ConstructorTestAnnotationRuntime0.class)); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing ConstructorTestAnnotationRuntime1", ignoreOrder 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(ConstructorTestAnnotationRuntime1.class)); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getDeclaredAnnotations() throws Exception { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> ctor1 = null; 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor1 = ConstructorTestHelper.class.getConstructor(new Class[0]); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[] annotations = ctor1.getDeclaredAnnotations(); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of annotations returned", 2, 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project annotations.length); 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set<Class<?>> ignoreOrder = new HashSet<Class<?>>(); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[0].annotationType()); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ignoreOrder.add(annotations[1].annotationType()); 134f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing ConstructorTestAnnotationRuntime0", ignoreOrder 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(ConstructorTestAnnotationRuntime0.class)); 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing ConstructorTestAnnotationRuntime1", ignoreOrder 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(ConstructorTestAnnotationRuntime1.class)); 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isVarArgs() throws Exception { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> varArgCtor = ConstructorTestHelper.class 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(String[].class); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Vararg constructor not recognized", varArgCtor.isVarArgs()); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> nonVarArgCtor = ConstructorTestHelper.class 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(Object.class); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Non vararg constructor recognized as vararg constructor", 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project nonVarArgCtor.isVarArgs()); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_hashCode() throws Exception { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> constructor = ConstructorTestHelper.class 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(); 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "The constructor's hashCode is not equal to the hashCode of the name of the declaring class", 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ConstructorTestHelper.class.getName().hashCode(), constructor 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .hashCode()); 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toGenericString() throws Exception { 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<GenericConstructorTestHelper> genericCtor = GenericConstructorTestHelper.class 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(Object.class, Object.class); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Wrong generic string returned", 167ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamath "public org.apache.harmony.tests.java.lang.reflect.ConstructorTest$GenericConstructorTestHelper(T,S)", 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project genericCtor.toGenericString()); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<GenericConstructorTestHelper> ctor = GenericConstructorTestHelper.class 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals( 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Wrong generic string returned", 173ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamath "public org.apache.harmony.tests.java.lang.reflect.ConstructorTest$GenericConstructorTestHelper() throws E", 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor.toGenericString()); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_equalsLjava_lang_Object() { 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<ConstructorTestHelper> ctor1 = null, ctor2 = null; 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor1 = ConstructorTestHelper.class.getConstructor( 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Class[0]); 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor2 = ConstructorTestHelper.class.getConstructor(Object.class); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during equals test : " + e.getMessage()); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Different Contructors returned equal", !ctor1.equals(ctor2)); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getDeclaringClass() { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean val = false; 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class<? extends ConstructorTestHelper> pclass = new ConstructorTestHelper().getClass(); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = pclass.getConstructor(new Class[0]); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project val = ctor.getDeclaringClass().equals(pclass); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect declaring class", val); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getExceptionTypes() { 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Class [] 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.Constructor.getExceptionTypes() 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] exceptions = null; 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class<? extends IndexOutOfBoundsException> ex = null; 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(new Class[0]); 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exceptions = ctor.getExceptionTypes(); 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ex = new IndexOutOfBoundsException().getClass(); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned exception list of incorrect length", 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1, exceptions.length); 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect exception", exceptions[0].equals(ex)); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getModifiers() { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.lang.reflect.Constructor.getModifiers() 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int mod = 0; 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(new Class[0]); 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mod = ctor.getModifiers(); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect modifers for public ctor", 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((mod & Modifier.PUBLIC) == Modifier.PUBLIC) 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && ((mod & Modifier.PRIVATE) == 0)); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchMethodException e) { 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] cl = { int.class }; 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getDeclaredConstructor(cl); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mod = ctor.getModifiers(); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect modifers for private ctor", 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((mod & Modifier.PRIVATE) == Modifier.PRIVATE) 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && ((mod & Modifier.PUBLIC) == 0)); 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchMethodException e) { 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during test : " + e.getMessage()); 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] cl = { long.class }; 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getDeclaredConstructor(cl); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mod = ctor.getModifiers(); 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect modifers for private ctor", 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((mod & Modifier.PROTECTED) == Modifier.PROTECTED) 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && ((mod & Modifier.PUBLIC) == 0)); 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchMethodException e) { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NoSuchMethodException during test : " + e.getMessage()); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getName() { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.String 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.Constructor.getName() 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(new Class[0]); 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Returned incorrect name: " + ctor.getName(), 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getName() 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals( 267ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamath "org.apache.harmony.tests.java.lang.reflect.ConstructorTest$ConstructorTestHelper")); 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception obtaining contructor : " + e.getMessage()); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getParameterTypes() { 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Class [] 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.Constructor.getParameterTypes() 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] types = null; 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(new Class[0]); 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = ctor.getParameterTypes(); 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.toString()); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect parameter returned", 0, types.length); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] parms = null; 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parms = new Class[1]; 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parms[0] = new Object().getClass(); 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(parms); 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = ctor.getParameterTypes(); 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.toString()); 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect parameter returned", types[0].equals(parms[0])); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 300f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getGenericParameterTypes() { 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Type[] types = null; 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper() 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getClass().getConstructor(new Class[0]); 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = ctor.getGenericParameterTypes(); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" + e.toString()); 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Incorrect parameter returned", 0, types.length); 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class<?>[] parms = null; 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parms = new Class[] {Object.class}; 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper() 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getClass().getConstructor(parms); 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = ctor.getGenericParameterTypes(); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" + e.toString()); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect parameter returned", types[0].equals(parms[0])); 323f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 324f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<GenericConstructorTestHelper> constructor = GenericConstructorTestHelper.class 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(Object.class, Object.class); 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = constructor.getGenericParameterTypes(); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" + e.toString()); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 332f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of parameter types returned", 2, 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types.length); 335f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of parameter types returned", "T", 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((TypeVariable)types[0]).getName()); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of parameter types returned", "S", 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((TypeVariable)types[1]).getName()); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 341f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getGenericExceptionTypes() { 344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Type[] types = null; 345f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper() 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getClass().getConstructor(new Class[0]); 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = ctor.getGenericExceptionTypes(); 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getGenericExceptionTypes test:" + e.toString()); 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of exception types returned", 1, types.length); 354f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 355f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<GenericConstructorTestHelper> constructor = GenericConstructorTestHelper.class 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(); 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types = constructor.getGenericExceptionTypes(); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getGenericExceptionTypes test:" 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.toString()); 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 364f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong number of exception types returned", 1, 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project types.length); 367f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong exception name returned.", "E", 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((TypeVariable)types[0]).getName()); 370f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 372f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 373f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_newInstance$Ljava_lang_Object() { 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.Constructor.newInstance(java.lang.Object []) 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ConstructorTestHelper test = null; 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = new ConstructorTestHelper().getClass() 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getConstructor(new Class[0]); 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project test = ctor.newInstance((Object[])null); 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to create instance : " + e.getMessage()); 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("improper instance created", 99, test.check()); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() { 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.String 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.lang.reflect.Constructor.toString() 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Class[] parms = null; 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Constructor<? extends ConstructorTestHelper> ctor = null; 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parms = new Class[1]; 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project parms[0] = new Object().getClass(); 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor = new ConstructorTestHelper().getClass().getConstructor(parms); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during getParameterTypes test:" 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + e.toString()); 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Returned incorrect string representation: " + ctor.toString(), 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ctor 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .toString() 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals( 407ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamath "public org.apache.harmony.tests.java.lang.reflect.ConstructorTest$ConstructorTestHelper(java.lang.Object)")); 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 409f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 4106a00ab92038e717b828161a1222fea0c54592705Elliott Hughes public void test_getConstructor() throws Exception { 4116a00ab92038e717b828161a1222fea0c54592705Elliott Hughes // Passing new Class[0] should be equivalent to (Class[]) null. 4126a00ab92038e717b828161a1222fea0c54592705Elliott Hughes Class<ConstructorTestHelper> c2 = ConstructorTestHelper.class; 4136a00ab92038e717b828161a1222fea0c54592705Elliott Hughes assertEquals(c2.getConstructor(new Class[0]), c2.getConstructor((Class[]) null)); 4146a00ab92038e717b828161a1222fea0c54592705Elliott Hughes assertEquals(c2.getDeclaredConstructor(new Class[0]), 4156a00ab92038e717b828161a1222fea0c54592705Elliott Hughes c2.getDeclaredConstructor((Class[]) null)); 416f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 4176a00ab92038e717b828161a1222fea0c54592705Elliott Hughes // We can get a non-public constructor via getDeclaredConstructor... 4186a00ab92038e717b828161a1222fea0c54592705Elliott Hughes Class<NoPublicConstructorTestHelper> c1 = NoPublicConstructorTestHelper.class; 4196a00ab92038e717b828161a1222fea0c54592705Elliott Hughes c1.getDeclaredConstructor((Class[]) null); 4206a00ab92038e717b828161a1222fea0c54592705Elliott Hughes // ...but not with getConstructor (which only returns public constructors). 4216a00ab92038e717b828161a1222fea0c54592705Elliott Hughes try { 4226a00ab92038e717b828161a1222fea0c54592705Elliott Hughes c1.getConstructor((Class[]) null); 4236a00ab92038e717b828161a1222fea0c54592705Elliott Hughes fail("Should throw NoSuchMethodException"); 4246a00ab92038e717b828161a1222fea0c54592705Elliott Hughes } catch (NoSuchMethodException ex) { 4256a00ab92038e717b828161a1222fea0c54592705Elliott Hughes // Expected. 4266a00ab92038e717b828161a1222fea0c54592705Elliott Hughes } 4276a00ab92038e717b828161a1222fea0c54592705Elliott Hughes } 428f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 443