// Tags: JDK1.2
// Uses: Test
/* Deserialize.java -- Tests class which are not deserializable.
* Imported from Kaffe 1.1.4.
* Adapted by Guilhem Lavaux <guilhem@kaffe.org>.
*
* This file is part of Mauve.
*
* Mauve is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* Mauve is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Mauve; see the file COPYING. If not, write to
* the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
package gnu.testlet.java.io.ObjectInputOutput;
import gnu.testlet.Testlet;
import gnu.testlet.TestHarness;
import java.io.Serializable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamException;
import java.io.InvalidClassException;
public class Deserializable implements Testlet
{
// this class is not serializable as it does not have <init>()
static class NotSerializable1 {
public NotSerializable1(int dummy) {
}
}
static class Serialized1
extends NotSerializable1
implements Serializable
{
public Serialized1(int i) {
super(i);
}
}
// this class is not serializable as <init>() is private
static class NotSerializable2 {
public NotSerializable2(int dummy) {
}
private NotSerializable2() {
}
}
static class Serialized2
extends NotSerializable2
implements Serializable
{
static int count = 0;
public int i;
public Serialized2(int i) {
super(i);
this.i = i;
}
}
public void testObject(TestHarness harness, Object a)
{
try
{
FileOutputStream fos = new FileOutputStream ("frozen_serial");
ObjectOutputStream oos = new ObjectOutputStream (fos);
oos.writeObject (a);
oos.flush ();
}
catch (Exception e)
{
harness.fail("Unexpected exception " + e);
harness.debug(e);
}
harness.checkPoint("Deserialize " + a.getClass().getName());
try
{
FileInputStream fis = new FileInputStream ("frozen_serial");
ObjectInputStream ois = new ObjectInputStream (fis);
Object b = ois.readObject ();
harness.fail("Was expecting an InvalidClassException");
}
catch (InvalidClassException e)
{
harness.check(true);
harness.debug(e);
}
catch (Exception e2)
{
harness.fail("Wrong exception");
harness.debug(e2);
}
}
public void test(TestHarness harness)
{
testObject(harness, new Serialized1(10));
testObject(harness, new Serialized2(10));
}
}