< prev index next >

test/java/awt/geom/Path2D/Path2DCopyConstructor.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. 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.

@@ -32,13 +32,14 @@
 import java.awt.geom.Rectangle2D;
 import java.util.Arrays;
 
 /**
  * @test
- * @bug 8076419
+ * @bug 8076419 8078192
  * @summary Check Path2D copy constructor (trims arrays)
  *          and constructor with zero capacity
+ *          and Path2D.trimToSize()
  * @run main Path2DCopyConstructor
  */
 public class Path2DCopyConstructor {
 
     private final static float EPSILON = 5e-6f;

@@ -177,62 +178,236 @@
         p2d.closePath();
         return p2d;
     }
 
     static void test(Path2D p2d, boolean isEmpty) {
-        testEqual(new Path2D.Float(p2d), p2d);
-        testEqual(new Path2D.Double(p2d), p2d);
-        testEqual(new GeneralPath(p2d), p2d);
-
-        testIterator(new Path2D.Float(p2d), p2d);
-        testIterator(new Path2D.Double(p2d), p2d);
-        testIterator((Path2D) p2d.clone(), p2d);
-
-        testFlattening(new Path2D.Float(p2d), p2d);
-        testFlattening(new Path2D.Double(p2d), p2d);
-        testFlattening((Path2D) p2d.clone(), p2d);
-
-        testAddMove(new Path2D.Float(p2d));
-        testAddMove(new Path2D.Double(p2d));
-        testAddMove((Path2D) p2d.clone());
+        Path2D c;
+        Path2D.Float pf;
+        Path2D.Double pd;
+        GeneralPath gp;
+
+        pf = new Path2D.Float(p2d);
+        testEqual(pf, p2d);
+        pf.trimToSize();
+        testEqual(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testEqual(pd, p2d);
+        pd.trimToSize();
+        testEqual(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testEqual(c, p2d);
+        c.trimToSize();
+        testEqual(c, p2d);
+        gp = new GeneralPath(p2d);
+        testEqual(gp, p2d);
+        gp.trimToSize();
+        testEqual(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testIterator(pf, p2d);
+        pf.trimToSize();
+        testIterator(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testIterator(pd, p2d);
+        pd.trimToSize();
+        testIterator(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testIterator(c, p2d);
+        c.trimToSize();
+        testIterator(c, p2d);
+        gp = new GeneralPath(p2d);
+        testIterator(gp, p2d);
+        gp.trimToSize();
+        testIterator(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testFlattening(pf, p2d);
+        pf.trimToSize();
+        testFlattening(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testFlattening(pd, p2d);
+        pd.trimToSize();
+        testFlattening(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testFlattening(c, p2d);
+        c.trimToSize();
+        testFlattening(c, p2d);
+        gp = new GeneralPath(p2d);
+        testFlattening(gp, p2d);
+        gp.trimToSize();
+        testFlattening(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testAddMove(pf);
+        pf.trimToSize();
+        testAddMove(pf);
+        pd = new Path2D.Double(p2d);
+        testAddMove(pd);
+        pd.trimToSize();
+        testAddMove(pd);
+        c = (Path2D)p2d.clone();
+        testAddMove(c);
+        c.trimToSize();
+        testAddMove(c);
+        gp = new GeneralPath(p2d);
+        testAddMove(gp);
+        gp.trimToSize();
+        testAddMove(gp);
 
         // These should expect exception if empty
-        testAddLine(new Path2D.Float(p2d), isEmpty);
-        testAddLine(new Path2D.Double(p2d), isEmpty);
-        testAddLine((Path2D) p2d.clone(), isEmpty);
-
-        testAddQuad(new Path2D.Float(p2d), isEmpty);
-        testAddQuad(new Path2D.Double(p2d), isEmpty);
-        testAddQuad((Path2D) p2d.clone(), isEmpty);
-
-        testAddCubic(new Path2D.Float(p2d), isEmpty);
-        testAddCubic(new Path2D.Double(p2d), isEmpty);
-        testAddCubic((Path2D) p2d.clone(), isEmpty);
-
-        testAddClose(new Path2D.Float(p2d), isEmpty);
-        testAddClose(new Path2D.Double(p2d), isEmpty);
-        testAddClose((Path2D) p2d.clone(), isEmpty);
-
-        testGetBounds(new Path2D.Float(p2d), p2d);
-        testGetBounds(new Path2D.Double(p2d), p2d);
-        testGetBounds((Path2D) p2d.clone(), p2d);
-
-        testTransform(new Path2D.Float(p2d));
-        testTransform(new Path2D.Double(p2d));
-        testTransform((Path2D) p2d.clone());
-
-        testIntersect(new Path2D.Float(p2d), p2d);
-        testIntersect(new Path2D.Double(p2d), p2d);
-        testIntersect((Path2D) p2d.clone(), p2d);
-
-        testContains(new Path2D.Float(p2d), p2d);
-        testContains(new Path2D.Double(p2d), p2d);
-        testContains((Path2D) p2d.clone(), p2d);
-
-        testGetCurrentPoint(new Path2D.Float(p2d), p2d);
-        testGetCurrentPoint(new Path2D.Double(p2d), p2d);
-        testGetCurrentPoint((Path2D) p2d.clone(), p2d);
+        pf = new Path2D.Float(p2d);
+        testAddLine(pf, isEmpty);
+        pf.trimToSize();
+        testAddLine(pf, isEmpty);
+        pd = new Path2D.Double(p2d);
+        testAddLine(pd, isEmpty);
+        pd.trimToSize();
+        testAddLine(pd, isEmpty);
+        c = (Path2D)p2d.clone();
+        testAddLine(c, isEmpty);
+        c.trimToSize();
+        testAddLine(c, isEmpty);
+        gp = new GeneralPath(p2d);
+        testAddLine(gp, isEmpty);
+        gp.trimToSize();
+        testAddLine(gp, isEmpty);
+
+        pf = new Path2D.Float(p2d);
+        testAddQuad(pf, isEmpty);
+        pf.trimToSize();
+        testAddQuad(pf, isEmpty);
+        pd = new Path2D.Double(p2d);
+        testAddQuad(pd, isEmpty);
+        pd.trimToSize();
+        testAddQuad(pd, isEmpty);
+        c = (Path2D)p2d.clone();
+        testAddQuad(c, isEmpty);
+        c.trimToSize();
+        testAddQuad(c, isEmpty);
+        gp = new GeneralPath(p2d);
+        testAddQuad(gp, isEmpty);
+        gp.trimToSize();
+        testAddQuad(gp, isEmpty);
+
+        pf = new Path2D.Float(p2d);
+        testAddCubic(pf, isEmpty);
+        pf.trimToSize();
+        testAddCubic(pf, isEmpty);
+        pd = new Path2D.Double(p2d);
+        testAddCubic(pd, isEmpty);
+        pd.trimToSize();
+        testAddCubic(pd, isEmpty);
+        c = (Path2D)p2d.clone();
+        testAddCubic(c, isEmpty);
+        c.trimToSize();
+        testAddCubic(c, isEmpty);
+        gp = new GeneralPath(p2d);
+        testAddCubic(gp, isEmpty);
+        gp.trimToSize();
+        testAddCubic(gp, isEmpty);
+
+        pf = new Path2D.Float(p2d);
+        testAddClose(pf, isEmpty);
+        pf.trimToSize();
+        testAddClose(pf, isEmpty);
+        pd = new Path2D.Double(p2d);
+        testAddClose(pd, isEmpty);
+        pd.trimToSize();
+        testAddClose(pd, isEmpty);
+        c = (Path2D)p2d.clone();
+        testAddClose(c, isEmpty);
+        c.trimToSize();
+        testAddClose(c, isEmpty);
+        gp = new GeneralPath(p2d);
+        testAddClose(gp, isEmpty);
+        gp.trimToSize();
+        testAddClose(gp, isEmpty);
+
+        pf = new Path2D.Float(p2d);
+        testGetBounds(pf, p2d);
+        pf.trimToSize();
+        testGetBounds(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testGetBounds(pd, p2d);
+        pd.trimToSize();
+        testGetBounds(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testGetBounds(c, p2d);
+        c.trimToSize();
+        testGetBounds(c, p2d);
+        gp = new GeneralPath(p2d);
+        testGetBounds(gp, p2d);
+        gp.trimToSize();
+        testGetBounds(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testTransform(pf);
+        pf.trimToSize();
+        testTransform(pf);
+        pd = new Path2D.Double(p2d);
+        testTransform(pd);
+        pd.trimToSize();
+        testTransform(pd);
+        c = (Path2D)p2d.clone();
+        testTransform(c);
+        c.trimToSize();
+        testTransform(c);
+        gp = new GeneralPath(p2d);
+        testTransform(gp);
+        gp.trimToSize();
+        testTransform(gp);
+
+        pf = new Path2D.Float(p2d);
+        testIntersect(pf, p2d);
+        pf.trimToSize();
+        testIntersect(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testIntersect(pd, p2d);
+        pd.trimToSize();
+        testIntersect(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testIntersect(c, p2d);
+        c.trimToSize();
+        testIntersect(c, p2d);
+        gp = new GeneralPath(p2d);
+        testIntersect(gp, p2d);
+        gp.trimToSize();
+        testIntersect(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testContains(pf, p2d);
+        pf.trimToSize();
+        testContains(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testContains(pd, p2d);
+        pd.trimToSize();
+        testContains(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testContains(c, p2d);
+        c.trimToSize();
+        testContains(c, p2d);
+        gp = new GeneralPath(p2d);
+        testContains(gp, p2d);
+        gp.trimToSize();
+        testContains(gp, p2d);
+
+        pf = new Path2D.Float(p2d);
+        testGetCurrentPoint(pf, p2d);
+        pf.trimToSize();
+        testGetCurrentPoint(pf, p2d);
+        pd = new Path2D.Double(p2d);
+        testGetCurrentPoint(pd, p2d);
+        pd.trimToSize();
+        testGetCurrentPoint(pd, p2d);
+        c = (Path2D)p2d.clone();
+        testGetCurrentPoint(c, p2d);
+        c.trimToSize();
+        testGetCurrentPoint(c, p2d);
+        gp = new GeneralPath(p2d);
+        testGetCurrentPoint(gp, p2d);
+        gp.trimToSize();
+        testGetCurrentPoint(gp, p2d);
     }
 
     static void testEqual(Path2D pathA, Path2D pathB) {
         final PathIterator itA = pathA.getPathIterator(null);
         final PathIterator itB = pathB.getPathIterator(null);
< prev index next >