1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.lang.reflect;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_Field;
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.Annotation;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.ElementType;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.Inherited;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.Retention;
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.RetentionPolicy;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.annotation.Target;
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.reflect.Field;
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.reflect.Modifier;
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.reflect.Type;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.reflect.TypeVariable;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.HashSet;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Set;
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Field.class)
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class FieldTest extends junit.framework.TestCase {
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // BEGIN android-note
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // This test had a couple of bugs in it. Some parts of the code were
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // unreachable before. Also some tests expected the wrong excpetions
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // to be thrown. This version has been validated to pass on a standard
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // JDK 1.5.
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // END android-note
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public class TestClass {
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @AnnotationRuntime0
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @AnnotationRuntime1
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @AnnotationClass0
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @AnnotationSource0
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int annotatedField;
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        class Inner{}
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Retention(RetentionPolicy.RUNTIME)
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Target( {ElementType.FIELD})
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static @interface AnnotationRuntime0 {
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Retention(RetentionPolicy.RUNTIME)
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Target( { ElementType.FIELD})
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static @interface AnnotationRuntime1 {
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Retention(RetentionPolicy.CLASS)
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Target( { ElementType.FIELD})
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static @interface AnnotationClass0 {
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Retention(RetentionPolicy.SOURCE)
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Target( {ElementType.FIELD})
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static @interface AnnotationSource0 {
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Inherited
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Retention(RetentionPolicy.RUNTIME)
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Target( {ElementType.FIELD})
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static @interface InheritedRuntime {
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public class GenericField<S, T extends Number> {
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        S field;
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        T boundedField;
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int intField;
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static class TestField {
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public static int pubfield1;
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private static int privfield1 = 123;
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected int intField = Integer.MAX_VALUE;
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final int intFField = Integer.MAX_VALUE;
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static int intSField = Integer.MAX_VALUE;
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final int intPFField = Integer.MAX_VALUE;
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected short shortField = Short.MAX_VALUE;
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final short shortFField = Short.MAX_VALUE;
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static short shortSField = Short.MAX_VALUE;
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final short shortPFField = Short.MAX_VALUE;
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected boolean booleanField = true;
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static boolean booleanSField = true;
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final boolean booleanFField = true;
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final boolean booleanPFField = true;
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected byte byteField = Byte.MAX_VALUE;
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static byte byteSField = Byte.MAX_VALUE;
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final byte byteFField = Byte.MAX_VALUE;
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final byte bytePFField = Byte.MAX_VALUE;
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected long longField = Long.MAX_VALUE;
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final long longFField = Long.MAX_VALUE;
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static long longSField = Long.MAX_VALUE;
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final long longPFField = Long.MAX_VALUE;
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected double doubleField = Double.MAX_VALUE;
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static double doubleSField = Double.MAX_VALUE;
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static final double doubleSFField = Double.MAX_VALUE;
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final double doubleFField = Double.MAX_VALUE;
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final double doublePFField = Double.MAX_VALUE;
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected float floatField = Float.MAX_VALUE;
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final float floatFField = Float.MAX_VALUE;
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static float floatSField = Float.MAX_VALUE;
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final float floatPFField = Float.MAX_VALUE;
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected char charField = 'T';
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static char charSField = 'T';
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private final char charPFField = 'T';
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected final char charFField = 'T';
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private static final int x = 1;
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public volatile transient int y = 0;
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected static transient volatile int prsttrvol = 99;
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public class TestFieldSub1 extends TestField {
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public class TestFieldSub2 extends TestField {
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static class A {
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        protected short shortField = Short.MAX_VALUE;
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static enum TestEnum {
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        A, B, C;
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int field;
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#equals(java.lang.Object)
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "equals",
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_equalsLjava_lang_Object() {
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method boolean
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.equals(java.lang.Object)
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getType test : " + e.getMessage());
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Same Field returned false", f.equals(f));
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Inherited Field returned false", f.equals(x.getClass()
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .getDeclaredField("shortField")));
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Identical Field from different class returned true", !f
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .equals(A.class.getDeclaredField("shortField")));
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getType test : " + e.getMessage());
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#get(java.lang.Object)
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "get",
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getLjava_lang_Object() throws Throwable {
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.lang.Object
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.get(java.lang.Object)
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = x.getClass().getDeclaredField("doubleField");
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Double val = (Double) f.get(x);
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect double field value",
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val.doubleValue() == Double.MAX_VALUE);
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test getting a static field;
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("doubleSField");
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.set(x, new Double(1.0));
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = (Double) f.get(x);
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect double field value", 1.0, val
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .doubleValue());
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Try a get on a private field
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = TestAccess.class.getDeclaredField("xxx");
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertNotNull(f);
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.get(null);
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No expected IllegalAccessException");
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ok) {
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Try a get on a private field in nested member
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // temporarily commented because it breaks J9 VM
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Regression for HARMONY-1309
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //f = x.getClass().getDeclaredField("privfield1");
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //assertEquals(x.privfield1, f.get(x));
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Try a get using an invalid class.
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.get(new String());
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No expected IllegalArgumentException");
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException exc) {
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Correct - Passed an Object that does not declare or inherit f
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = TestField.class.getDeclaredField("intField");
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.get(null);
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Expected NullPointerException not thrown");
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException exc) {
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Correct - Passed an Object that does not declare or inherit f
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static fields
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = TestField.class.getDeclaredField("doubleSField");
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.get(null);
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Exception thrown", true);
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception exc) {
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected");
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    class SupportSubClass extends Support_Field {
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object getField(char primitiveType, Object o, Field f,
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Class expectedException) {
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Object res = null;
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                primitiveType = Character.toUpperCase(primitiveType);
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                switch (primitiveType) {
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'I': // int
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Integer(f.getInt(o));
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'J': // long
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Long(f.getLong(o));
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'Z': // boolean
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Boolean(f.getBoolean(o));
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'S': // short
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Short(f.getShort(o));
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'B': // byte
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Byte(f.getByte(o));
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'C': // char
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Character(f.getChar(o));
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'D': // double
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Double(f.getDouble(o));
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'F': // float
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = new Float(f.getFloat(o));
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                default:
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    res = f.get(o);
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (expectedException != null) {
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    fail("expected exception " + expectedException.getName());
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (Exception e) {
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (expectedException == null) {
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    fail("unexpected exception " + e);
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                } else {
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    assertTrue("expected exception "
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            + expectedException.getName() + " and got " + e, e
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            .getClass().equals(expectedException));
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return res;
317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        void setField(char primitiveType, Object o, Field f,
320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Class expectedException, Object value) {
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                primitiveType = Character.toUpperCase(primitiveType);
323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                switch (primitiveType) {
324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'I': // int
325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setInt(o, ((Integer) value).intValue());
326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'J': // long
328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setLong(o, ((Long) value).longValue());
329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'Z': // boolean
331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setBoolean(o, ((Boolean) value).booleanValue());
332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'S': // short
334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setShort(o, ((Short) value).shortValue());
335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'B': // byte
337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setByte(o, ((Byte) value).byteValue());
338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'C': // char
340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setChar(o, ((Character) value).charValue());
341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'D': // double
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setDouble(o, ((Double) value).doubleValue());
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                case 'F': // float
346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.setFloat(o, ((Float) value).floatValue());
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    break;
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                default:
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    f.set(o, value);
350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (expectedException != null) {
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    fail("expected exception " + expectedException.getName()
353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            + " for field " + f.getName() + ", value " + value);
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (Exception e) {
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (expectedException == null) {
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    fail("unexpected exception " + e + " for field "
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            + f.getName() + ", value " + value);
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                } else {
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    assertTrue("expected exception "
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            + expectedException.getName() + " and got " + e
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            + " for field " + f.getName() + ", value " + value,
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            e.getClass().equals(expectedException));
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#get(java.lang.Object)
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getByte(java.lang.Object)
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getBoolean(java.lang.Object)
373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getShort(java.lang.Object)
374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getInt(java.lang.Object)
375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getLong(java.lang.Object)
376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getFloat(java.lang.Object)
377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getDouble(java.lang.Object)
378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getChar(java.lang.Object)
379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#set(java.lang.Object, java.lang.Object)
380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setByte(java.lang.Object, byte)
381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setBoolean(java.lang.Object, boolean)
382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setShort(java.lang.Object, short)
383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setInt(java.lang.Object, int)
384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setLong(java.lang.Object, long)
385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setFloat(java.lang.Object, float)
386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setDouble(java.lang.Object, double)
387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setChar(java.lang.Object, char)
388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargets({
390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "get",
394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getByte",
400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getBoolean",
406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getShort",
412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getInt",
418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getFloat",
424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getDouble",
430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "getChar",
436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class}
437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "set",
442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, java.lang.Object.class}
443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setBoolean",
448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, boolean.class}
449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setByte",
454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, byte.class}
455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setShort",
460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, short.class}
461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setInt",
466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, int.class}
467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setLong",
472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, long.class}
473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setFloat",
478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, float.class}
479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setDouble",
484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, double.class}
485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.PARTIAL,
488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "Stress test.",
489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setChar",
490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {java.lang.Object.class, char.class}
491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        )
492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    })
493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void testProtectedFieldAccess() {
494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Class fieldClass = new Support_Field().getClass();
495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String fieldName = null;
496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field objectField = null;
497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field booleanField = null;
498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field byteField = null;
499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field charField = null;
500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field shortField = null;
501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field intField = null;
502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field longField = null;
503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field floatField = null;
504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field doubleField = null;
505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "objectField";
507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            objectField = fieldClass.getDeclaredField(fieldName);
508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "booleanField";
510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            booleanField = fieldClass.getDeclaredField(fieldName);
511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "byteField";
513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byteField = fieldClass.getDeclaredField(fieldName);
514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "charField";
516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            charField = fieldClass.getDeclaredField(fieldName);
517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "shortField";
519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            shortField = fieldClass.getDeclaredField(fieldName);
520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "intField";
522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            intField = fieldClass.getDeclaredField(fieldName);
523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "longField";
525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            longField = fieldClass.getDeclaredField(fieldName);
526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "floatField";
528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            floatField = fieldClass.getDeclaredField(fieldName);
529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = "doubleField";
531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            doubleField = fieldClass.getDeclaredField(fieldName);
532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchFieldException e) {
533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("missing field " + fieldName + " in test support class "
534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + fieldClass.getName());
535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // create the various objects that might or might not have an instance
538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // of the field
539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Support_Field parentClass = new Support_Field();
540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        SupportSubClass subclass = new SupportSubClass();
541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        SupportSubClass otherSubclass = new SupportSubClass();
542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object plainObject = new Object();
543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Class illegalAccessExceptionClass = new IllegalAccessException()
545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getClass();
546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Class illegalArgumentExceptionClass = new IllegalArgumentException()
547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getClass();
548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The test will attempt to use pass an object to set for object, byte,
550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // short, ..., float and double fields
551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // and pass a byte to to setByte for byte, short, ..., float and double
552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // fields and so on.
553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // It will also test if IllegalArgumentException is thrown when the
554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // field does not exist in the given object and that
555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // IllegalAccessException is thrown when trying to access an
556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // inaccessible protected field.
557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The test will also check that IllegalArgumentException is thrown for
558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // all other attempts.
559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Ordered by widening conversion, except for 'L' at the beg (which
561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // stands for Object).
562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the object provided to set can be unwrapped to a primitive, then
563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // the set method can set
564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // primitive fields.
565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char types[] = { 'L', 'B', 'S', 'C', 'I', 'J', 'F', 'D' };
566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field fields[] = { objectField, byteField, shortField, charField,
567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                intField, longField, floatField, doubleField };
568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object values[] = { new Byte((byte) 1), new Byte((byte) 1),
569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                new Short((short) 1), new Character((char) 1), new Integer(1),
570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                new Long(1), new Float(1), new Double(1) };
571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test set methods
573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < types.length; i++) {
574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            char type = types[i];
575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Object value = values[i];
576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            for (int j = i; j < fields.length; j++) {
577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Field field = fields[j];
578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                fieldName = field.getName();
579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (field == charField && type != 'C') {
581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // the exception is that bytes and shorts CANNOT be
582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // converted into chars even though chars CAN be
583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // converted into ints, longs, floats and doubles
584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.setField(type, subclass, field,
585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalArgumentExceptionClass, value);
586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                } else {
587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // setting type into field);
588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.setField(type, subclass, field, null, value);
589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.setField(type, otherSubclass, field, null, value);
590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.setField(type, parentClass, field,
591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalAccessExceptionClass, value);
592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.setField(type, plainObject, field,
593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            // Failed on JDK.
594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalAccessExceptionClass, value);
595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            for (int j = 0; j < i; j++) {
598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Field field = fields[j];
599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                fieldName = field.getName();
600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                // not setting type into field);
601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                subclass.setField(type, subclass, field,
602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        illegalArgumentExceptionClass, value);
603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test setBoolean
607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Boolean booleanValue = Boolean.TRUE;
608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.setField('Z', subclass, booleanField, null, booleanValue);
609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.setField('Z', otherSubclass, booleanField, null, booleanValue);
610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.setField('Z', parentClass, booleanField,
611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                illegalAccessExceptionClass, booleanValue);
612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.setField('Z', plainObject, booleanField,
613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                // Failed on JDK
614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                illegalAccessExceptionClass, booleanValue);
615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int j = 0; j < fields.length; j++) {
616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Field listedField = fields[j];
617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = listedField.getName();
618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // not setting boolean into listedField
619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            subclass.setField('Z', subclass, listedField,
620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    illegalArgumentExceptionClass, booleanValue);
621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < types.length; i++) {
623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            char type = types[i];
624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Object value = values[i];
625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            subclass.setField(type, subclass, booleanField,
626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    illegalArgumentExceptionClass, value);
627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // We perform the analagous test on the get methods.
630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // ordered by widening conversion, except for 'L' at the end (which
632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // stands for Object), to which all primitives can be converted by
633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // wrapping
634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char newTypes[] = new char[] { 'B', 'S', 'C', 'I', 'J', 'F', 'D', 'L' };
635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field newFields[] = { byteField, shortField, charField, intField,
636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                longField, floatField, doubleField, objectField };
637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        fields = newFields;
638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        types = newTypes;
639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test get methods
640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < types.length; i++) {
641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            char type = types[i];
642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            for (int j = 0; j <= i; j++) {
643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Field field = fields[j];
644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                fieldName = field.getName();
645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                if (type == 'C' && field != charField) {
646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // the exception is that bytes and shorts CANNOT be
647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // converted into chars even though chars CAN be
648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // converted into ints, longs, floats and doubles
649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.getField(type, subclass, field,
650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalArgumentExceptionClass);
651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                } else {
652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    // getting type from field
653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.getField(type, subclass, field, null);
654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.getField(type, otherSubclass, field, null);
655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.getField(type, parentClass, field,
656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalAccessExceptionClass);
657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    subclass.getField(type, plainObject, field,
658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                            illegalAccessExceptionClass);
659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            for (int j = i + 1; j < fields.length; j++) {
662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Field field = fields[j];
663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                fieldName = field.getName();
664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                subclass.getField(type, subclass, field,
665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        illegalArgumentExceptionClass);
666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test getBoolean
670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.getField('Z', subclass, booleanField, null);
671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.getField('Z', otherSubclass, booleanField, null);
672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.getField('Z', parentClass, booleanField,
673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                illegalAccessExceptionClass);
674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        subclass.getField('Z', plainObject, booleanField,
675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                illegalAccessExceptionClass);
676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int j = 0; j < fields.length; j++) {
677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Field listedField = fields[j];
678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fieldName = listedField.getName();
679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // not getting boolean from listedField
680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            subclass.getField('Z', subclass, listedField,
681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    illegalArgumentExceptionClass);
682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < types.length - 1; i++) {
684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            char type = types[i];
685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            subclass.getField(type, subclass, booleanField,
686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    illegalArgumentExceptionClass);
687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object res = subclass.getField('L', subclass, booleanField, null);
689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("unexpected object " + res, res instanceof Boolean);
690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getBoolean(java.lang.Object)
694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getBoolean",
699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getBooleanLjava_lang_Object() {
702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean val = false;
705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getBoolean(x);
708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getBoolean test: " + e.toString());
710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect boolean field value", val);
712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getBoolean(x);
717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanPFField");
728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getBoolean(x);
729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getBoolean(null);
743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanSField");
755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean staticValue = f.getBoolean(null);
756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Wrong value returned", staticValue);
757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected");
759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getByte(java.lang.Object)
765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getByte",
770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getByteLjava_lang_Object() {
773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method byte
774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getByte(java.lang.Object)
775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        byte val = 0;
778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("byteField");
780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getByte(x);
781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getbyte test : " + e.getMessage());
783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect byte field value", val == Byte.MAX_VALUE);
785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getByte(x);
790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("bytePFField");
801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getByte(x);
802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("byteField");
815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getByte(null);
816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("byteSField");
828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            byte staticValue = f.getByte(null);
829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Byte.MAX_VALUE, staticValue);
830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getChar(java.lang.Object)
837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getChar",
842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getCharLjava_lang_Object() {
845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method char
846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getChar(java.lang.Object)
847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char val = 0;
850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charField");
852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getChar(x);
853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getCharacter test: " + e.toString());
855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect char field value", 'T', val);
857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getChar(x);
862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charPFField");
873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getChar(x);
874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charField");
887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getChar(null);
888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charSField");
900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            char staticValue = f.getChar(null);
901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", 'T', staticValue);
902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getDeclaringClass()
909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getDeclaringClass",
914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getDeclaringClass() {
917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.lang.Class
918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getDeclaringClass()
919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field[] fields;
920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fields = new TestField().getClass().getFields();
923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Returned incorrect declaring class", fields[0]
924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .getDeclaringClass().equals(new TestField().getClass()));
925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Check the case where the field is inherited to be sure the parent
927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // is returned as the declarator
928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fields = new TestFieldSub1().getClass().getFields();
929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Returned incorrect declaring class", fields[0]
930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    .getDeclaringClass().equals(new TestField().getClass()));
931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception : " + e.getMessage());
933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getDouble(java.lang.Object)
938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getDouble",
943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getDoubleLjava_lang_Object() {
946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method double
947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getDouble(java.lang.Object)
948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        double val = 0.0;
951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getDouble(x);
954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getDouble test: " + e.toString());
956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect double field value",
958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val == Double.MAX_VALUE);
959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getDouble(x);
964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown "
969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doublePFField");
976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getDouble(x);
977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getDouble(null);
991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleSFField");
1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            double staticValue = f.getDouble(null);
1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Double.MAX_VALUE, staticValue);
1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getFloat(java.lang.Object)
1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getFloat",
1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getFloatLjava_lang_Object() {
1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method float
1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getFloat(java.lang.Object)
1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        float val = 0;
1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatField");
1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getFloat(x);
1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getFloat test : " + e.getMessage());
1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect float field value",
1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val == Float.MAX_VALUE);
1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getFloat(x);
1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown "
1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatPFField");
1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getFloat(x);
1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatField");
1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getFloat(null);
1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatSField");
1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            float staticValue = f.getFloat(null);
1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Float.MAX_VALUE, staticValue);
1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getInt(java.lang.Object)
1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getInt",
1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getIntLjava_lang_Object() {
1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method int java.lang.reflect.Field.getInt(java.lang.Object)
1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int val = 0;
1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intField");
1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getInt(x);
1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getInt test : " + e.getMessage());
1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect Int field value",
1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val == Integer.MAX_VALUE);
1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getInt(x);
1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown "
1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intPFField");
1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getInt(x);
1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intField");
1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getInt(null);
1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intSField");
1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int staticValue = f.getInt(null);
1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Integer.MAX_VALUE, staticValue);
1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected " + ex.getMessage());
1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getLong(java.lang.Object)
1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getLong",
1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getLongLjava_lang_Object() {
1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method long
1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getLong(java.lang.Object)
1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        long val = 0;
1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longField");
1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getLong(x);
1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getLong test : " + e.getMessage());
1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getLong(x);
1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown "
1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longPFField");
1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getLong(x);
1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longField");
1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getLong(null);
1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longSField");
1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            long staticValue = f.getLong(null);
1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Long.MAX_VALUE, staticValue);
1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getModifiers()
1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getModifiers",
1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getModifiers() {
1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method int java.lang.reflect.Field.getModifiers()
1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("prsttrvol");
1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getModifiers test: " + e.toString());
1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int mod = f.getModifiers();
1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int mask = (Modifier.PROTECTED | Modifier.STATIC)
1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                | (Modifier.TRANSIENT | Modifier.VOLATILE);
1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int nmask = (Modifier.PUBLIC | Modifier.NATIVE);
1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect field modifiers: ",
1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                ((mod & mask) == mask) && ((mod & nmask) == 0));
1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getName()
1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getName",
1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getName() {
1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.lang.String java.lang.reflect.Field.getName()
1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getType test : " + e.getMessage());
1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect field name",
1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "shortField", f.getName());
1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getShort(java.lang.Object)
1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getShort",
1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getShortLjava_lang_Object() {
1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method short
1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.getShort(java.lang.Object)
1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        short val = 0;
1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ;
1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getShort(x);
1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getShort test : " + e.getMessage());
1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect short field value",
1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val == Short.MAX_VALUE);
1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getShort(x);
1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown");
1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected but not thrown "
1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortPFField");
1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getShort(x);
1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown");
1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalAccessException expected but not thrown"
1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getMessage());
1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test NPE
1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.getShort(null);
1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //Test no NPE on static field
1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortSField");
1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            short staticValue = f.getShort(null);
1347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong value returned", Short.MAX_VALUE, staticValue);
1348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }  catch (Exception ex) {
1349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("No exception expected "+ ex.getMessage());
1350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#getType()
1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getType",
1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getType() {
1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.lang.Class java.lang.reflect.Field.getType()
1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during getType test : " + e.getMessage());
1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect field type: " + f.getType().toString(),
1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                f.getType().equals(short.class));
1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#set(java.lang.Object, java.lang.Object)
1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "set",
1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, java.lang.Object.class}
1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setLjava_lang_ObjectLjava_lang_Object() throws Exception{
1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void java.lang.reflect.Field.set(java.lang.Object,
1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.Object)
1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        double val = 0.0;
1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.set(x, new Double(1.0));
1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getDouble(x);
1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during set test : " + e.getMessage());
1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect double field value", 1.0, val);
1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test wrong type
1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.set(x, new Double(1.0));
1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleFField");
1414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.set(x, new Double(1.0));
1416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.set(null, true);
1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("doubleSField");
1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.set(null, new Double(1.0));
1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getDouble(x);
1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect double field value", 1.0, val);
1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setBoolean(java.lang.Object, boolean)
1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setBoolean",
1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, boolean.class}
1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setBooleanLjava_lang_ObjectZ() throws Exception{
1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setBoolean(java.lang.Object, boolean)
1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean val = false;
1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setBoolean(x, false);
1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getBoolean(x);
1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setboolean test: " + e.toString());
1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Returned incorrect float field value", !val);
1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //test wrong type
1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setBoolean(x, false);
1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanPFField");
1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setBoolean(x, true);
1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setBoolean(null, true);
1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("booleanSField");
1504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setBoolean(null, false);
1505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getBoolean(x);
1506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("Returned incorrect boolean field value", val);
1507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setByte(java.lang.Object, byte)
1511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setByte",
1516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, byte.class}
1517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setByteLjava_lang_ObjectB() throws Exception{
1519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setByte(java.lang.Object, byte)
1521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        byte val = 0;
1524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("byteField");
1526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setByte(x, (byte) 1);
1527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getByte(x);
1528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setByte test : " + e.getMessage());
1530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect float field value", 1, val);
1532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test wrong type
1534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setByte(x, Byte.MIN_VALUE);
1538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("bytePFField");
1548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setByte(x, Byte.MIN_VALUE);
1550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("byteField");
1560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setByte(null, Byte.MIN_VALUE);
1561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("byteSField");
1571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setByte(null, Byte.MIN_VALUE);
1572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getByte(x);
1573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect byte field value", Byte.MIN_VALUE,
1574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val);
1575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setChar(java.lang.Object, char)
1579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setChar",
1584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, char.class}
1585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setCharLjava_lang_ObjectC() throws Exception{
1587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setChar(java.lang.Object, char)
1589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char val = 0;
1592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charField");
1594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setChar(x, (char) 1);
1595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getChar(x);
1596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setChar test : " + e.getMessage());
1598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect float field value", 1, val);
1600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //test wrong type
1602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setChar(x, Character.MIN_VALUE);
1606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charPFField");
1616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setChar(x, Character.MIN_VALUE);
1618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("charField");
1628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setChar(null, Character.MIN_VALUE);
1629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("charSField");
1639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setChar(null, Character.MIN_VALUE);
1640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getChar(x);
1641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect char field value",
1642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Character.MIN_VALUE, val);
1643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setDouble(java.lang.Object, double)
1647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setDouble",
1652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, double.class}
1653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setDoubleLjava_lang_ObjectD() throws Exception{
1655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setDouble(java.lang.Object, double)
1657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        double val = 0.0;
1660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
1662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setDouble(x, Double.MIN_VALUE);
1663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getDouble(x);
1664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setDouble test: " + e.toString());
1666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect double field value", Double.MIN_VALUE,
1668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val);
1669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //test wrong type
1671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setDouble(x, Double.MIN_VALUE);
1675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doublePFField");
1685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setDouble(x, Double.MIN_VALUE);
1687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("doubleField");
1697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setDouble(null, Double.MIN_VALUE);
1698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("doubleSField");
1708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setDouble(null, Double.MIN_VALUE);
1709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getDouble(x);
1710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect double field value",
1711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Double.MIN_VALUE, val);
1712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setFloat(java.lang.Object, float)
1716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setFloat",
1721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, float.class}
1722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setFloatLjava_lang_ObjectF() throws Exception{
1724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setFloat(java.lang.Object, float)
1726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        float val = 0.0F;
1729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatField");
1731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setFloat(x, Float.MIN_VALUE);
1732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getFloat(x);
1733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setFloat test : " + e.getMessage());
1735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect float field value", Float.MIN_VALUE,
1737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val, 0.0);
1738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test wrong type
1740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setFloat(x, Float.MIN_VALUE);
1744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //test not accessible
1751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatPFField");
1754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setFloat(x, Float.MIN_VALUE);
1756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project      //Test NPE
1763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("floatField");
1766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setFloat(null, Float.MIN_VALUE);
1767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("floatSField");
1777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setFloat(null, Float.MIN_VALUE);
1778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getFloat(x);
1779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect float field value",
1780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Float.MIN_VALUE, val);
1781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setInt(java.lang.Object, int)
1785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setInt",
1790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, int.class}
1791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setIntLjava_lang_ObjectI() throws Exception{
1793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void java.lang.reflect.Field.setInt(java.lang.Object,
1794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // int)
1795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int val = 0;
1798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intField");
1800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setInt(x, Integer.MIN_VALUE);
1801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getInt(x);
1802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setInteger test: " + e.toString());
1804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect int field value", Integer.MIN_VALUE,
1806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val);
1807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test wrong type
1809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setInt(x, Integer.MIN_VALUE);
1813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test not accessible
1820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intPFField");
1823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setInt(x, Integer.MIN_VALUE);
1825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test NPE
1832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("intField");
1835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setInt(null, Integer.MIN_VALUE);
1836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("intSField");
1846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setInt(null, Integer.MIN_VALUE);
1847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getInt(x);
1848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect int field value",
1849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Integer.MIN_VALUE, val);
1850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setLong(java.lang.Object, long)
1854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setLong",
1859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, long.class}
1860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setLongLjava_lang_ObjectJ() throws Exception{
1862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setLong(java.lang.Object, long)
1864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        long val = 0L;
1867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longField");
1869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setLong(x, Long.MIN_VALUE);
1870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getLong(x);
1871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setLong test : " + e.getMessage());
1873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect long field value", Long.MIN_VALUE, val);
1875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test wrong type
1877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setLong(x, Long.MIN_VALUE);
1881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test not accessible
1888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longPFField");
1891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setLong(x, Long.MIN_VALUE);
1893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test NPE
1900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("longField");
1903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setLong(null, Long.MIN_VALUE);
1904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("longSField");
1914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setLong(null, Long.MIN_VALUE);
1915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getLong(x);
1916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect long field value",
1917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Long.MIN_VALUE, val);
1918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#setShort(java.lang.Object, short)
1922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "setShort",
1927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, short.class}
1928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_setShortLjava_lang_ObjectS() throws Exception{
1930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
1931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.lang.reflect.Field.setShort(java.lang.Object, short)
1932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestField x = new TestField();
1933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
1934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        short val = 0;
1935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setShort(x, Short.MIN_VALUE);
1938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            val = f.getShort(x);
1939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
1940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during setShort test : " + e.getMessage());
1941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect short field value", Short.MIN_VALUE,
1943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                val);
1944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test wrong type
1946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean thrown = false;
1947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("booleanField");
1949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setShort(x, Short.MIN_VALUE);
1950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed field of invalid type");
1951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ex) {
1952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalArgumentException expected but not thrown", thrown);
1955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test not accessible
1957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortPFField");
1960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertFalse(f.isAccessible());
1961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setShort(x, Short.MIN_VALUE);
1962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Accessed inaccessible field");
1963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalAccessException ex) {
1964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("IllegalAccessException expected but not thrown", thrown);
1967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test NPE
1969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        thrown = false;
1970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = x.getClass().getDeclaredField("shortField");
1972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f.setShort(null, Short.MIN_VALUE);
1973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
1975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            thrown = true;
1976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception ex) {
1977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected but not thrown");
1978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("NullPointerException expected but not thrown", thrown);
1980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test setting a static field;
1982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f = x.getClass().getDeclaredField("shortSField");
1983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        f.setShort(null, Short.MIN_VALUE);
1984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        val = f.getShort(x);
1985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Returned incorrect short field value",
1986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Short.MIN_VALUE, val);
1987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.lang.reflect.Field#toString()
1991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "toString",
1996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_toString() {
1999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.lang.String java.lang.reflect.Field.toString()
2000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field f = null;
2001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            f = TestField.class.getDeclaredField("x");
2004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
2005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception getting field : " + e.getMessage());
2006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Field returned incorrect string",
2008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "private static final int tests.api.java.lang.reflect.FieldTest$TestField.x",
2009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                        f.toString());
2010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getDeclaredAnnotations",
2016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getDeclaredAnnotations() throws Exception {
2019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = TestClass.class.getField("annotatedField");
2020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Annotation[] annotations = field.getDeclaredAnnotations();
2021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, annotations.length);
2022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Set<Class<?>> ignoreOrder = new HashSet<Class<?>>();
2024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ignoreOrder.add(annotations[0].annotationType());
2025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ignoreOrder.add(annotations[1].annotationType());
2026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Missing @AnnotationRuntime0", ignoreOrder
2028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(AnnotationRuntime0.class));
2029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Missing @AnnotationRuntime1", ignoreOrder
2030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(AnnotationRuntime1.class));
2031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "isEnumConstant",
2037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_isEnumConstant() throws Exception {
2040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = TestEnum.class.getDeclaredField("A");
2041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Enum constant not recognized", field.isEnumConstant());
2042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        field = TestEnum.class.getDeclaredField("field");
2044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("Non enum constant wrongly stated as enum constant", field
2045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .isEnumConstant());
2046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        field = TestClass.class.getDeclaredField("annotatedField");
2048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("Non enum constant wrongly stated as enum constant", field
2049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .isEnumConstant());
2050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "isSynthetic",
2056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_isSynthetic() throws Exception {
2059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field[] fields = TestClass.Inner.class.getDeclaredFields();
2060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Not exactly one field returned", 1, fields.length);
2061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Enum constant not recognized", fields[0].isSynthetic());
2063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = TestEnum.class.getDeclaredField("field");
2065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("Non synthetic field wrongly stated as synthetic", field
2066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .isSynthetic());
2067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        field = TestClass.class.getDeclaredField("annotatedField");
2069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse("Non synthetic field wrongly stated as synthetic", field
2070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .isSynthetic());
2071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getGenericType",
2078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getGenericType() throws Exception {
2081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = GenericField.class.getDeclaredField("field");
2082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Type type = field.getGenericType();
2083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @SuppressWarnings("unchecked")
2084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TypeVariable typeVar = (TypeVariable) type;
2085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Wrong type name returned", "S", typeVar.getName());
2086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field boundedField = GenericField.class.getDeclaredField("boundedField");
2088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Type boundedType = boundedField.getGenericType();
2089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @SuppressWarnings("unchecked")
2090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TypeVariable boundedTypeVar = (TypeVariable) boundedType;
2091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Wrong type name returned", "T", boundedTypeVar.getName());
2092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("More than one bound found", 1,
2093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                boundedTypeVar.getBounds().length);
2094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Wrong bound returned", Number.class,
2095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                boundedTypeVar.getBounds()[0]);
2096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "toGenericString",
2103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_toGenericString() throws Exception {
2106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = GenericField.class.getDeclaredField("field");
2107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Wrong generic string returned",
2108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "S tests.api.java.lang.reflect.FieldTest$GenericField.field",
2109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                field.toGenericString());
2110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field boundedField = GenericField.class
2112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getDeclaredField("boundedField");
2113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(
2114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "Wrong generic string returned",
2115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "T tests.api.java.lang.reflect.FieldTest$GenericField.boundedField",
2116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                boundedField.toGenericString());
2117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field ordinary = GenericField.class.getDeclaredField("intField");
2119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(
2120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "Wrong generic string returned",
2121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "int tests.api.java.lang.reflect.FieldTest$GenericField.intField",
2122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                ordinary.toGenericString());
2123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hashCode",
2130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hashCode() throws Exception {
2133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Field field = TestClass.class.getDeclaredField("annotatedField");
2134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Wrong hashCode returned", field.getName().hashCode()
2135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                ^ field.getDeclaringClass().getName().hashCode(), field
2136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .hashCode());
2137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
2142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * is called before a test is executed.
2143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() {
2145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Tears down the fixture, for example, close a network connection. This
2149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * method is called after a test is executed.
2150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void tearDown() {
2152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
2154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass TestAccess {
2156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static int xxx;
2157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
2158