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();
+ }
|