1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.io; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.BufferedInputStream; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayInputStream; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayOutputStream; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.EOFException; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileInputStream; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileOutputStream; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.NotActiveException; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectInputStream; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectOutputStream; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectStreamClass; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OptionalDataException; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.Serializable; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.StreamCorruptedException; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Hashtable; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Vector; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_ASimpleInputStream; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_IOTestSecurityManager; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(ObjectInputStream.class) 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ObjectInputStreamTest extends junit.framework.TestCase implements 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Serializable { 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final long serialVersionUID = 1L; 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream ois; 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream oos; 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream bao; 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean readStreamHeaderCalled; 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final String testString = "Lorem ipsum..."; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final int testLength = testString.length(); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#ObjectInputStream() 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the protected ObjectInputStream() constructor.", 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ObjectInputStream", 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_Constructor() throws IOException { 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager sm = System.getSecurityManager(); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new Support_IOTestSecurityManager()); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new BasicObjectInputStream(); 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException expected."); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#ObjectInputStream(java.io.InputStream) 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ObjectInputStream", 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_io_InputStream() throws IOException { 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.ObjectInputStream(java.io.InputStream) 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeDouble(Double.MAX_VALUE); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(new byte[90])); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("StreamCorruptedException expected"); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (StreamCorruptedException e) {} 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#ObjectInputStream(java.io.InputStream) 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ObjectInputStream", 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_io_InputStream_IOException() throws IOException { 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that object can be serialized and deserialized correctly with reading descriptor from serialization stream.", 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readClassDescriptor", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that object can be serialized and deserialized correctly with reading descriptor from serialization stream.", 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObject", 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ClassDescriptor() throws IOException, 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException { 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream baos = new ByteArrayOutputStream(); 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStreamWithWriteDesc oos = new ObjectOutputStreamWithWriteDesc( 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project baos); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(String.class); 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Class<?> cls = TestClassForSerialization.class; 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStreamWithReadDesc ois = new ObjectInputStreamWithReadDesc( 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais, cls); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object obj = ois.readObject(); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(cls, obj); 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#available() 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "available", 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_available() throws IOException { 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.ObjectInputStream.available() 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes(testString); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Incorrect number of bytes;", testLength, ois.available()); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#available() 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "available", 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_available_IOException() throws IOException { 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.available(); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#close() 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_close() throws Exception { 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.io.ObjectInputStream.close() 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#defaultReadObject() 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "defaultReadObject", 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_defaultReadObject() throws Exception { 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.io.ObjectInputStream.defaultReadObject() 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // SM. This method may as well be private, as if called directly it 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws an exception. 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String s = testString; 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(s); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.defaultReadObject(); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NotActiveException expected"); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NotActiveException e) { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Desired behavior 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#enableResolveObject(boolean) 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies enableResolveObject(boolean).", 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "enableResolveObject", 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_enableResolveObjectB() throws IOException { 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Start testing without a SecurityManager. 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BasicObjectInputStream bois = new BasicObjectInputStream(); 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Test 1: Object resolving must be disabled by default.", 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.enableResolveObject(true)); 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 2: enableResolveObject did not return the previous value.", 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.enableResolveObject(false)); 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#read() 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read() throws IOException { 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.ObjectInputStream.read() 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.write('T'); 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Read incorrect byte value", 'T', ois.read()); 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#read() 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read_IOException() throws IOException { 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(); 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#read(byte[], int, int) 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$BII() throws IOException { 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.ObjectInputStream.read(byte [], int, int) 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes(testString); 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, 0, testLength); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Read incorrect bytes", testString, new String(buf)); 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#read(byte[], int, int) 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks Exceptions.", 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$BII_Exception() throws IOException { 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, 0, -1); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, -1,1); 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, testLength, 1); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, 0, testLength); 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readFields() 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectOutputStream#writeFields() 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readFields", 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {}, 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeFields", 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {}, 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ObjectOutputStream.class, 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readFields() throws Exception { 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.ObjectInputStream$GetField 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.io.ObjectInputStream.readFields() 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializableTestHelper sth; 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * "SerializableTestHelper" is an object created for these tests with 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * two fields (Strings) and simple implementations of readObject and 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * writeObject which simply read and write the first field but not the 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * second 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(new SerializableTestHelper("Gabba", "Jabba")); 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.flush(); 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sth = (SerializableTestHelper) (ois.readObject()); 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("readFields / writeFields failed--first field not set", 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Gabba", sth.getText1()); 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull( 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "readFields / writeFields failed--second field should not have been set", 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sth.getText2()); 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readFully(byte[]) 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readFully", 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readFully$B() throws IOException { 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes(testString); 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf); 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Incorrect bytes read;", 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project testString, new String(buf)); 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(); 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf); 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: EOFException expected."); 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (EOFException e) { 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readFully(byte[]) 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readFully", 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readFully$B_Exception() throws IOException { 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf); 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readFully(byte[], int, int) 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readFully", 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readFully$BII() throws IOException { 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.io.ObjectInputStream.readFully(byte [], 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int, int) 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes(testString); 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf, 0, testLength); 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Read incorrect bytes", testString, new String(buf)); 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(); 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: EOFException expected."); 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (EOFException e) { 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readFully(byte[], int, int) 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks Exceptions.", 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readFully", 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readFully$BII_Exception() throws IOException { 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf, 0, -1); 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf, -1,1); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf, testLength, 1); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException was not thrown."); 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readFully(buf, 0, 1); 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readLine() 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @SuppressWarnings("deprecation") 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readLine", 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLine() throws IOException { 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String line; 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes("Lorem\nipsum\rdolor sit amet..."); 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line = ois.readLine(); 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 1: Incorrect line written or read: " + line, 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line.equals("Lorem")); 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line = ois.readLine(); 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 2: Incorrect line written or read: " + line, 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line.equals("ipsum")); 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line = ois.readLine(); 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 3: Incorrect line written or read: " + line, 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project line.equals("dolor sit amet...")); 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readLine() 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @SuppressWarnings("deprecation") 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readLine", 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readLine_IOException() throws IOException { 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readLine(); 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readObject() 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObject", 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readObject() throws Exception { 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.lang.Object 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.io.ObjectInputStream.readObject() 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String s = testString; 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(s); 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Read incorrect Object value", s, ois.readObject()); 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for HARMONY-91 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // dynamically create serialization byte array for the next hierarchy: 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // - class A implements Serializable 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // - class C extends A 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] cName = C.class.getName().getBytes(); 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] aName = A.class.getName().getBytes(); 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream out = new ByteArrayOutputStream(); 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] begStream = new byte[] { (byte) 0xac, (byte) 0xed, // STREAM_MAGIC 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x05, // STREAM_VERSION 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x73, // TC_OBJECT 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x72, // TC_CLASSDESC 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, // only first byte for C class name length 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(begStream, 0, begStream.length); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(cName.length); // second byte for C class name length 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(cName, 0, cName.length); // C class name 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] midStream = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x21, // serialVersionUID = 33L 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x02, // flags 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x00, // fields : none 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x78, // TC_ENDBLOCKDATA 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x72, // Super class for C: TC_CLASSDESC for A class 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, // only first byte for A class name length 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(midStream, 0, midStream.length); 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(aName.length); // second byte for A class name length 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(aName, 0, aName.length); // A class name 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] endStream = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x0b, // serialVersionUID = 11L 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x02, // flags 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x01, // fields 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x4c, // field description: type L (object) 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x04, // length 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // field = 'name' 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x6e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x74, // className1: TC_STRING 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x12, // length 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x67, (byte) 0x3b, 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x78, // TC_ENDBLOCKDATA 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x70, // NULL super class for A class 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // classdata 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x74, // TC_STRING 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x00, (byte) 0x04, // length 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (byte) 0x6e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, // value 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(endStream, 0, endStream.length); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.flush(); 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read created serial. form 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream( 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.toByteArray())); 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object o = ois.readObject(); 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(C.class, o.getClass()); 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for HARMONY-846 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new ObjectInputStream() {}.readObject()); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void fillStreamHeader(byte[] buffer) { 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project short magic = java.io.ObjectStreamConstants.STREAM_MAGIC; 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project short version = java.io.ObjectStreamConstants.STREAM_VERSION; 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (buffer.length < 4) { 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("The buffer's minimal length must be 4."); 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Initialize the buffer with the correct header for object streams 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[0] = (byte) (magic >> 8); 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[1] = (byte) magic; 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[2] = (byte) (version >> 8); 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[3] = (byte) (version); 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readObjectOverride() 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies readObjectOverride().", 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObjectOverride", 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readObjectOverride() throws Exception { 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buffer = new byte[4]; 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Initialize the buffer with the correct header for object streams 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fillStreamHeader(buffer); 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 1: Check that readObjectOverride() returns null if there 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // is no input stream. 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BasicObjectInputStream bois = new BasicObjectInputStream(); 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Test 1:", bois.readObjectOverride()); 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 2: Check that readObjectOverride() throws an IOException 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if there is an input stream. 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois = new BasicObjectInputStream(new ByteArrayInputStream(buffer)); 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.readObjectOverride(); 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected."); 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) {} 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.close(); 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readObject() 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObject", 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readObjectMissingClasses() throws Exception { 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializationTest.verifySelf(new A1(), new SerializableAssert() { 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void assertDeserialized(Serializable initial, 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Serializable deserialized) { 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, ((A1) deserialized).b1.i); 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }); 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readObject() 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObject", 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readObjectCorrupt() { 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bytes = { 00, 00, 00, 0x64, 0x43, 0x48, (byte) 0xFD, 0x71, 00, 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 00, 0x0B, (byte) 0xB8, 0x4D, 0x65 }; 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bin = new ByteArrayInputStream(bytes); 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean exception = false; 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream in = new ObjectInputStream(bin); 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project in.readObject(); 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected read of corrupted stream"); 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (StreamCorruptedException e) { 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project exception = true; 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected: " + e); 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ClassNotFoundException e) { 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected: " + e); 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Expected StreamCorruptedException", exception); 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readStreamHeader() 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies readStreamHeader().", 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readStreamHeader", 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readStreamHeader() throws IOException { 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String testString = "Lorem ipsum"; 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BasicObjectInputStream bois; 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project short magic = java.io.ObjectStreamConstants.STREAM_MAGIC; 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project short version = java.io.ObjectStreamConstants.STREAM_VERSION; 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buffer = new byte[20]; 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Initialize the buffer with the correct header for object streams 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fillStreamHeader(buffer); 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.arraycopy(testString.getBytes(), 0, buffer, 4, testString.length()); 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 1: readStreamHeader should not throw a StreamCorruptedException. 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // It should get called by the ObjectInputStream constructor. 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled = false; 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois = new BasicObjectInputStream(new ByteArrayInputStream(buffer)); 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.close(); 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (StreamCorruptedException e) { 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Unexpected StreamCorruptedException."); 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 1: readStreamHeader() has not been called.", 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled); 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 2: Make the stream magic number invalid and check that 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // readStreamHeader() throws an exception. 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[0] = (byte)magic; 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[1] = (byte)(magic >> 8); 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled = false; 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois = new BasicObjectInputStream(new ByteArrayInputStream(buffer)); 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: StreamCorruptedException expected."); 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.close(); 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (StreamCorruptedException e) { 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 2: readStreamHeader() has not been called.", 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled); 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 3: Make the stream version invalid and check that 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // readStreamHeader() throws an exception. 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[0] = (byte)(magic >> 8); 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[1] = (byte)magic; 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[2] = (byte)(version); 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buffer[3] = (byte)(version >> 8); 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled = false; 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois = new BasicObjectInputStream(new ByteArrayInputStream(buffer)); 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: StreamCorruptedException expected."); 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.close(); 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (StreamCorruptedException e) { 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 3: readStreamHeader() has not been called.", 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled); 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readUnsignedByte() 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readUnsignedByte", 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readUnsignedByte() throws IOException { 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeByte(-1); 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Incorrect unsigned byte written or read.", 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 255, ois.readUnsignedByte()); 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readUnsignedByte(); 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: EOFException expected."); 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (EOFException e) { 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readUnsignedByte(); 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IOException expected."); 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readUnsignedShort() 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readUnsignedShort", 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readUnsignedShort() throws IOException { 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.ObjectInputStream.readUnsignedShort() 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeShort(-1); 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Incorrect unsigned short written or read.", 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65535, ois.readUnsignedShort()); 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readUnsignedShort(); 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: EOFException expected."); 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (EOFException e) { 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.readUnsignedShort(); 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IOException expected."); 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#resolveProxyClass(String[]) 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies resolveProxyClass(String[]).", 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "resolveProxyClass", 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String[].class} 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_resolveProxyClass() throws IOException { 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project BasicObjectInputStream bois; 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buffer = new byte[10]; 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Initialize the buffer with the header for object streams 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fillStreamHeader(buffer); 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois = new BasicObjectInputStream(new ByteArrayInputStream(buffer)); 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 1: Check that a NullPointerException is thrown 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if null is passed to the method. 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.resolveProxyClass(null); 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: NullPointerException expected."); 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (NullPointerException npe) { 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (ClassNotFoundException cnfe) { 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Unexpected ClassNotFoundException."); 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 2: Check that visible interfaces are found. 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String[] interfaces = { "java.io.Closeable", 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.lang.Cloneable" }; 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.resolveProxyClass(interfaces); 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (ClassNotFoundException cnfe) { 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: Unexpected ClassNotFoundException."); 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test 3: Check that a ClassNotFoundException is thrown if the 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // array of interfaces is not valid. 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String[] interfaces = { "java.io.Closeable", 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.io.Closeable" }; 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.resolveProxyClass(interfaces); 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail ("Test 3: ClassNotFoundException expected."); 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (ClassNotFoundException cnfe) { 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bois.close(); 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#skipBytes(int) 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "skipBytes", 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_skipBytesI() throws IOException { 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.ObjectInputStream.skipBytes(int) 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[testLength]; 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeBytes(testString); 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray())); 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.skipBytes(5); 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.read(buf, 0, 5); 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Skipped incorrect bytes", testString.substring(5, 10), 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new String(buf, 0, 5)); 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression for HARMONY-844 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectInputStream() {}.skipBytes(0); 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException expected."); 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#skipBytes(int) 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IOException.", 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "skipBytes", 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_skipBytesI_IOException() throws IOException { 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(testString); 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_ASimpleInputStream sis = new Support_ASimpleInputStream(bao.toByteArray()); 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStream(sis); 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = true; 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.skipBytes(5); 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sis.throwExceptionOnNextUse = false; 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression Test for JIRA 2192 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readObject", 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readObject_withPrimitiveClass() throws Exception { 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Make sure that system properties are set correctly 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String dir = System.getProperty("java.io.tmpdir"); 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (dir == null) 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new Exception("System property java.io.tmpdir not defined."); 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File file = new File(dir, "test.ser"); 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file.deleteOnExit(); 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Test test = new Test(); 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file)); 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.writeObject(test); 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Test another = (Test) in.readObject(); 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project in.close(); 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(test, another); 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class A implements Serializable { 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 11L; 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String name = "name"; 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class B extends A {} 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class C extends B { 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 33L; 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class A1 implements Serializable { 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final long serialVersionUID = 5942584913446079661L; 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project B1 b1 = new B1(); 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project B1 b2 = b1; 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Vector v = new Vector(); 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class B1 implements Serializable { 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = 5; 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Hashtable h = new Hashtable(); 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public class SerializableTestHelper implements Serializable { 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String aField1; 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String aField2; 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializableTestHelper() { 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField1 = null; 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField2 = null; 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializableTestHelper(String s, String t) { 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField1 = s; 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField2 = t; 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void readObject(ObjectInputStream ois) throws Exception { 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // note aField2 is not read 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream.GetField fields = ois.readFields(); 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField1 = (String) fields.get("aField1", "Zap"); 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void writeObject(ObjectOutputStream oos) throws IOException { 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // note aField2 is not written 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream.PutField fields = oos.putFields(); 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("aField1", aField1); 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeFields(); 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getText1() { 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return aField1; 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setText1(String s) { 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField1 = s; 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getText2() { 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return aField2; 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setText2(String s) { 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project aField2 = s; 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class BasicObjectInputStream extends ObjectInputStream { 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public BasicObjectInputStream() throws IOException, SecurityException { 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public BasicObjectInputStream(InputStream input) 1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws StreamCorruptedException, IOException { 1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(input); 1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean enableResolveObject(boolean enable) 1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws SecurityException { 1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.enableResolveObject(enable); 1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object readObjectOverride() throws OptionalDataException, 1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException, IOException { 1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.readObjectOverride(); 1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void readStreamHeader() throws IOException, 1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StreamCorruptedException { 1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project readStreamHeaderCalled = true; 1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.readStreamHeader(); 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Class<?> resolveProxyClass(String[] interfaceNames) 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException, ClassNotFoundException { 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.resolveProxyClass(interfaceNames); 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //Regression Test for JIRA-2249 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ObjectOutputStreamWithWriteDesc extends 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream { 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectOutputStreamWithWriteDesc(OutputStream os) 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(os); 1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void writeClassDescriptor(ObjectStreamClass desc) 1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ObjectInputStreamWithReadDesc extends 1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream { 1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Class returnClass; 1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectInputStreamWithReadDesc(InputStream is, Class returnClass) 1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(is); 1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.returnClass = returnClass; 1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectStreamClass readClassDescriptor() throws IOException, 1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException { 1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ObjectStreamClass.lookup(returnClass); 1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class TestClassForSerialization implements Serializable { 1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 1L; 1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression Test for JIRA-2340 1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ObjectOutputStreamWithWriteDesc1 extends 1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream { 1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectOutputStreamWithWriteDesc1(OutputStream os) 1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(os); 1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void writeClassDescriptor(ObjectStreamClass desc) 1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.writeClassDescriptor(desc); 1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ObjectInputStreamWithReadDesc1 extends 1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream { 1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectInputStreamWithReadDesc1(InputStream is) 1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(is); 1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectStreamClass readClassDescriptor() throws IOException, 1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException { 1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.readClassDescriptor(); 1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for Harmony-1921 1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ObjectInputStreamWithResolve extends ObjectInputStream { 1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectInputStreamWithResolve(InputStream in) throws IOException { 1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(in); 1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected Class<?> resolveClass(ObjectStreamClass desc) 1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException, ClassNotFoundException { 1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (desc.getName().equals( 1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "org.apache.harmony.luni.tests.pkg1.TestClass")) { 1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return org.apache.harmony.luni.tests.pkg2.TestClass.class; 1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.resolveClass(desc); 1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "No IOException testing since this seems not to be thrown.", 1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "resolveClass", 1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.ObjectStreamClass.class} 1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_resolveClass() throws Exception { 1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project org.apache.harmony.luni.tests.pkg1.TestClass to1 = new org.apache.harmony.luni.tests.pkg1.TestClass(); 1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project to1.i = 555; 1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream baos = new ByteArrayOutputStream(); 1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream oos = new ObjectOutputStream(baos); 1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(to1); 1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.flush(); 1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bytes = baos.toByteArray(); 1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream ois = new ObjectInputStreamWithResolve(bais); 1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project org.apache.harmony.luni.tests.pkg2.TestClass to2 = (org.apache.harmony.luni.tests.pkg2.TestClass) ois 1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .readObject(); 1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (to2.i != to1.i) { 1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Wrong object read. Expected val: " + to1.i + ", got: " + to2.i); 1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class ObjectInputStreamWithResolveObject extends ObjectInputStream { 1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static Integer intObj = Integer.valueOf(1000); 1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ObjectInputStreamWithResolveObject(InputStream in) throws IOException { 1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(in); 1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enableResolveObject(true); 1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected Object resolveObject(Object obj) throws IOException { 1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if(obj instanceof Integer){ 1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj = intObj; 1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.resolveObject(obj); 1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#resolveObject(Object) 1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "resolveObject", 1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_resolveObjectLjava_lang_Object() throws Exception { 1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Write an Integer object into memory 1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Integer original = new Integer(10); 1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream baos = new ByteArrayOutputStream(); 1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream oos = new ObjectOutputStream(baos); 1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeObject(original); 1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.flush(); 1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Read the object from memory 1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bytes = baos.toByteArray(); 1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStreamWithResolveObject ois = 1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectInputStreamWithResolveObject(bais); 1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Integer actual = (Integer) ois.readObject(); 1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // object should be resolved from 10 to 1000 1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(ObjectInputStreamWithResolveObject.intObj, actual); 1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectInputStream#readClassDescriptor() 1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.ObjectOutputStream#writeClassDescriptor(ObjectStreamClass) 1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets( 1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readClassDescriptor", 1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {}, 1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE 1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "writeClassDescriptor", 1347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {ObjectStreamClass.class}, 1348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ObjectOutputStream.class, 1349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE 1350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_readClassDescriptor() throws IOException, 1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException { 1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream baos = new ByteArrayOutputStream(); 1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStreamWithWriteDesc1 oos = new ObjectOutputStreamWithWriteDesc1( 1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project baos); 1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectStreamClass desc = ObjectStreamClass 1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .lookup(TestClassForSerialization.class); 1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.writeClassDescriptor(desc); 1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos.close(); 1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bytes = baos.toByteArray(); 1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStreamWithReadDesc1 ois = new ObjectInputStreamWithReadDesc1( 1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais); 1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object obj = ois.readClassDescriptor(); 1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(desc.getClass(), obj.getClass()); 1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //eof 1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais = new ByteArrayInputStream(bytes); 1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExceptionalBufferedInputStream bis = new ExceptionalBufferedInputStream( 1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais); 1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStreamWithReadDesc1(bis); 1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bis.setEOF(true); 1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj = ois.readClassDescriptor(); 1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //e.printStackTrace(); 1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //throw exception 1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais = new ByteArrayInputStream(bytes); 1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bis = new ExceptionalBufferedInputStream(bais); 1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStreamWithReadDesc1(bis); 1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bis.setException(new IOException()); 1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj = ois.readClassDescriptor(); 1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //e.printStackTrace(); 1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //corrupt 1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bais = new ByteArrayInputStream(bytes); 1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bis = new ExceptionalBufferedInputStream(bais); 1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois = new ObjectInputStreamWithReadDesc1(bis); 1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bis.setCorrupt(true); 1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj = ois.readClassDescriptor(); 1412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 1413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //e.printStackTrace(); 1414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.close(); 1416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class ExceptionalBufferedInputStream extends BufferedInputStream { 1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean eof = false; 1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private IOException exception = null; 1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean corrupt = false; 1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ExceptionalBufferedInputStream(InputStream in) { 1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(in); 1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int read() throws IOException { 1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (exception != null) { 1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw exception; 1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (eof) { 1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return -1; 1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (corrupt) { 1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.read(); 1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setEOF(boolean eof) { 1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.eof = eof; 1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setException(IOException exception) { 1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.exception = exception; 1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setCorrupt(boolean corrupt) { 1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.corrupt = corrupt; 1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression Test for Harmony-2402 1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "registerValidation", 1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.ObjectInputValidation.class, int.class} 1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_registerValidation() throws Exception { 1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream baos = new ByteArrayOutputStream(); 1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectOutputStream(baos); 1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream ois = new ObjectInputStream( 1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ByteArrayInputStream(baos.toByteArray())); 1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ois.registerValidation(null, 256); 1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NotActiveException should be thrown"); 1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NotActiveException nae) { 1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project oos = new ObjectOutputStream(bao = new ByteArrayOutputStream()); 1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass Test implements Serializable { 1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 1L; 1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Class<?> classes[] = new Class[] { byte.class, short.class, int.class, 1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project long.class, boolean.class, char.class, float.class, double.class }; 1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals(Object o) { 1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!(o instanceof Test)) { 1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return Arrays.equals(classes, ((Test) o).classes); 1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1498