modules/graphics/src/test/java/javafx/scene/canvas/CanvasTest.java

Print this page

        

@@ -41,10 +41,13 @@
 import javafx.scene.transform.Transform;
 import org.junit.Before;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertNotNull;
 
 public class CanvasTest {
 
     private Canvas canvas;
     private GraphicsContext gc;

@@ -327,20 +330,26 @@
         gc.save();
         gc.setLineCap(StrokeLineCap.ROUND);
         gc.setLineJoin(StrokeLineJoin.BEVEL);
         gc.setLineWidth(1);
         gc.setMiterLimit(1);
+        gc.setLineDashes(10, 10);
+        gc.setLineDashOffset(100);
         assertEquals(gc.getLineCap(), StrokeLineCap.ROUND);
         assertEquals(gc.getLineJoin(), StrokeLineJoin.BEVEL);
         assertEquals(gc.getLineWidth(), 1, 0.00001);
         assertEquals(gc.getMiterLimit(), 1, 0.00001);
+        assertArrayEquals(gc.getLineDashes(), new double[] {10, 10}, 0.00001);
+        assertEquals(gc.getLineDashOffset(), 100, 0.00001);
         gc.restore();
         
         assertEquals(gc.getLineCap(), StrokeLineCap.BUTT);
         assertEquals(gc.getLineJoin(), StrokeLineJoin.MITER);
         assertEquals(gc.getLineWidth(), 5, 0.00001);
         assertEquals(gc.getMiterLimit(), 3, 0.00001);
+        assertNull(gc.getLineDashes());
+        assertEquals(gc.getLineDashOffset(), 0, 0.00001);
     }
 
     @Test
     public void testGCState_LineCapNull() throws Exception {
         gc.setLineCap(StrokeLineCap.BUTT);

@@ -365,10 +374,65 @@
         gc.setLineJoin(StrokeLineJoin.ROUND);
         gc.setLineJoin(null);
         assertEquals(gc.getLineJoin(), StrokeLineJoin.ROUND);
     }
 
+    @Test
+    public void testGCState_LineDashNonPositive() throws Exception {
+        gc.setLineDashes(20, 10);
+        assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001);
+        gc.setLineDashes(1, Double.NaN);
+        assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001);
+        gc.setLineDashes(1, Double.POSITIVE_INFINITY);
+        assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001);
+        gc.setLineDashes(1, -1);
+        assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001);
+    }
+
+    @Test
+    public void testGCState_LineDashNull() throws Exception {
+        gc.setLineDashes(10, 10);
+        assertNotNull(gc.getLineDashes());
+        gc.setLineDashes(null);
+        assertNull(gc.getLineDashes());
+
+        gc.setLineDashes(10, 10);
+        assertNotNull(gc.getLineDashes());
+        gc.setLineDashes();
+        assertNull(gc.getLineDashes());
+
+        gc.setLineDashes(10, 10);
+        assertNotNull(gc.getLineDashes());
+        gc.setLineDashes(new double[0]);
+        assertNull(gc.getLineDashes());
+
+        gc.setLineDashes(10, 10);
+        assertNotNull(gc.getLineDashes());
+        gc.setLineDashes(0, 0);
+        assertNull(gc.getLineDashes());
+    }
+
+    @Test
+    public void testGCState_LineDashOddLength() throws Exception {
+        gc.setLineDashes(10);
+        assertArrayEquals(gc.getLineDashes(), new double[] {10, 10}, 0.00001);
+        gc.setLineDashes(10, 20, 30);
+        assertArrayEquals(gc.getLineDashes(), new double[] {10, 20, 30, 10, 20, 30}, 0.00001);
+    }
+
+    @Test
+    public void testGCState_LineDashOffsetNonFinite() throws Exception {
+        gc.setLineDashOffset(5.0);
+        assertEquals(gc.getLineDashOffset(), 5.0, 0.00001);
+        gc.setLineDashOffset(Double.NaN);
+        assertEquals(gc.getLineDashOffset(), 5.0, 0.00001);
+        gc.setLineDashOffset(Double.NEGATIVE_INFINITY);
+        assertEquals(gc.getLineDashOffset(), 5.0, 0.00001);
+        gc.setLineDashOffset(Double.POSITIVE_INFINITY);
+        assertEquals(gc.getLineDashOffset(), 5.0, 0.00001);
+    }
+
     @Test public void testGCState_BlendMode() throws Exception {
         gc.setGlobalBlendMode(BlendMode.ADD);
         gc.setGlobalAlpha(0);
         
         gc.save();