jdk/test/java/io/Serializable/sanityCheck/SanityCheck.java
changeset 2 90ce3da70b43
child 5506 202f599c92aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/io/Serializable/sanityCheck/SanityCheck.java	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2001 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @summary Basic sanity check to test if default (de)serialization is
+ *          transmitting values properly.
+ */
+
+import java.io.*;
+import java.util.*;
+
+class Item implements Serializable {
+
+    static final int ARRAYLEN = 1000;
+    static final int STRLEN = 1000;
+    static Random rand = new Random(System.currentTimeMillis());
+
+    boolean z;
+    byte b;
+    char c;
+    short s;
+    int i;
+    float f;
+    long j;
+    double d;
+
+    boolean[] zary;
+    byte[] bary;
+    char[] cary;
+    short[] sary;
+    int[] iary;
+    float[] fary;
+    long[] jary;
+    double[] dary;
+
+    String str;
+    Object[] oary;
+
+    Item() {
+        z = rand.nextBoolean();
+        b = (byte) rand.nextInt();
+        c = (char) rand.nextInt();
+        s = (short) rand.nextInt();
+        i = rand.nextInt();
+        f = rand.nextFloat();
+        j = rand.nextLong();
+        d = rand.nextDouble();
+
+        zary = new boolean[ARRAYLEN];
+        bary = new byte[ARRAYLEN];
+        cary = new char[ARRAYLEN];
+        sary = new short[ARRAYLEN];
+        iary = new int[ARRAYLEN];
+        fary = new float[ARRAYLEN];
+        jary = new long[ARRAYLEN];
+        dary = new double[ARRAYLEN];
+        oary = new Object[ARRAYLEN];
+
+        for (int i = 0; i < ARRAYLEN; i++) {
+            zary[i] = rand.nextBoolean();
+            bary[i] = (byte) rand.nextInt();
+            cary[i] = (char) rand.nextInt();
+            sary[i] = (short) rand.nextInt();
+            iary[i] = rand.nextInt();
+            fary[i] = rand.nextFloat();
+            jary[i] = rand.nextLong();
+            dary[i] = rand.nextDouble();
+            oary[i] = new Integer(rand.nextInt());
+        }
+
+        char[] strChars = new char[STRLEN];
+        for (int i = 0; i < STRLEN; i++) {
+            strChars[i] = (char) rand.nextInt();
+        }
+        str = new String(strChars);
+    }
+
+    public boolean equals(Object obj) {
+        if (!(obj instanceof Item)) {
+            return false;
+        }
+        Item other = (Item) obj;
+
+        if ((z != other.z) || (b != other.b) || (c != other.c) ||
+            (s != other.s) || (i != other.i) || (f != other.f) ||
+            (j != other.j) || (d != other.d))
+        {
+            return false;
+        }
+
+        for (int i = 0; i < ARRAYLEN; i++) {
+            if ((zary[i] != other.zary[i]) || (bary[i] != other.bary[i]) ||
+                (cary[i] != other.cary[i]) || (sary[i] != other.sary[i]) ||
+                (iary[i] != other.iary[i]) || (fary[i] != other.fary[i]) ||
+                (jary[i] != other.jary[i]) || (dary[i] != other.dary[i]) ||
+                !oary[i].equals(other.oary[i]))
+            {
+                return false;
+            }
+        }
+
+        if (!str.equals(other.str)) {
+            return false;
+        }
+
+        return true;
+    }
+}
+
+public class SanityCheck {
+    public static void main(String[] args) throws Exception {
+        for (int i = 0; i < 20; i++) {
+            ByteArrayOutputStream bout = new ByteArrayOutputStream();
+            ObjectOutputStream oout = new ObjectOutputStream(bout);
+            Item item = new Item();
+            oout.writeObject(item);
+            oout.close();
+
+            ObjectInputStream oin = new ObjectInputStream(
+                new ByteArrayInputStream(bout.toByteArray()));
+            Item itemcopy = (Item) oin.readObject();
+
+            if (! item.equals(itemcopy)) {
+                throw new Error();
+            }
+        }
+    }
+}