1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.lang.reflect;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Field;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Modifier;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_Field;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class FieldTest extends junit.framework.TestCase {
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static class TestField {
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public static int pubfield1;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected static double doubleSField = Double.MAX_VALUE;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		private static int privfield1 = 123;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected int intField = Integer.MAX_VALUE;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected short shortField = Short.MAX_VALUE;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected boolean booleanField = true;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected byte byteField = Byte.MAX_VALUE;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected long longField = Long.MAX_VALUE;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected double doubleField = Double.MAX_VALUE;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected float floatField = Float.MAX_VALUE;
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected char charField = 'T';
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final int intFField = Integer.MAX_VALUE;
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final short shortFField = Short.MAX_VALUE;
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final boolean booleanFField = true;
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final byte byteFField = Byte.MAX_VALUE;
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final long longFField = Long.MAX_VALUE;
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final double doubleFField = Double.MAX_VALUE;
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final float floatFField = Float.MAX_VALUE;
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected final char charFField = 'T';
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		private static final int x = 1;
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public volatile transient int y = 0;
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected static transient volatile int prsttrvol = 99;
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public class TestFieldSub1 extends TestField {
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public class TestFieldSub2 extends TestField {
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static class A {
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		protected short shortField = Short.MAX_VALUE;
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#equals(java.lang.Object)
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_equalsLjava_lang_Object() throws Exception {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.equals(java.lang.Object)
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f = x.getClass().getDeclaredField("shortField");
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Same Field returned false", f.equals(f));
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Inherited Field returned false", f.equals(x.getClass()
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getDeclaredField("shortField")));
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Identical Field from different class returned true", !f
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .equals(A.class.getDeclaredField("shortField")));
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#get(java.lang.Object)
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getLjava_lang_Object() throws Throwable {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.get(java.lang.Object)
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = x.getClass().getDeclaredField("doubleField");
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Double val = (Double) f.get(x);
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect double field value",
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				val.doubleValue() == Double.MAX_VALUE);
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test getting a static field;
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f = x.getClass().getDeclaredField("doubleSField");
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f.set(x, new Double(1.0));
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		val = (Double) f.get(x);
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Returned incorrect double field value", 1.0, val
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.doubleValue());
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Try a get on a private field
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			f = TestAccess.class.getDeclaredField("xxx");
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertNotNull(f);
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			f.get(null);
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("No expected IllegalAccessException");
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalAccessException ok) {}
1261b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Try a get on a private field in nested member
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // temporarily commented because it breaks J9 VM
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-1309
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		//f = x.getClass().getDeclaredField("privfield1");
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		//assertEquals(x.privfield1, f.get(x));
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Try a get using an invalid class.
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			f = x.getClass().getDeclaredField("doubleField");
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			f.get(new String());
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("No expected IllegalArgumentException");
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (IllegalArgumentException exc) {
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// Correct - Passed an Object that does not declare or inherit f
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	class SupportSubClass extends Support_Field {
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object getField(char primitiveType, Object o, Field f,
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Class expectedException) {
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object res = null;
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				primitiveType = Character.toUpperCase(primitiveType);
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				switch (primitiveType) {
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'I': // int
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Integer(f.getInt(o));
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'J': // long
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Long(f.getLong(o));
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'Z': // boolean
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Boolean(f.getBoolean(o));
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'S': // short
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Short(f.getShort(o));
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'B': // byte
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Byte(f.getByte(o));
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'C': // char
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Character(f.getChar(o));
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'D': // double
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Double(f.getDouble(o));
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'F': // float
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = new Float(f.getFloat(o));
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				default:
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					res = f.get(o);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (expectedException != null) {
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					fail("expected exception " + expectedException.getName());
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (Exception e) {
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (expectedException == null) {
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					fail("unexpected exception " + e);
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				} else {
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					assertTrue("expected exception "
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							+ expectedException.getName() + " and got " + e, e
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.getClass().equals(expectedException));
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return res;
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		void setField(char primitiveType, Object o, Field f,
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Class expectedException, Object value) {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			try {
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				primitiveType = Character.toUpperCase(primitiveType);
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				switch (primitiveType) {
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'I': // int
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setInt(o, ((Integer) value).intValue());
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'J': // long
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setLong(o, ((Long) value).longValue());
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'Z': // boolean
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setBoolean(o, ((Boolean) value).booleanValue());
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'S': // short
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setShort(o, ((Short) value).shortValue());
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'B': // byte
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setByte(o, ((Byte) value).byteValue());
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'C': // char
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setChar(o, ((Character) value).charValue());
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'D': // double
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setDouble(o, ((Double) value).doubleValue());
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				case 'F': // float
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.setFloat(o, ((Float) value).floatValue());
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					break;
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				default:
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					f.set(o, value);
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (expectedException != null) {
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					fail("expected exception " + expectedException.getName());
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			} catch (Exception e) {
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (expectedException == null) {
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					fail("unexpected exception " + e);
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				} else {
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					assertTrue("expected exception "
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							+ expectedException.getName() + " and got " + e, e
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							.getClass().equals(expectedException));
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#get(java.lang.Object)
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getByte(java.lang.Object)
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getBoolean(java.lang.Object)
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getShort(java.lang.Object)
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getInt(java.lang.Object)
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getLong(java.lang.Object)
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getFloat(java.lang.Object)
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getDouble(java.lang.Object)
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getChar(java.lang.Object)
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#set(java.lang.Object, java.lang.Object)
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setByte(java.lang.Object, byte)
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setBoolean(java.lang.Object, boolean)
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setShort(java.lang.Object, short)
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setInt(java.lang.Object, int)
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setLong(java.lang.Object, long)
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setFloat(java.lang.Object, float)
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setDouble(java.lang.Object, double)
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setChar(java.lang.Object, char)
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void testProtectedFieldAccess() {
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Class fieldClass = new Support_Field().getClass();
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String fieldName = null;
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field objectField = null;
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field booleanField = null;
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field byteField = null;
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field charField = null;
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field shortField = null;
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field intField = null;
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field longField = null;
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field floatField = null;
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field doubleField = null;
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "objectField";
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			objectField = fieldClass.getDeclaredField(fieldName);
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "booleanField";
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			booleanField = fieldClass.getDeclaredField(fieldName);
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "byteField";
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			byteField = fieldClass.getDeclaredField(fieldName);
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "charField";
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			charField = fieldClass.getDeclaredField(fieldName);
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "shortField";
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			shortField = fieldClass.getDeclaredField(fieldName);
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "intField";
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			intField = fieldClass.getDeclaredField(fieldName);
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "longField";
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			longField = fieldClass.getDeclaredField(fieldName);
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "floatField";
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			floatField = fieldClass.getDeclaredField(fieldName);
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = "doubleField";
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			doubleField = fieldClass.getDeclaredField(fieldName);
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (NoSuchFieldException e) {
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("missing field " + fieldName + " in test support class "
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					+ fieldClass.getName());
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// create the various objects that might or might not have an instance
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// of the field
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Support_Field parentClass = new Support_Field();
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SupportSubClass subclass = new SupportSubClass();
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		SupportSubClass otherSubclass = new SupportSubClass();
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object plainObject = new Object();
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Class illegalAccessExceptionClass = new IllegalAccessException()
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getClass();
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Class illegalArgumentExceptionClass = new IllegalArgumentException()
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.getClass();
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// The test will attempt to use pass an object to set for object, byte,
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// short, ..., float and double fields
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// and pass a byte to setByte for byte, short, ..., float and double
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// fields and so on.
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// It will also test if IllegalArgumentException is thrown when the
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// field does not exist in the given object and that
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// IllegalAccessException is thrown when trying to access an
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// inaccessible protected field.
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// The test will also check that IllegalArgumentException is thrown for
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// all other attempts.
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Ordered by widening conversion, except for 'L' at the beg (which
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// stands for Object).
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// If the object provided to set can be unwrapped to a primitive, then
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// the set method can set
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// primitive fields.
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char types[] = { 'L', 'B', 'S', 'C', 'I', 'J', 'F', 'D' };
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field fields[] = { objectField, byteField, shortField, charField,
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				intField, longField, floatField, doubleField };
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object values[] = { new Byte((byte) 1), new Byte((byte) 1),
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Short((short) 1), new Character((char) 1), new Integer(1),
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				new Long(1), new Float(1), new Double(1) };
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test set methods
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < types.length; i++) {
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			char type = types[i];
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object value = values[i];
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int j = i; j < fields.length; j++) {
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Field field = fields[j];
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				fieldName = field.getName();
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (field == charField && type != 'C') {
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// the exception is that bytes and shorts CANNOT be
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// converted into chars even though chars CAN be
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// converted into ints, longs, floats and doubles
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.setField(type, subclass, field,
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							illegalArgumentExceptionClass, value);
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				} else {
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// setting type into field);
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.setField(type, subclass, field, null, value);
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.setField(type, otherSubclass, field, null, value);
3561b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes					subclass.setField(type, parentClass, field, illegalAccessExceptionClass, value);
3571b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes					subclass.setField(type, plainObject, field, illegalAccessExceptionClass, value);
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int j = 0; j < i; j++) {
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Field field = fields[j];
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				fieldName = field.getName();
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				// not setting type into field);
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				subclass.setField(type, subclass, field,
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						illegalArgumentExceptionClass, value);
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test setBoolean
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Boolean booleanValue = Boolean.TRUE;
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		subclass.setField('Z', subclass, booleanField, null, booleanValue);
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		subclass.setField('Z', otherSubclass, booleanField, null, booleanValue);
3731b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes		subclass.setField('Z', parentClass, booleanField, illegalAccessExceptionClass, booleanValue);
3741b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes		subclass.setField('Z', plainObject, booleanField, illegalAccessExceptionClass, booleanValue);
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int j = 0; j < fields.length; j++) {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Field listedField = fields[j];
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = listedField.getName();
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// not setting boolean into listedField
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			subclass.setField('Z', subclass, listedField,
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					illegalArgumentExceptionClass, booleanValue);
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < types.length; i++) {
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			char type = types[i];
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Object value = values[i];
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			subclass.setField(type, subclass, booleanField,
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					illegalArgumentExceptionClass, value);
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// We perform the analagous test on the get methods.
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// ordered by widening conversion, except for 'L' at the end (which
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// stands for Object), to which all primitives can be converted by
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// wrapping
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char newTypes[] = new char[] { 'B', 'S', 'C', 'I', 'J', 'F', 'D', 'L' };
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field newFields[] = { byteField, shortField, charField, intField,
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				longField, floatField, doubleField, objectField };
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fields = newFields;
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		types = newTypes;
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test get methods
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < types.length; i++) {
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			char type = types[i];
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int j = 0; j <= i; j++) {
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Field field = fields[j];
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				fieldName = field.getName();
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				if (type == 'C' && field != charField) {
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// the exception is that bytes and shorts CANNOT be
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// converted into chars even though chars CAN be
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// converted into ints, longs, floats and doubles
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.getField(type, subclass, field,
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes							illegalArgumentExceptionClass);
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				} else {
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					// getting type from field
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.getField(type, subclass, field, null);
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					subclass.getField(type, otherSubclass, field, null);
4151b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes					subclass.getField(type, parentClass, field, illegalAccessExceptionClass);
4161b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes					subclass.getField(type, plainObject, field, illegalAccessExceptionClass);
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				}
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			for (int j = i + 1; j < fields.length; j++) {
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Field field = fields[j];
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				fieldName = field.getName();
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				subclass.getField(type, subclass, field,
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						illegalArgumentExceptionClass);
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			}
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// test getBoolean
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		subclass.getField('Z', subclass, booleanField, null);
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		subclass.getField('Z', otherSubclass, booleanField, null);
4301b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes		subclass.getField('Z', parentClass, booleanField, illegalAccessExceptionClass);
4311b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes		subclass.getField('Z', plainObject, booleanField, illegalAccessExceptionClass);
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int j = 0; j < fields.length; j++) {
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			Field listedField = fields[j];
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fieldName = listedField.getName();
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			// not getting boolean from listedField
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			subclass.getField('Z', subclass, listedField,
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					illegalArgumentExceptionClass);
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		for (int i = 0; i < types.length - 1; i++) {
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			char type = types[i];
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			subclass.getField(type, subclass, booleanField,
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					illegalArgumentExceptionClass);
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object res = subclass.getField('L', subclass, booleanField, null);
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("unexpected object " + res, res instanceof Boolean);
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getBoolean(java.lang.Object)
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getBooleanLjava_lang_Object() throws Exception {
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getBoolean(java.lang.Object)
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean val = false;
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("booleanField");
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getBoolean(x);
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect boolean field value", val);
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("doubleField");
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getBoolean(x);
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since doubleField is not a
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail("Accessed field of invalid type");
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getByte(java.lang.Object)
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getByteLjava_lang_Object() throws Exception {
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method byte
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getByte(java.lang.Object)
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		byte val = 0;
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("byteField");
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getByte(x);
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect byte field value", val == Byte.MAX_VALUE);
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getByte(x);
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since byteField is not a
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getChar(java.lang.Object)
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getCharLjava_lang_Object() throws Exception {
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method char
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getChar(java.lang.Object)
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char val = 0;
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("charField");
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getChar(x);
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect char field value", 'T', val);
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getChar(x);
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since charField is not a
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getDeclaringClass()
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getDeclaringClass() {
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Class
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getDeclaringClass()
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field[] fields;
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fields = new TestField().getClass().getFields();
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect declaring class", fields[0]
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getDeclaringClass().equals(new TestField().getClass()));
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Check the case where the field is inherited to be sure the parent
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // is returned as the declarator
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fields = new TestFieldSub1().getClass().getFields();
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect declaring class", fields[0]
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getDeclaringClass().equals(new TestField().getClass()));
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getDouble(java.lang.Object)
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getDoubleLjava_lang_Object() throws Exception {
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method double
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getDouble(java.lang.Object)
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		double val = 0.0;
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("doubleField");
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getDouble(x);
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect double field value",
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				val == Double.MAX_VALUE);
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getDouble(x);
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since doubleField is not a
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getFloat(java.lang.Object)
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getFloatLjava_lang_Object() throws Exception {
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method float
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getFloat(java.lang.Object)
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		float val = 0;
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("floatField");
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getFloat(x);
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect float field value",
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				val == Float.MAX_VALUE);
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getFloat(x);
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since floatField is not a
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getInt(java.lang.Object)
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getIntLjava_lang_Object() throws Exception {
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.lang.reflect.Field.getInt(java.lang.Object)
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int val = 0;
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("intField");
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getInt(x);
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect Int field value",
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				val == Integer.MAX_VALUE);
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getInt(x);
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since IntField is not a
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getLong(java.lang.Object)
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getLongLjava_lang_Object() throws Exception {
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method long
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getLong(java.lang.Object)
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		long val = 0;
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("longField");
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getLong(x);
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect long field value", val == Long.MAX_VALUE);
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getLong(x);
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // long type
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getModifiers()
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getModifiers() throws Exception {
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.lang.reflect.Field.getModifiers()
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f = x.getClass().getDeclaredField("prsttrvol");
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                int mod = f.getModifiers();
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int mask = (Modifier.PROTECTED | Modifier.STATIC)
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				| (Modifier.TRANSIENT | Modifier.VOLATILE);
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int nmask = (Modifier.PUBLIC | Modifier.NATIVE);
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Returned incorrect field modifiers: ",
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				((mod & mask) == mask) && ((mod & nmask) == 0));
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getName()
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getName() throws Exception {
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.String java.lang.reflect.Field.getName()
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f = x.getClass().getDeclaredField("shortField");
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
6721b84f9e7ed4d17d2bc742d89e92b2ecb01dade70Elliott Hughes                assertEquals("Returned incorrect field name",
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				"shortField", f.getName());
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getShort(java.lang.Object)
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getShortLjava_lang_Object() throws Exception {
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method short
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.getShort(java.lang.Object)
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		short val = 0;
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("shortField");
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getShort(x);
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect short field value",
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				val == Short.MAX_VALUE);
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.getShort(x);
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // short type
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#getType()
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_getType() throws Exception {
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Class java.lang.reflect.Field.getType()
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		f = x.getClass().getDeclaredField("shortField");
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect field type: " + f.getType().toString(),
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				f.getType().equals(short.class));
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#set(java.lang.Object, java.lang.Object)
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setLjava_lang_ObjectLjava_lang_Object() throws Exception {
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.lang.reflect.Field.set(java.lang.Object,
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.Object)
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		double val = 0.0;
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("doubleField");
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.set(x, new Double(1.0));
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getDouble(x);
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect double field value", 1.0, val);
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.set(x, new Double(1.0));
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // double type
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("doubleFField");
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.set(x, new Double(1.0));
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since doubleFField is
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // declared as final
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Test setting a static field;
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("doubleSField");
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.set(x, new Double(1.0));
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getDouble(x);
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect double field value", 1.0, val);
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setBoolean(java.lang.Object, boolean)
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setBooleanLjava_lang_ObjectZ() throws Exception {
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setBoolean(java.lang.Object, boolean)
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		boolean val = false;
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("booleanField");
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setBoolean(x, false);
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getBoolean(x);
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Returned incorrect float field value", !val);
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setBoolean(x, true);
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // boolean type
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanFField");
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setBoolean(x, true);
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // declared as final
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setByte(java.lang.Object, byte)
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setByteLjava_lang_ObjectB() throws Exception {
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setByte(java.lang.Object, byte)
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		byte val = 0;
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("byteField");
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setByte(x, (byte) 1);
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getByte(x);
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect float field value", 1, val);
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setByte(x, (byte) 1);
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // byte type
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("byteFField");
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setByte(x, (byte) 1);
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since byteFField is declared
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // as final
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setChar(java.lang.Object, char)
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setCharLjava_lang_ObjectC() throws Exception {
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setChar(java.lang.Object, char)
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		char val = 0;
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("charField");
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setChar(x, (char) 1);
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getChar(x);
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect float field value", 1, val);
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setChar(x, (char) 1);
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // char type
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("charFField");
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setChar(x, (char) 1);
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since charFField is declared
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // as final
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		fail("Accessed field of invalid type");
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setDouble(java.lang.Object, double)
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setDoubleLjava_lang_ObjectD() throws Exception {
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setDouble(java.lang.Object, double)
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		double val = 0.0;
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("doubleField");
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setDouble(x, 1.0);
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getDouble(x);
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect double field value", 1.0, val);
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setDouble(x, 1.0);
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // double type
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("doubleFField");
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setDouble(x, 1.0);
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since doubleFField is
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // declared as final
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setFloat(java.lang.Object, float)
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setFloatLjava_lang_ObjectF() throws Exception {
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setFloat(java.lang.Object, float)
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		float val = 0.0F;
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("floatField");
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setFloat(x, (float) 1);
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getFloat(x);
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect float field value", 1.0, val, 0.0);
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setFloat(x, (float) 1);
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // float type
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("floatFField");
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setFloat(x, (float) 1);
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since floatFField is
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // declared as final
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setInt(java.lang.Object, int)
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setIntLjava_lang_ObjectI() throws Exception {
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void java.lang.reflect.Field.setInt(java.lang.Object,
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// int)
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		int val = 0;
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("intField");
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setInt(x, (int) 1);
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getInt(x);
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect int field value", 1, val);
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setInt(x, (int) 1);
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // int type
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("intFField");
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setInt(x, (int) 1);
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since intFField is declared
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // as final
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setLong(java.lang.Object, long)
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setLongLjava_lang_ObjectJ() throws Exception {
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setLong(java.lang.Object, long)
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		long val = 0L;
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("longField");
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setLong(x, (long) 1);
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getLong(x);
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect long field value", 1, val);
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setLong(x, (long) 1);
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // long type
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("longFField");
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setLong(x, (long) 1);
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since longFField is declared
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // as final
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#setShort(java.lang.Object, short)
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_setShortLjava_lang_ObjectS() throws Exception {
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method void
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.lang.reflect.Field.setShort(java.lang.Object, short)
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		TestField x = new TestField();
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Field f = null;
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		short val = 0;
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = x.getClass().getDeclaredField("shortField");
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.setShort(x, (short) 1);
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                val = f.getShort(x);
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Returned incorrect short field value", 1, val);
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("booleanField");
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setShort(x, (short) 1);
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalArgumentException ex) {
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since booleanField is not a
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // short type
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                try {
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f = x.getClass().getDeclaredField("shortFField");
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        f.setShort(x, (short) 1);
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } catch (IllegalAccessException ex) {
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // Good, Exception should be thrown since shortFField is
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        // declared as final
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return;
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Accessed field of invalid type");
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.lang.reflect.Field#toString()
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_toString() throws Exception {
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Field f = null;
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = TestField.class.getDeclaredField("x");
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(
1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Field returned incorrect string",
1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "private static final int org.apache.harmony.luni.tests.java.lang.reflect.FieldTest$TestField.x",
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.toString());
1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesclass TestAccess {
1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static int xxx;
1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
1055