[Nice-commit] Nice/testsuite/compiler/classes serialization.testsuite,1.1,1.2
Brought to you by:
bonniot
From: <bo...@us...> - 2003-11-24 14:47:53
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv1298/testsuite/compiler/classes Modified Files: serialization.testsuite Log Message: Make private readObject and writeObject member methods when those methods are defined on a Nice class, so that Java serialization picks them up. Make the serialVersionUID field really private. Index: serialization.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/serialization.testsuite,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** serialization.testsuite 23 Nov 2003 12:52:18 -0000 1.1 --- serialization.testsuite 24 Nov 2003 14:47:49 -0000 1.2 *************** *** 1,11 **** ! /// PASS ! A a = new A(x: 10); let outb = new ByteArrayOutputStream(); let outs = new ObjectOutputStream(outb); ! outs.writeObject(a); let store = outb.toByteArray(); let inb = new ByteArrayInputStream(store); let ins = new ObjectInputStream(inb); ! A b = ins.readObject(); assert a.x == b.x; let osc = ObjectStreamClass.lookup(A.class); --- 1,20 ---- ! /// global ! import java.io.*; ! ! <T> T serializeThenDeserialize(T obj) ! { let outb = new ByteArrayOutputStream(); let outs = new ObjectOutputStream(outb); ! outs.writeObject(obj); let store = outb.toByteArray(); + let inb = new ByteArrayInputStream(store); let ins = new ObjectInputStream(inb); ! return ins.readObject(); ! } ! ! /// PASS ! A a = new A(x: 10); ! A b = serializeThenDeserialize(a); assert a.x == b.x; let osc = ObjectStreamClass.lookup(A.class); *************** *** 23,24 **** --- 32,72 ---- final long /* /// FAIL HERE */serialVersionUID = "xyz"; } + + /// PASS + A a = serializeThenDeserialize(new A()); + assert a.ok; + + B b = serializeThenDeserialize(new B()); + assert b.ok; + + /// Toplevel + import java.io.*; + + class A implements Serializable + { + transient boolean ok = true; + + private void writeObject(ObjectOutputStream out) { + out.writeBoolean(true); + } + + private void readObject(ObjectInputStream in) { + ok = in.readBoolean(); + } + } + + class B implements Serializable + { + transient boolean ok = true; + + private void writeObject(ObjectOutputStream out); + private void readObject(ObjectInputStream in); + } + + writeObject(this@B, out) { + out.writeBoolean(true); + } + + readObject(this@B, in) { + ok = in.readBoolean(); + } |