diff options
Diffstat (limited to 'gnu/testlet/java/io/ObjectInputOutput/Deserializable.java')
-rw-r--r-- | gnu/testlet/java/io/ObjectInputOutput/Deserializable.java | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java b/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java new file mode 100644 index 00000000..70fc04b1 --- /dev/null +++ b/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java @@ -0,0 +1,123 @@ +// 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)); + } +} |