This is the mail archive of the mauve-discuss@sourceware.org mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

registerValidation updated


Hi,

Here is an update to the registerValidation test that I wrote while
fixing a bug in GNU Classpath a while ago.

2005-10-12  Mark Wielaard  <mark@klomp.org>

    * gnu/testlet/java/io/ObjectInputStream/registerValidation.java:
    Check fields and priority order.
    * gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java:
    Add self reference, register multiple times with different priorities,
    add equals().

Committed,

Mark
Index: gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java,v
retrieving revision 1.1
diff -u -r1.1 TestObjectInputValidation.java
--- gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java	5 Jul 2005 12:22:39 -0000	1.1
+++ gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java	31 Oct 2005 20:42:25 -0000
@@ -33,32 +33,61 @@
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
+import java.util.ArrayList;
 
 class TestObjectInputValidation implements ObjectInputValidation, Serializable {
-  private boolean validated;
+  ArrayList validated;
   private String name;
+  private int priority;
+  TestObjectInputValidation object;
+
   public TestObjectInputValidation(String name) 
   {      
     this.name = name;
-    this.validated = false;
+    this.priority = 10;
+    this.object = this;
   }
-  public boolean isValidated() 
+
+  // Registers with priority for given object.
+  public TestObjectInputValidation(int priority,
+				   TestObjectInputValidation object)
   {
-    return this.validated;
+    this.priority = priority;
+    this.object = object;
   }
+
   public void validateObject()
   {
-    this.validated = true;
+    if (object.validated == null)
+      object.validated = new ArrayList();
+    object.validated.add(new Integer(priority));
   }
+
   private void writeObject(ObjectOutputStream stream) throws IOException 
   {
     stream.defaultWriteObject();
   }
+
   private void readObject(ObjectInputStream stream) 
       throws IOException, ClassNotFoundException 
   {
-    stream.defaultReadObject();
     stream.registerValidation(this, 10);
+    stream.registerValidation(new TestObjectInputValidation(-10, this), -10);
+    stream.defaultReadObject();
+    stream.registerValidation(this, 12); // Again with other priority
+    stream.registerValidation(new TestObjectInputValidation(-12, this), -12);
+    stream.registerValidation(new TestObjectInputValidation(11, this), 11);
   }
 
+  // Ignores validated list and object.
+  public boolean equals(Object o)
+  {
+    if (o instanceof TestObjectInputValidation)
+      {
+	TestObjectInputValidation other = (TestObjectInputValidation) o;
+	return this.name.equals(other.name)
+	  && this.priority == other.priority;
+      }
+    return false;
+  }
 }
Index: gnu/testlet/java/io/ObjectInputStream/registerValidation.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/io/ObjectInputStream/registerValidation.java,v
retrieving revision 1.2
diff -u -r1.2 registerValidation.java
--- gnu/testlet/java/io/ObjectInputStream/registerValidation.java	5 Jul 2005 12:22:39 -0000	1.2
+++ gnu/testlet/java/io/ObjectInputStream/registerValidation.java	31 Oct 2005 20:42:25 -0000
@@ -34,6 +34,7 @@
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
+import java.util.ArrayList;
 
 /**
  * Some checks for registerValidation() method of the {@link ObjectInputStream} class.
@@ -62,11 +63,27 @@
       );
       t2 = (TestObjectInputValidation) in.readObject();
       in.close();
+
+      harness.check(t2, t1); // name and priority the same
+      harness.check(t2.object, t2); // has self-reference
+      harness.check(t2.validated != null);
+
+      Object[] ps = t2.validated.toArray();
+      int[] priorities = new int[ps.length];
+      for (int i = 0; i < ps.length; i++)
+	priorities[i] = ((Integer) ps[i]).intValue();
+      harness.check(priorities != null);
+      harness.check(priorities.length, 5);
+      harness.check(priorities[0], -12);
+      harness.check(priorities[1], -10);
+      harness.check(priorities[2], 10);
+      harness.check(priorities[3], 11);
+      harness.check(priorities[4], 10); // The priority 12 "this" again.
     }
     catch (Exception e) {
       harness.debug(e);
+      harness.check(false, e.toString());
     }
-    harness.check(t2.isValidated());
   }
   
 }

Attachment: signature.asc
Description: This is a digitally signed message part


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]