/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.harmony.tests.java.io;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InvalidClassException;
import java.io.NotActiveException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.ObjectStreamConstants;
import java.io.ObjectStreamField;
import java.io.OptionalDataException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
@SuppressWarnings({ "serial", "unused" })
public class SerializationStressTest2 extends SerializationStressTest {
private static class ReadWriteObjectAndPrimitiveData implements
java.io.Serializable {
transient long milliseconds;
public boolean calledWriteObject = false;
public boolean calledReadObject = false;
public ReadWriteObjectAndPrimitiveData() {
super();
}
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException {
in.defaultReadObject();
// This *has* to come after the call to defaultReadObject or the
// value from the stream will override
calledReadObject = true;
milliseconds = in.readLong();
}
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException {
calledWriteObject = true;
out.defaultWriteObject();
out.writeLong(milliseconds);
}
}
// What happens if a class defines serialPersistentFields that do not match
// real fields but does not override read/writeObject
private static class WithUnmatchingSerialPersistentFields implements
java.io.Serializable {
private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
"value", String.class) };
public int anInstanceVar = 5;
public WithUnmatchingSerialPersistentFields() {
super();
}
}
// What happens if a class defines serialPersistentFields which match actual
// fields
private static class WithMatchingSerialPersistentFields implements
java.io.Serializable {
private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
"anInstanceVar", String.class) };
public String anInstanceVar = FOO + FOO;
public WithMatchingSerialPersistentFields() {
super();
}
}
// Tests the oficial behavior for serialPersistentFields
private static class SerialPersistentFields implements java.io.Serializable {
private static final String SIMULATED_FIELD_NAME = "text";
private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
SIMULATED_FIELD_NAME, String.class) };
public int anInstanceVar = 5;
public SerialPersistentFields() {
super();
}
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException {
ObjectInputStream.GetField fields = in.readFields();
anInstanceVar = Integer.parseInt((String) fields.get(
SIMULATED_FIELD_NAME, "-5"));
}
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException, ClassNotFoundException {
ObjectOutputStream.PutField fields = out.putFields();
fields.put(SIMULATED_FIELD_NAME, Integer.toString(anInstanceVar));
out.writeFields();
}
}
// Tests the behavior for serialPersistentFields when no fields are actually
// set
private static class WriteFieldsWithoutFetchingPutFields implements
java.io.Serializable {
private static final String SIMULATED_FIELD_NAME = "text";
private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
SIMULATED_FIELD_NAME, String.class) };
public int anInstanceVar = 5;
public WriteFieldsWithoutFetchingPutFields() {
super();
}
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException {
ObjectInputStream.GetField fields = in.readFields();
}
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException, ClassNotFoundException {
out.writeFields();
}
}
// Tests what happens if one asks for PutField/getField when the class does
// not declare one
private static class SerialPersistentFieldsWithoutField implements
java.io.Serializable {
public int anInstanceVar = 5;
public SerialPersistentFieldsWithoutField() {
super();
}
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException {
ObjectInputStream.GetField fields = in.readFields();
}
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException, ClassNotFoundException {
ObjectOutputStream.PutField fields = out.putFields();
out.writeFields();
}
}
// -----------------------------------------------------------------------------------
// writeObject writes extra primitive types and objects which readObject
// does not consume. Have to make sure we can load object properly AND
// object after it (to show the extra byte[] is consumed)
private static class OptionalDataNotRead implements java.io.Serializable {
private int field1, field2;
public OptionalDataNotRead() {
}
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("field1", Integer.TYPE),
new ObjectStreamField("field2", Integer.TYPE),
new ObjectStreamField("monthLength", byte[].class), };
private void writeObject(ObjectOutputStream stream) throws IOException {
ObjectOutputStream.PutField fields = stream.putFields();
fields.put("field1", 1);
fields.put("field2", 2);
fields.put("monthLength", new byte[] { 7, 8, 9 });
stream.writeFields();
stream.writeInt(4);
byte[] values = new byte[4];
values[0] = (byte) 16;
values[1] = (byte) 17;
values[2] = (byte) 18;
values[3] = (byte) 19;
stream.writeObject(values);
}
private void readObject(ObjectInputStream stream) throws IOException,
ClassNotFoundException {
ObjectInputStream.GetField fields = stream.readFields();
field1 = fields.get("field1", 0);
field2 = fields.get("field1", 0);
}
}
// -----------------------------------------------------------------------------------
private static class NestedPutField implements java.io.Serializable {
public OptionalDataNotRead field1;
public NestedPutField() {
}
private static final ObjectStreamField[] serialPersistentFields = { new ObjectStreamField(
"field1", OptionalDataNotRead.class), };
private void writeObject(ObjectOutputStream stream) throws IOException {
ObjectOutputStream.PutField fields = stream.putFields();
fields.put("field1", new OptionalDataNotRead());
stream.writeFields();
}
private void readObject(ObjectInputStream stream) throws IOException,
ClassNotFoundException {
ObjectInputStream.GetField fields = stream.readFields();
field1 = (OptionalDataNotRead) fields.get("field1", null);
}
}
// -----------------------------------------------------------------------------------
// This one tests stream-based replacement when dumping
private static class StreamBasedReplacementWhenDumping extends
java.io.ObjectOutputStream {
public boolean calledArrayReplacement = false;
public boolean calledStringReplacement = false;
public boolean calledClassReplacement = false;
public boolean calledObjectStreamClassReplacement = false;
public StreamBasedReplacementWhenDumping(java.io.OutputStream output)
throws java.io.IOException {
super(output);
enableReplaceObject(true);
}
protected Object replaceObject(Object obj) throws IOException {
Class objClass = obj.getClass();
if (objClass == String.class)
calledStringReplacement = true;
if (objClass == Class.class)
calledClassReplacement = true;
if (objClass == ObjectStreamClass.class)
calledObjectStreamClassReplacement = true;
if (objClass.isArray())
calledArrayReplacement = true;
return obj;
}
}
// -----------------------------------------------------------------------------------
private static class ArrayOfSerializable implements Serializable {
private Serializable[] testField = null;
public ArrayOfSerializable() {
testField = new Serializable[2];
testField[0] = "Hi";
testField[1] = "there!";
}
}
// -----------------------------------------------------------------------------------
private static class ClassSubClassTest0 extends java.lang.Object implements
java.io.Serializable {
String stringVar;
public ClassSubClassTest0(String init) {
stringVar = init;
}
}
private static class ClassSubClassTest1 extends ClassSubClassTest0 {
String subStringVar;
public ClassSubClassTest1(String superString, String subString) {
super(superString);
subStringVar = subString;
}
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof ClassSubClassTest1))
return false;
ClassSubClassTest1 inst = (ClassSubClassTest1) obj;
return inst.subStringVar.equals(this.subStringVar)
&& inst.stringVar.equals(this.stringVar);
}
}
// -----------------------------------------------------------------------------------
private static class ConstructorTestA {
public String instVar_classA;
public final static String ConstrA = "Init in Constructor Class A";
public final static String ConstrB = "Init in Constructor Class B";
public final static String ConstrC = "Init in Constructor Class C";
public final static String ChangedC = "Changed before Serialize - Class C";
public ConstructorTestA() {
instVar_classA = ConstrA;
}
}
private static class ConstructorTestB extends ConstructorTestA implements
java.io.Serializable {
public String instVar_classB;
public ConstructorTestB() {
instVar_classA = ConstrB;
instVar_classB = ConstrB;
}
}
private static class ConstructorTestC extends ConstructorTestB {
public String instVar_classC;
public ConstructorTestC() {
instVar_classA = ConstrC;
instVar_classB = ConstrC;
instVar_classC = ConstrC;
}
public boolean verify(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof ConstructorTestC))
return false;
ConstructorTestC inst = (ConstructorTestC) obj;
return inst.instVar_classC.equals(this.instVar_classC)
&& inst.instVar_classB.equals(this.instVar_classB)
&& inst.instVar_classA.equals(ConstrA);
}
}
// -----------------------------------------------------------------------------------
private static class HashCodeTest implements java.io.Serializable {
private boolean serializationUsesHashCode = false;
public int hashCode() {
serializationUsesHashCode = true;
return super.hashCode();
}
}
// -----------------------------------------------------------------------------------
private static class InitializerFieldsTest implements java.io.Serializable {
public java.lang.String toBeSerialized;
public static java.lang.String toBeNotSerialized;
public static java.lang.String toBeNotSerialized2;
{
toBeSerialized = "NonStaticInitialValue";
}
static {
toBeNotSerialized = "StaticInitialValue";
toBeNotSerialized2 = new String(toBeNotSerialized);
}
public boolean equals(Object obj) {
/*
* This method is not answering it the objs is equal. It is
* answering if the vars have the value that it have to have after
* dumping and loading
*/
if (obj == null)
return false;
if (!(obj instanceof InitializerFieldsTest))
return false;
InitializerFieldsTest inst = (InitializerFieldsTest) obj;
return inst.toBeSerialized.equals(this.toBeSerialized)
&& InitializerFieldsTest.toBeNotSerialized.equals(toBeNotSerialized2);
}
}
private static class InitializerFieldsTest2 implements java.io.Serializable {
public java.lang.String toBeSerialized;
public static java.lang.String toBeNotSerialized;
public static java.lang.String toBeNotSerialized2;
{
toBeSerialized = "NonStaticInitialValue";
}
public java.lang.String toBeSerialized3;
public java.lang.String toBeSerialized4;
static {
toBeNotSerialized = "StaticInitialValue";
toBeNotSerialized2 = new String(toBeNotSerialized);
}
public java.lang.String toBeSerialized5;
public boolean equals(Object obj) {
/*
* This method is not answering it the objs is equal. It is
* answering if the vars have the value that it have to have after
* dumping and loading
*/
if (obj == null)
return false;
if (!(obj instanceof InitializerFieldsTest2))
return false;
InitializerFieldsTest2 inst = (InitializerFieldsTest2) obj;
return inst.toBeSerialized.equals(this.toBeSerialized)
&& inst.toBeSerialized3.equals(this.toBeSerialized3)
&& inst.toBeSerialized4.equals(this.toBeSerialized4)
&& inst.toBeSerialized5.equals(this.toBeSerialized5)
&& InitializerFieldsTest2.toBeNotSerialized.equals(toBeNotSerialized2);
}
}
private static class InitializerFieldsTest3 extends InitializerFieldsTest2
implements java.io.Serializable {
public java.lang.String sub_toBeSerialized;
public static java.lang.String sub_toBeNotSerialized;
public static java.lang.String sub_toBeNotSerialized2;
{
sub_toBeSerialized = "NonStaticInitialValue";
}
public java.lang.String sub_toBeSerialized3;
public java.lang.String sub_toBeSerialized4;
static {
sub_toBeNotSerialized = "StaticInitialValue";
sub_toBeNotSerialized2 = new String(sub_toBeNotSerialized);
}
public java.lang.String sub_toBeSerialized5;
public boolean equals(Object obj) {
/*
* This method is not answering it the objs is equal. It is
* answering if the vars have the value that it have to have after
* dumping and loading
*/
if (!super.equals(obj))
return false;
if (!(obj instanceof InitializerFieldsTest3))
return false;
InitializerFieldsTest3 inst = (InitializerFieldsTest3) obj;
return inst.sub_toBeSerialized.equals(this.sub_toBeSerialized)
&& inst.sub_toBeSerialized3
.equals(this.sub_toBeSerialized3)
&& inst.sub_toBeSerialized4
.equals(this.sub_toBeSerialized4)
&& inst.sub_toBeSerialized5
.equals(this.sub_toBeSerialized5)
&& InitializerFieldsTest3.sub_toBeNotSerialized
.equals(sub_toBeNotSerialized2);
}
}
// -----------------------------------------------------------------------------------
private static class DeepNesting implements java.io.Serializable {
public float id;
public DeepNesting next;
public boolean dump;
public boolean load;
public DeepNesting(float id) {
this.id = id;
next = null;
dump = false;
load = false;
}
public DeepNesting(int howMany) {
DeepNesting prev = new DeepNesting(0.0F);
next(prev);
for (int i = 1; i < howMany; i++) {
prev = prev.next(new DeepNesting(i * 1.0F));
}
}
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof DeepNesting))
return false;
DeepNesting inst = (DeepNesting) obj;
if (inst.dump != this.dump || inst.load != this.load)
return false;
if (inst.next == null || this.next == null)
return inst.next == this.next; // both null
return this.next.equals(inst.next);
}
public DeepNesting next(DeepNesting ivt) {
next = ivt;
return ivt;
}
}
// -----------------------------------------------------------------------------------
private static class DeepNestingWithWriteObject implements
java.io.Serializable {
public float id;
public DeepNestingWithWriteObject next;
public boolean dump;
public boolean load;
public DeepNestingWithWriteObject(float id) {
this.id = id;
next = null;
dump = false;
load = false;
}
public DeepNestingWithWriteObject(int howMany) {
DeepNestingWithWriteObject prev = new DeepNestingWithWriteObject(
0.0F);
next(prev);
for (int i = 1; i < howMany; i++) {
prev = prev.next(new DeepNestingWithWriteObject(i * 1.0F));
}
}
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof DeepNestingWithWriteObject))
return false;
DeepNestingWithWriteObject inst = (DeepNestingWithWriteObject) obj;
if (inst.dump != this.dump || inst.load != this.load)
return false;
if (inst.next == null || this.next == null)
return inst.next == this.next; // both null;
return this.next.equals(inst.next);
}
public DeepNestingWithWriteObject next(DeepNestingWithWriteObject ivt) {
next = ivt;
return ivt;
}
private void writeObject(java.io.ObjectOutputStream s)
throws IOException {
s.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
s.defaultReadObject();
}
}
// -----------------------------------------------------------------------------------
static class NonPublicClassTest extends java.lang.Object implements
java.io.Serializable {
int field = 1;
public NonPublicClassTest() {
field = 10;
}
public boolean equals(Object o) {
if (o instanceof NonPublicClassTest)
return field == ((NonPublicClassTest) o).field;
return false;
}
public void x10() {
field *= 10;
}
}
// -----------------------------------------------------------------------------------
private static class SameInstVarNameSuperClass {
private int foo;
public SameInstVarNameSuperClass() {
super();
}
public SameInstVarNameSuperClass(int fooValue) {
foo = fooValue;
}
public String toString() {
return "foo = " + foo;
}
}
private static class SameInstVarNameSubClass extends
SameInstVarNameSuperClass implements java.io.Serializable {
protected int foo;
public SameInstVarNameSubClass() {
super();
}
public SameInstVarNameSubClass(int fooValue) {
super(-fooValue);
foo = fooValue;
}
}
// -----------------------------------------------------------------------------------
private static class SInterfaceTest implements java.io.Serializable {
public static int staticVar = 5;
public transient int[] transVar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
public int instanceVar = 7;
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof SInterfaceTest))
return false;
SInterfaceTest inst = (SInterfaceTest) obj;
if (this.instanceVar != inst.instanceVar)
return false;
if (inst.transVar == null || this.transVar == null)
return inst.transVar == this.transVar; // both null
for (int i = 0; i < transVar.length; i++)
if (inst.transVar[i] != this.transVar[i])
return false;
return true;
}
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
Object arr;
s.defaultReadObject();
arr = s.readObject();
transVar = (int[]) arr;
}
private void writeObject(java.io.ObjectOutputStream s)
throws IOException {
s.defaultWriteObject();
s.writeObject(transVar);
}
public void x10() {
for (int i = 0; i < transVar.length; i++)
transVar[i] = transVar[i] * 10;
instanceVar = instanceVar * 10;
}
}
// -----------------------------------------------------------------------------------
private static class SInterfaceTest2 extends SInterfaceTest {
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
Object arr;
instanceVar = s.readInt();
arr = s.readObject();
transVar = (int[]) arr;
}
private void writeObject(java.io.ObjectOutputStream s)
throws IOException {
s.writeInt(instanceVar);
s.writeObject(transVar);
}
}
// -----------------------------------------------------------------------------------
private static class SuperclassTest extends java.lang.Object implements
java.io.Serializable {
int superfield = 1;
public SuperclassTest() {
superfield = 10;
}
public boolean equals(Object o) {
if (o.getClass() == this.getClass())
return superfield == ((SuperclassTest) o).superfield;
return false;
}
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
superfield = s.readInt();
}
private void writeObject(java.io.ObjectOutputStream s)
throws IOException {
s.writeInt(superfield);
}
public void x10() {
superfield *= 10;
}
}
// -----------------------------------------------------------------------------------
private static class SuperclassTest2 extends SuperclassTest {
int subfield = 5;
public SuperclassTest2() {
subfield = 50;
}
public boolean equals(Object o) {
if (o instanceof SuperclassTest2)
if (subfield == ((SuperclassTest2) o).subfield)
return super.equals(o);
return false;
}
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
subfield = s.readInt();
}
private void writeObject(java.io.ObjectOutputStream s)
throws IOException {
s.writeInt(subfield);
}
public void x10() {
subfield *= 10;
super.x10();
}
}
// -----------------------------------------------------------------------------------
private static class SyntheticFieldTest implements java.io.Serializable {
public boolean equals(Object obj) {
/*
* This method is not answering it the objs is equal. It is
* answering if the vars have the value that it have to have after
* dumping and loading
*/
if (obj == null)
return false;
return obj instanceof SyntheticFieldTest;
}
public int hashCode() {
// Insert code to generate a hash code for the receiver here.
// This implementation forwards the message to super. You may
// replace or supplement this.
// NOTE: if two objects are equal (equals Object) returns true) they
// must have the same hash code
Class[] c = { String.class }; // *** synthetic field
return super.hashCode();
}
}
public SerializationStressTest2(String name) {
super(name);
}
public void test_18_41_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
java.io.IOException ex = new java.io.WriteAbortedException(FOO,
null);
objToSave = ex;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to be able to save/load an exception
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_42_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
WithUnmatchingSerialPersistentFields spf = new WithUnmatchingSerialPersistentFields();
objToSave = spf;
if (DEBUG)
System.out.println("Obj = " + objToSave);
boolean causedException = false;
try {
objLoaded = dumpAndReload(objToSave);
} catch (InvalidClassException ce) {
causedException = true;
}
assertTrue("serialPersistentFields do not match real fields",
causedException);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_43_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
WithMatchingSerialPersistentFields spf = new WithMatchingSerialPersistentFields();
spf.anInstanceVar = FOO;
objToSave = spf;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
assertTrue(
"serialPersistentFields do not work properly in this implementation",
FOO
.equals(((WithMatchingSerialPersistentFields) objLoaded).anInstanceVar));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_44_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SerialPersistentFields spf = new SerialPersistentFields();
final int CONST = -500;
spf.anInstanceVar = CONST;
objToSave = spf;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
assertTrue(
"serialPersistentFields do not work properly in this implementation",
((SerialPersistentFields) objLoaded).anInstanceVar == CONST);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_45_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
WriteFieldsWithoutFetchingPutFields spf = new WriteFieldsWithoutFetchingPutFields();
objToSave = spf;
if (DEBUG)
System.out.println("Obj = " + objToSave);
boolean causedException = false;
try {
objLoaded = dumpAndReload(objToSave);
} catch (NotActiveException ce) {
causedException = true;
}
assertTrue("WriteFieldsWithoutFetchingPutFields", causedException);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_46_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
objToSave = SerialPersistentFields.class; // Test for 1FA7TA6
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to be able to save/load an exception
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_47_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
objToSave = ObjectStreamClass.lookup(SerialPersistentFields.class); // Test
// for
// 1FA7TA6
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to be able to save/load an exception
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_48_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SerialPersistentFieldsWithoutField spf = new SerialPersistentFieldsWithoutField();
final int CONST = -500;
spf.anInstanceVar = CONST;
objToSave = spf;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
assertTrue(
"serialPersistentFields do not work properly in this implementation",
((SerialPersistentFieldsWithoutField) objLoaded).anInstanceVar != CONST);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_51_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ReadWriteObjectAndPrimitiveData readWrite = new ReadWriteObjectAndPrimitiveData();
objToSave = readWrite;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// has to have called the writeObject on the instance to dump
assertTrue(MSG_TEST_FAILED + objToSave, readWrite.calledWriteObject);
// has to have called the readObject on the instance loaded
assertTrue(
MSG_TEST_FAILED + objToSave,
((ReadWriteObjectAndPrimitiveData) objLoaded).calledReadObject);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_52_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ArrayList list = new ArrayList<String>(Arrays.asList(new String[] { "a",
"list", "of", "strings" }));
objToSave = list;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_53_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
objToSave = Locale.CHINESE;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_OptionalDataNotRead() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
OptionalDataNotRead test = new OptionalDataNotRead();
// Have to save an object after the one above, and when we read it,
// it cannot be a byte[]
Date now = new Date();
Object[] twoObjects = new Object[2];
twoObjects[0] = test;
twoObjects[1] = now;
objToSave = twoObjects;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
Object[] twoLoadedObjects = (Object[]) objLoaded;
assertTrue(MSG_TEST_FAILED + objToSave, twoLoadedObjects[0]
.getClass() == OptionalDataNotRead.class);
assertTrue(MSG_TEST_FAILED + objToSave, twoLoadedObjects[1]
.getClass() == Date.class);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_55_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
Object[] threeObjects = new Object[3];
threeObjects[0] = new Integer(2);
threeObjects[1] = Date.class;
threeObjects[2] = threeObjects[0]; // has to be the same
objToSave = threeObjects;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
Object[] threeLoadedObjects = (Object[]) objLoaded;
assertTrue(MSG_TEST_FAILED + objToSave, threeLoadedObjects[0]
.getClass() == Integer.class);
assertTrue(MSG_TEST_FAILED + objToSave,
threeLoadedObjects[1] == Date.class);
assertTrue(MSG_TEST_FAILED + objToSave,
threeLoadedObjects[0] == threeLoadedObjects[2]);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_56_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
// Test for 1FD24BY
NestedPutField test = new NestedPutField();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertNotNull(MSG_TEST_FAILED + objToSave,
((NestedPutField) objLoaded).field1);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_57_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ByteArrayOutputStream out;
StreamBasedReplacementWhenDumping streamBasedReplacementWhenDumping;
out = new ByteArrayOutputStream();
streamBasedReplacementWhenDumping = new StreamBasedReplacementWhenDumping(out);
objToSave = FOO.getClass();
if (DEBUG)
System.out.println("Obj = " + objToSave);
streamBasedReplacementWhenDumping.writeObject(objToSave);
// Has to have run the replacement method
assertTrue(streamBasedReplacementWhenDumping.calledClassReplacement);
} catch (IOException e) {
fail("Exception serializing " + objToSave + "\t->"
+ e.toString());
} catch (Error err) {
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_18_58_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ByteArrayOutputStream out;
StreamBasedReplacementWhenDumping streamBasedReplacementWhenDumping;
out = new ByteArrayOutputStream();
streamBasedReplacementWhenDumping = new StreamBasedReplacementWhenDumping(
out);
objToSave = ObjectStreamClass.lookup(FOO.getClass());
if (DEBUG)
System.out.println("Obj = " + objToSave);
streamBasedReplacementWhenDumping.writeObject(objToSave);
// Has to have run the replacement method
assertTrue(streamBasedReplacementWhenDumping.calledObjectStreamClassReplacement);
} catch (IOException e) {
fail("Exception serializing " + objToSave + "\t->"
+ e.toString());
} catch (Error err) {
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_18_59_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ByteArrayOutputStream out;
StreamBasedReplacementWhenDumping streamBasedReplacementWhenDumping;
out = new ByteArrayOutputStream();
streamBasedReplacementWhenDumping = new StreamBasedReplacementWhenDumping(
out);
;
objToSave = new int[3];
if (DEBUG)
System.out.println("Obj = " + objToSave);
streamBasedReplacementWhenDumping.writeObject(objToSave);
// Has to have run the replacement method
assertTrue("DId not execute replacement when it should: "
+ objToSave,
streamBasedReplacementWhenDumping.calledArrayReplacement);
} catch (IOException e) {
fail("Exception serializing " + objToSave + "\t->"
+ e.toString());
} catch (Error err) {
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_18_60_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ByteArrayOutputStream out;
StreamBasedReplacementWhenDumping streamBasedReplacementWhenDumping;
out = new ByteArrayOutputStream();
streamBasedReplacementWhenDumping = new StreamBasedReplacementWhenDumping(
out);
;
objToSave = FOO;
if (DEBUG)
System.out.println("Obj = " + objToSave);
streamBasedReplacementWhenDumping.writeObject(objToSave);
// Has to have run the replacement method
assertTrue("Did not execute replacement when it should: "
+ objToSave,
streamBasedReplacementWhenDumping.calledStringReplacement);
} catch (IOException e) {
fail("Exception serializing " + objToSave + "\t->"
+ e.toString());
} catch (Error err) {
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_18_61_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ArrayOfSerializable test = new ArrayOfSerializable();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, true);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_62_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ClassSubClassTest1 test = new ClassSubClassTest1(
"SuperInitialString", "SubInitialString");
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_63_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
ConstructorTestC test = new ConstructorTestC();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.verify(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_64_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
HashCodeTest test = new HashCodeTest();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave,
!((HashCodeTest) objLoaded).serializationUsesHashCode);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_65_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
InitializerFieldsTest test = new InitializerFieldsTest();
test.toBeSerialized = "serializing";
InitializerFieldsTest.toBeNotSerialized = "It should not have this value after loaded from a File";
InitializerFieldsTest.toBeNotSerialized2 = "Good-This is the rigth value.";
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
dump(objToSave);
InitializerFieldsTest.toBeNotSerialized = new String(
InitializerFieldsTest.toBeNotSerialized2);
objLoaded = reload();
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_66_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
InitializerFieldsTest2 test = new InitializerFieldsTest2();
test.toBeSerialized = "serializing";
test.toBeSerialized3 = "serializing3";
test.toBeSerialized4 = "serializing4";
test.toBeSerialized5 = "serializing5";
InitializerFieldsTest2.toBeNotSerialized = "It should not have this value after loaded from a File";
InitializerFieldsTest2.toBeNotSerialized2 = "Good-This is the rigth value.";
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
dump(objToSave);
InitializerFieldsTest2.toBeNotSerialized = new String(
InitializerFieldsTest2.toBeNotSerialized2);
objLoaded = reload();
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_67_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
InitializerFieldsTest3 test = new InitializerFieldsTest3();
test.toBeSerialized = "serializing";
test.toBeSerialized3 = "serializing3";
test.toBeSerialized4 = "serializing4";
test.toBeSerialized5 = "serializing5";
InitializerFieldsTest2.toBeNotSerialized = "It should not have this value after loaded from a File";
InitializerFieldsTest2.toBeNotSerialized2 = "Good-This is the rigth value.";
test.sub_toBeSerialized = "serializingSub";
test.sub_toBeSerialized3 = "serializing3sub";
test.sub_toBeSerialized4 = "serializing4sub";
test.sub_toBeSerialized5 = "serializing5sub";
InitializerFieldsTest3.sub_toBeNotSerialized = "(Subclass) It should not have this value after loaded from a File";
InitializerFieldsTest3.sub_toBeNotSerialized2 = "(Subclass) Good-This is the rigth value.";
// Before dumping the two static vars are differents.
// After dumping the value of toBeNotSerialized2 is put in
// toBeNotSerialized
// After loading it must be the same.
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
dump(objToSave);
InitializerFieldsTest2.toBeNotSerialized = new String(
InitializerFieldsTest2.toBeNotSerialized2);
InitializerFieldsTest3.sub_toBeNotSerialized = new String(
InitializerFieldsTest3.sub_toBeNotSerialized2);
objLoaded = reload();
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_DeepNesting() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
DeepNesting test = new DeepNesting(25);
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
// err.printStackTrace();
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_DeepNestingWithWriteObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
DeepNestingWithWriteObject test = new DeepNestingWithWriteObject(10);
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
// err.printStackTrace();
System.out.println("Error " + err + " when obj = " + objToSave);
throw err;
}
}
public void test_18_69_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
NonPublicClassTest test = new NonPublicClassTest();
test.x10();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, (test.equals(objLoaded)));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_70_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
int[] test = new int[1];
int intValue = 0;
test[0] = intValue;
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(test,
(int[]) objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_71_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
int i, j, maxJ = 3, maxI = 200;
byte[][] obj = new byte[maxJ][maxI];
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
obj[j][i] = (byte) (i - 100);
}
objToSave = obj;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
byte[][] toCompare = (byte[][]) objLoaded;
boolean ok = true;
// Has to have worked
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
if (obj[j][i] != toCompare[j][i]) {
ok = false;
break;
}
}
assertTrue(MSG_TEST_FAILED + objToSave, ok);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_72_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
int i, j, maxJ = 3, maxI = 200;
int[][] obj = new int[maxJ][maxI];
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
obj[j][i] = (i - 100);
}
objToSave = obj;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
int[][] toCompare = (int[][]) objLoaded;
boolean ok = true;
// Has to have worked
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
if (obj[j][i] != toCompare[j][i]) {
ok = false;
break;
}
}
assertTrue(MSG_TEST_FAILED + objToSave, ok);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_73_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
String org = "abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890";
int i, j, maxJ = 3, maxI = 70;
String[][] obj = new String[maxJ][maxI];
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
obj[j][i] = org.substring(0, i);
}
objToSave = obj;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
String[][] toCompare = (String[][]) objLoaded;
boolean ok = true;
// Has to have worked
for (j = 0; j < maxJ; j++) {
for (i = 0; i < maxI; i++)
if (!obj[j][i].equals(toCompare[j][i])) {
ok = false;
break;
}
}
assertTrue(MSG_TEST_FAILED + objToSave, ok);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_74_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SameInstVarNameSubClass test = new SameInstVarNameSubClass(100);
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave,
((SameInstVarNameSubClass) objLoaded).foo == 100);
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_75_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SInterfaceTest test = new SInterfaceTest();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_76_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SInterfaceTest2 test = new SInterfaceTest2();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_77_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SuperclassTest test = new SuperclassTest();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_78_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SuperclassTest2 test = new SuperclassTest2();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_79_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
Object objToSave = null;
Object objLoaded;
try {
SyntheticFieldTest test = new SyntheticFieldTest();
objToSave = test;
if (DEBUG)
System.out.println("Obj = " + objToSave);
objLoaded = dumpAndReload(objToSave);
// Has to have worked
assertTrue(MSG_TEST_FAILED + objToSave, test.equals(objLoaded));
} catch (IOException e) {
fail("IOException serializing " + objToSave + " : "
+ e.getMessage());
} catch (ClassNotFoundException e) {
fail("ClassNotFoundException reading Object type : "
+ e.getMessage());
} catch (Error err) {
System.out.println("Error when obj = " + objToSave);
// err.printStackTrace();
throw err;
}
}
public void test_18_80_writeObject() {
// Test for method void
// java.io.ObjectOutputStream.writeObject(java.lang.Object)
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(out);
new ObjectOutputStream(dos); // just to make sure we get a header
dos.writeByte(ObjectStreamConstants.TC_BLOCKDATA);
int length = 99;
dos.writeByte(length);
for (int i = 0; i < length; i++) {
dos.writeByte(0); // actual value does not matter
}
dos.flush();
int lengthRead = 0;
try {
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(out.toByteArray()));
Object obj = ois.readObject();
} catch (OptionalDataException e) {
lengthRead = e.length;
}
assertTrue("Did not throw exception with optional data size ",
length == lengthRead);
} catch (ClassNotFoundException e) {
fail("Unable to read BLOCKDATA: " + e.getMessage());
} catch (IOException e) {
fail("IOException testing BLOCKDATA : " + e.getMessage());
} catch (Error err) {
System.out.println("Error " + err + " when testing BLOCKDATA");
throw err;
}
}
}