test/jdk/java/awt/geom/SerialTest.java
author serb
Tue, 22 May 2018 17:33:31 -0700
changeset 50344 8039dc75f125
permissions -rw-r--r--
8203027: Open source tests for "java.awt.geom" Reviewed-by: prr, jdv
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50344
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     1
/*
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     2
 * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     4
 *
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     7
 * published by the Free Software Foundation.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     8
 *
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    13
 * accompanied this code).
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    14
 *
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    18
 *
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    21
 * questions.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    22
 */
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    23
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    24
/*
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    25
 * @test
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    26
 * @bug 4263142 4172661
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    27
 * @summary First run verifies that objects serialize and deserialize
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    28
 *          correctly against the current release.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    29
 *          Second run verifies that objects from previous releases
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    30
 *          still deserialize correctly.  The serial_1_6.out file was
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    31
 *          created using the "write" option under release 1.6.
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    32
 *          The test was modified after fixing 4172661 to add testing
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    33
 *          of Path2D serialization (and to recut the test file with
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    34
 *          the new serialVersionUID of GeneralPath).
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    35
 * @run main SerialTest
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    36
 * @run main SerialTest read serial_1_6.out
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    37
 */
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    38
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    39
import java.awt.Shape;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    40
import java.awt.geom.AffineTransform;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    41
import java.awt.geom.Arc2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    42
import java.awt.geom.CubicCurve2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    43
import java.awt.geom.Ellipse2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    44
import java.awt.geom.GeneralPath;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    45
import java.awt.geom.Line2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    46
import java.awt.geom.Path2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    47
import java.awt.geom.PathIterator;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    48
import java.awt.geom.Point2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    49
import java.awt.geom.QuadCurve2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    50
import java.awt.geom.Rectangle2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    51
import java.awt.geom.RoundRectangle2D;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    52
import java.io.ByteArrayInputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    53
import java.io.ByteArrayOutputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    54
import java.io.File;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    55
import java.io.FileInputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    56
import java.io.FileOutputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    57
import java.io.IOException;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    58
import java.io.InputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    59
import java.io.ObjectInputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    60
import java.io.ObjectOutputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    61
import java.io.OutputStream;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    62
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    63
public class SerialTest {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    64
    public static Object testobjects[] = {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    65
        // non-shapes...
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    66
        new Point2D.Float(37, 42),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    67
        new Point2D.Double(85, 63),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    68
        new AffineTransform(10, 20, 30, 40, 50, 60),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    69
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    70
        // shapes...
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    71
        new QuadCurve2D.Float(10f, 10f, 50f, 50f, 100f, 10f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    72
        new QuadCurve2D.Double(20f, 20f, 50f, 50f, 100f, 20f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    73
        new CubicCurve2D.Float(10f, 10f, 50f, 10f, 10f, 50f, 50f, 50f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    74
        new CubicCurve2D.Double(0.0, 0.0, 50.0, 0.0, 0.0, 50.0, 50.0, 50.0),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    75
        new GeneralPath(),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    76
        new GeneralPath(PathIterator.WIND_NON_ZERO),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    77
        new GeneralPath(PathIterator.WIND_EVEN_ODD),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    78
        makeGeneralPath(PathIterator.WIND_NON_ZERO, 5f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    79
        makeGeneralPath(PathIterator.WIND_EVEN_ODD, 23f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    80
        new Line2D.Float(20f, 20f, 25f, 50f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    81
        new Line2D.Double(20.0, 20.0, 35.0, 50.0),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    82
        new Rectangle2D.Float(100f, 100f, 50f, 25f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    83
        new Rectangle2D.Double(200.0, 200.0, 75.0, 35.0),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    84
        new RoundRectangle2D.Float(120f, 120f, 50f, 35f, 5f, 7f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    85
        new RoundRectangle2D.Double(220.0, 220.0, 85.0, 45.0, 3.0, 9.0),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    86
        new Ellipse2D.Float(110f, 110f, 50f, 55f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    87
        new Ellipse2D.Double(210.0, 210.0, 75.0, 45.0),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    88
        new Arc2D.Float(10f, 10f, 50f, 40f, 45f, 72f, Arc2D.OPEN),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    89
        new Arc2D.Float(10f, 10f, 40f, 50f, 135f, 72f, Arc2D.PIE),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    90
        new Arc2D.Float(10f, 10f, 40f, 60f, 225f, 72f, Arc2D.CHORD),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    91
        new Arc2D.Double(10.0, 20.0, 50.0, 40.0, 45.0, 72.0, Arc2D.OPEN),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    92
        new Arc2D.Double(10.0, 20.0, 40.0, 50.0, 135.0, 72.0, Arc2D.PIE),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    93
        new Arc2D.Double(10.0, 20.0, 40.0, 60.0, 225.0, 72.0, Arc2D.CHORD),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    94
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    95
        // Paths
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    96
        new Path2D.Float(),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    97
        new Path2D.Float(PathIterator.WIND_NON_ZERO),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    98
        new Path2D.Float(PathIterator.WIND_EVEN_ODD),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
    99
        makePath2DFloat(PathIterator.WIND_NON_ZERO, 5f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   100
        makePath2DFloat(PathIterator.WIND_EVEN_ODD, 23f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   101
        new Path2D.Double(),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   102
        new Path2D.Double(PathIterator.WIND_NON_ZERO),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   103
        new Path2D.Double(PathIterator.WIND_EVEN_ODD),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   104
        makePath2DDouble(PathIterator.WIND_NON_ZERO, 5f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   105
        makePath2DDouble(PathIterator.WIND_EVEN_ODD, 23f),
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   106
    };
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   107
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   108
    public static Shape makeGeneralPath(int winding, float off) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   109
        return fill(new GeneralPath(winding), off);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   110
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   111
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   112
    public static Shape makePath2DFloat(int winding, float off) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   113
        return fill(new Path2D.Float(winding), off);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   114
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   115
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   116
    public static Shape makePath2DDouble(int winding, float off) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   117
        return fill(new Path2D.Double(winding), off);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   118
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   119
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   120
    public static Path2D fill(Path2D p2d, float off) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   121
        p2d.moveTo(off+10, off+10);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   122
        p2d.lineTo(off+100, off+50);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   123
        p2d.quadTo(off+50, off+100, off+200, off+100);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   124
        p2d.curveTo(off+400, off+20, off+20, off+400, off+100, off+100);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   125
        p2d.closePath();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   126
        return p2d;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   127
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   128
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   129
    static int numerrors;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   130
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   131
    public static void error(Object o1, Object o2, String reason) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   132
        System.err.println("Failed comparing: "+o1+" to "+o2);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   133
        System.err.println(reason);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   134
        numerrors++;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   135
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   136
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   137
    public static void usage(int exitcode) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   138
        System.err.println("usage: java SerialTest [read|write] <filename>");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   139
        System.exit(exitcode);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   140
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   141
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   142
    public static void main(String argv[]) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   143
        if (argv.length > 0) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   144
            if (argv.length < 2) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   145
                usage(1);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   146
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   147
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   148
            String arg = argv[0].toLowerCase();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   149
            if (arg.equals("write")) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   150
                serializeTo(argv[1]);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   151
            } else if (arg.equals("read")) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   152
                testFrom(argv[1]);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   153
            } else {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   154
                usage(1);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   155
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   156
        } else {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   157
            testSerial();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   158
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   159
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   160
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   161
    public static File makeFile(String filename) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   162
        return new File(System.getProperty("test.src", "."), filename);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   163
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   164
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   165
    public static void serializeTo(String filename) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   166
        FileOutputStream fos;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   167
        try {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   168
            fos = new FileOutputStream(makeFile(filename));
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   169
        } catch (IOException ioe) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   170
            throw new InternalError("bad output filename: "+filename);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   171
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   172
        serializeTo(fos);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   173
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   174
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   175
    public static void testFrom(String filename) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   176
        FileInputStream fis;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   177
        try {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   178
            fis = new FileInputStream(makeFile(filename));
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   179
        } catch (IOException ioe) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   180
            throw new InternalError("bad input filename: "+filename);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   181
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   182
        testFrom(fis);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   183
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   184
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   185
    public static void testSerial() {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   186
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   187
        serializeTo(baos);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   188
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   189
        byte buf[] = baos.toByteArray();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   190
        ByteArrayInputStream bais = new ByteArrayInputStream(buf);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   191
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   192
        testFrom(bais);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   193
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   194
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   195
    public static void serializeTo(OutputStream os) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   196
        try {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   197
            ObjectOutputStream oos = new ObjectOutputStream(os);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   198
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   199
            for (Object o1: testobjects) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   200
                oos.writeObject(o1);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   201
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   202
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   203
            oos.close();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   204
        } catch (IOException ioe) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   205
            throw new RuntimeException(ioe);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   206
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   207
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   208
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   209
    public static void testFrom(InputStream is) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   210
        try {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   211
            ObjectInputStream ois = new ObjectInputStream(is);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   212
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   213
            for (Object o1: testobjects) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   214
                Object o2 = ois.readObject();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   215
                if (o1 instanceof Shape) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   216
                    compareShapes((Shape) o1, (Shape) o2);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   217
                } else {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   218
                    if (!o1.equals(o2)) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   219
                        error(o1, o2, "objects not equal");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   220
                    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   221
                }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   222
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   223
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   224
            try {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   225
                ois.readObject();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   226
                throw new RuntimeException("extra data in stream");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   227
            } catch (IOException ioe2) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   228
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   229
        } catch (IOException ioe) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   230
            throw new RuntimeException(ioe);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   231
        } catch (ClassNotFoundException cnfe) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   232
            throw new RuntimeException(cnfe);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   233
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   234
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   235
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   236
    public static void compareShapes(Shape s1, Shape s2) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   237
        PathIterator pi1 = s1.getPathIterator(null);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   238
        PathIterator pi2 = s2.getPathIterator(null);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   239
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   240
        if (pi1.getWindingRule() != pi2.getWindingRule()) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   241
            error(s1, s2, "winding rules are different");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   242
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   243
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   244
        double coords1[] = new double[6];
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   245
        double coords2[] = new double[6];
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   246
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   247
        while (!pi1.isDone()) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   248
            if (pi2.isDone()) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   249
                error(s1, s2, "Shape 2 ended prematurely");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   250
                return;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   251
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   252
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   253
            int t1 = pi1.currentSegment(coords1);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   254
            int t2 = pi2.currentSegment(coords2);
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   255
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   256
            if (t1 != t2) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   257
                error(s1, s2, "different segment types");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   258
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   259
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   260
            int ncoords;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   261
            switch (t1) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   262
            case PathIterator.SEG_MOVETO:  ncoords = 2; break;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   263
            case PathIterator.SEG_LINETO:  ncoords = 2; break;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   264
            case PathIterator.SEG_QUADTO:  ncoords = 4; break;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   265
            case PathIterator.SEG_CUBICTO: ncoords = 6; break;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   266
            case PathIterator.SEG_CLOSE:   ncoords = 0; break;
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   267
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   268
            default:
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   269
                throw new RuntimeException("unknown segment type");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   270
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   271
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   272
            for (int i = 0; i < ncoords; i++) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   273
                if (coords1[i] != coords2[i]) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   274
                    error(s1, s2, "coordinates differ");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   275
                }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   276
            }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   277
            pi1.next();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   278
            pi2.next();
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   279
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   280
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   281
        if (!pi2.isDone()) {
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   282
            error(s1, s2, "Shape 1 ended prematurely");
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   283
        }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   284
    }
8039dc75f125 8203027: Open source tests for "java.awt.geom"
serb
parents:
diff changeset
   285
}