1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpackage libcore.java.io;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ObjectInputStream;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_GetPutFields;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_GetPutFieldsDefaulted;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests the methods of {@code ObjectInputStream.GetField}. Three things make
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this class somewhat difficult to test:
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <ol>
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>It is a completely abstract class; none of the methods is implemented in
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectInputStream.GetField}.</li>
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>There is no public class that implements
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectInputStream.GetField}. The only way to get an implementation is
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by calling {@code ObjectInputStream.getFields()}.</li>
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <li>Invoking {@code ObjectOutputStream.getFields()} only works from within
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the private {@code readObject(ObjectInputStream)} method of a class that
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * implements {@code Serializable}; an exception is thrown otherwise.</li>
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </ol>
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Given these restrictions, an indirect approach is used to test
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code ObjectInputStream.GetField}: Three serializable helper classes in
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * package {@code tests.support} ({@code Support_GetPutFields},
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Support_GetPutFieldsDeprecated} and
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Support_GetPutFieldsDefaulted}) implement
44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * {@code readObject(ObjectInputStream)} to read data from an input stream.
45f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * This input stream in turn reads from one of the corresponding files
46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * ({@code testFields.ser}, {@code testFieldsDeprecated.ser} and
47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * {@code testFieldsDefaulted.ser}) that have been created with
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code tests.util.FieldTestFileGenerator} on a reference platform.
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p>
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The test method in this class expects to find the reference files as a
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * resource stored at {@code tests/api/java/io}.
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </p>
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
55935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldObjectInputStreamGetFieldTest extends junit.framework.TestCase {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private ObjectInputStream ois = null;
58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
59f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    private final String FILENAME =
60740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann            "/tests/api/java/io/testFields.ser";
61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    private final String DEFAULTED_FILENAME =
62740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann            "/tests/api/java/io/testFieldsDefaulted.ser";
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean booleanValue;
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte byteValue;
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public char charValue;
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int intValue;
68f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_get() throws Exception {
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(FILENAME);
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields object = (Support_GetPutFields) ois.readObject();
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields newObject = new Support_GetPutFields();
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        newObject.initTestValues();
74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertTrue("Test 1: The object read from the reference file does " +
76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                   "not match a locally created instance of the same class.",
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                   object.equals(newObject));
78f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(DEFAULTED_FILENAME);
80f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        Support_GetPutFieldsDefaulted defaulted =
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                (Support_GetPutFieldsDefaulted) ois.readObject();
82f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        Support_GetPutFieldsDefaulted newDefaulted =
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new Support_GetPutFieldsDefaulted();
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        newDefaulted.initTestValues();
85f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
86f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertTrue("Test 2: The object read from the reference file does " +
87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes                   "not match a locally created instance of the same class.",
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                   defaulted.equals(newDefaulted));
89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Executing the same procedure against the file created with the
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // deprecated ObjectOutputStream.PutFields.write(ObjectOutput) method
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // is not possible since there is no corresponding read(ObjectInput)
93f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // method. When trying to do it as in tests 1 and 2, a
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // NullPointerException is thrown.
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_defaultedLjava_lang_String() throws Exception {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(FILENAME);
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields object = (Support_GetPutFields) ois.readObject();
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ObjectInputStream.GetField fields = object.getField;
101f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.defaulted("noField");
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected.");
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertFalse("The field longValue should not be defaulted.",
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                   fields.defaulted("longValue"));
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Now the same with defaulted fields.
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(DEFAULTED_FILENAME);
112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        Support_GetPutFieldsDefaulted defaultedObject =
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            (Support_GetPutFieldsDefaulted) ois.readObject();
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        fields = defaultedObject.getField;
115f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertTrue("The field longValue should be defaulted.",
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                   fields.defaulted("longValue"));
118f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
120f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getException() throws Exception {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(FILENAME);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields object = (Support_GetPutFields) ois.readObject();
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ObjectInputStream.GetField fields = object.getField;
125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Methods called with invalid field name.
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", false);
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, boolean).");
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", (byte) 0);
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, byte).");
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", (char) 0);
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, char).");
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", 0.0);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, double).");
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", 0.0f);
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, float).");
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", (long) 0);
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, long).");
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", 0);
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, int).");
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", new Object());
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, Object).");
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("noValue", (short) 0);
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for not existing name " +
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "argument in get(String, short).");
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Methods called with correct field name but non-matching type.
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("byteValue", false);
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, boolean).");
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("booleanValue", (byte) 0);
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, byte).");
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("intValue", (char) 0);
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, char).");
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("floatValue", 0.0);
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, double).");
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("doubleValue", 0.0f);
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, float).");
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("intValue", (long) 0);
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, long).");
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("shortValue", 0);
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected for non-matching name " +
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, int).");
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("booleanValue", new Object());
226f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            fail("IllegalArgumentException expected for non-matching name " +
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, Object).");
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fields.get("longValue", (short) 0);
232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            fail("IllegalArgumentException expected for non-matching name " +
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 "and type arguments in get(String, short).");
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {}
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
236f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getObjectStreamClass() throws Exception {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        initOis(FILENAME);
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Support_GetPutFields object = (Support_GetPutFields) ois.readObject();
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull("Return value of getObjectStreamClass() should not be null.",
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                      object.getField.getObjectStreamClass());
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
243f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void initOis(String fileName) throws Exception {
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (ois != null) {
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ois.close();
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ois = new ObjectInputStream(
249740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann                    getClass().getResourceAsStream(fileName));
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
251f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (ois != null) {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ois.close();
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
260