26 package javafx.scene.canvas; 27 28 import javafx.geometry.VPos; 29 import javafx.scene.NodeTest; 30 import javafx.scene.effect.BlendMode; 31 import javafx.scene.image.ImageForTesting; 32 import javafx.scene.paint.Color; 33 import javafx.scene.shape.ArcType; 34 import javafx.scene.shape.FillRule; 35 import javafx.scene.shape.StrokeLineCap; 36 import javafx.scene.shape.StrokeLineJoin; 37 import javafx.scene.text.Font; 38 import javafx.scene.text.TextAlignment; 39 import javafx.scene.transform.Affine; 40 import javafx.scene.transform.Rotate; 41 import javafx.scene.transform.Transform; 42 import org.junit.Before; 43 import org.junit.Test; 44 45 import static org.junit.Assert.assertEquals; 46 47 public class CanvasTest { 48 49 private Canvas canvas; 50 private GraphicsContext gc; 51 52 @Before 53 public void setUp() { 54 canvas = new Canvas(); 55 gc = canvas.getGraphicsContext2D(); 56 } 57 58 @Test public void testPropertyPropagation_visible() throws Exception { 59 NodeTest.testBooleanPropertyPropagation(canvas, "visible", false, true); 60 } 61 62 //maybe test doing stuff from different threads 63 @Test public void testGetGC2() throws Exception { 64 GraphicsContext gc2 = canvas.getGraphicsContext2D(); 65 GraphicsContext gc3 = canvas.getGraphicsContext2D(); 312 } 313 314 @Test public void testGCState_TextAlign_Null() { 315 gc.setTextAlign(TextAlignment.JUSTIFY); 316 assertEquals(TextAlignment.JUSTIFY, gc.getTextAlign()); 317 gc.setTextAlign(null); 318 assertEquals(TextAlignment.JUSTIFY, gc.getTextAlign()); 319 } 320 321 @Test public void testGCState_Line() throws Exception { 322 gc.setLineCap(StrokeLineCap.BUTT); 323 gc.setLineJoin(StrokeLineJoin.MITER); 324 gc.setLineWidth(5); 325 gc.setMiterLimit(3); 326 327 gc.save(); 328 gc.setLineCap(StrokeLineCap.ROUND); 329 gc.setLineJoin(StrokeLineJoin.BEVEL); 330 gc.setLineWidth(1); 331 gc.setMiterLimit(1); 332 assertEquals(gc.getLineCap(), StrokeLineCap.ROUND); 333 assertEquals(gc.getLineJoin(), StrokeLineJoin.BEVEL); 334 assertEquals(gc.getLineWidth(), 1, 0.00001); 335 assertEquals(gc.getMiterLimit(), 1, 0.00001); 336 gc.restore(); 337 338 assertEquals(gc.getLineCap(), StrokeLineCap.BUTT); 339 assertEquals(gc.getLineJoin(), StrokeLineJoin.MITER); 340 assertEquals(gc.getLineWidth(), 5, 0.00001); 341 assertEquals(gc.getMiterLimit(), 3, 0.00001); 342 } 343 344 @Test 345 public void testGCState_LineCapNull() throws Exception { 346 gc.setLineCap(StrokeLineCap.BUTT); 347 gc.setLineCap(null); 348 assertEquals(gc.getLineCap(), StrokeLineCap.BUTT); 349 gc.setLineCap(StrokeLineCap.ROUND); 350 gc.setLineCap(null); 351 assertEquals(gc.getLineCap(), StrokeLineCap.ROUND); 352 gc.setLineCap(StrokeLineCap.SQUARE); 353 gc.setLineCap(null); 354 assertEquals(gc.getLineCap(), StrokeLineCap.SQUARE); 355 } 356 357 @Test 358 public void testGCState_LineJoinNull() throws Exception { 359 gc.setLineJoin(StrokeLineJoin.BEVEL); 360 gc.setLineJoin(null); 361 assertEquals(gc.getLineJoin(), StrokeLineJoin.BEVEL); 362 gc.setLineJoin(StrokeLineJoin.MITER); 363 gc.setLineJoin(null); 364 assertEquals(gc.getLineJoin(), StrokeLineJoin.MITER); 365 gc.setLineJoin(StrokeLineJoin.ROUND); 366 gc.setLineJoin(null); 367 assertEquals(gc.getLineJoin(), StrokeLineJoin.ROUND); 368 } 369 370 @Test public void testGCState_BlendMode() throws Exception { 371 gc.setGlobalBlendMode(BlendMode.ADD); 372 gc.setGlobalAlpha(0); 373 374 gc.save(); 375 gc.setGlobalAlpha(0.5); 376 gc.setGlobalBlendMode(BlendMode.COLOR_BURN); 377 assertEquals(gc.getGlobalBlendMode(), BlendMode.COLOR_BURN); 378 assertEquals(gc.getGlobalAlpha(), 0.5, 0.000001); 379 gc.restore(); 380 381 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); 382 assertEquals(0, gc.getGlobalAlpha(), 0.000001); 383 } 384 385 @Test public void testGCState_BlendMode_Null() { 386 gc.setGlobalBlendMode(BlendMode.ADD); 387 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); 388 gc.setGlobalBlendMode(null); 389 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); | 26 package javafx.scene.canvas; 27 28 import javafx.geometry.VPos; 29 import javafx.scene.NodeTest; 30 import javafx.scene.effect.BlendMode; 31 import javafx.scene.image.ImageForTesting; 32 import javafx.scene.paint.Color; 33 import javafx.scene.shape.ArcType; 34 import javafx.scene.shape.FillRule; 35 import javafx.scene.shape.StrokeLineCap; 36 import javafx.scene.shape.StrokeLineJoin; 37 import javafx.scene.text.Font; 38 import javafx.scene.text.TextAlignment; 39 import javafx.scene.transform.Affine; 40 import javafx.scene.transform.Rotate; 41 import javafx.scene.transform.Transform; 42 import org.junit.Before; 43 import org.junit.Test; 44 45 import static org.junit.Assert.assertEquals; 46 import static org.junit.Assert.assertArrayEquals; 47 import static org.junit.Assert.assertNull; 48 import static org.junit.Assert.assertNotNull; 49 50 public class CanvasTest { 51 52 private Canvas canvas; 53 private GraphicsContext gc; 54 55 @Before 56 public void setUp() { 57 canvas = new Canvas(); 58 gc = canvas.getGraphicsContext2D(); 59 } 60 61 @Test public void testPropertyPropagation_visible() throws Exception { 62 NodeTest.testBooleanPropertyPropagation(canvas, "visible", false, true); 63 } 64 65 //maybe test doing stuff from different threads 66 @Test public void testGetGC2() throws Exception { 67 GraphicsContext gc2 = canvas.getGraphicsContext2D(); 68 GraphicsContext gc3 = canvas.getGraphicsContext2D(); 315 } 316 317 @Test public void testGCState_TextAlign_Null() { 318 gc.setTextAlign(TextAlignment.JUSTIFY); 319 assertEquals(TextAlignment.JUSTIFY, gc.getTextAlign()); 320 gc.setTextAlign(null); 321 assertEquals(TextAlignment.JUSTIFY, gc.getTextAlign()); 322 } 323 324 @Test public void testGCState_Line() throws Exception { 325 gc.setLineCap(StrokeLineCap.BUTT); 326 gc.setLineJoin(StrokeLineJoin.MITER); 327 gc.setLineWidth(5); 328 gc.setMiterLimit(3); 329 330 gc.save(); 331 gc.setLineCap(StrokeLineCap.ROUND); 332 gc.setLineJoin(StrokeLineJoin.BEVEL); 333 gc.setLineWidth(1); 334 gc.setMiterLimit(1); 335 gc.setLineDashes(10, 10); 336 gc.setLineDashOffset(100); 337 assertEquals(gc.getLineCap(), StrokeLineCap.ROUND); 338 assertEquals(gc.getLineJoin(), StrokeLineJoin.BEVEL); 339 assertEquals(gc.getLineWidth(), 1, 0.00001); 340 assertEquals(gc.getMiterLimit(), 1, 0.00001); 341 assertArrayEquals(gc.getLineDashes(), new double[] {10, 10}, 0.00001); 342 assertEquals(gc.getLineDashOffset(), 100, 0.00001); 343 gc.restore(); 344 345 assertEquals(gc.getLineCap(), StrokeLineCap.BUTT); 346 assertEquals(gc.getLineJoin(), StrokeLineJoin.MITER); 347 assertEquals(gc.getLineWidth(), 5, 0.00001); 348 assertEquals(gc.getMiterLimit(), 3, 0.00001); 349 assertNull(gc.getLineDashes()); 350 assertEquals(gc.getLineDashOffset(), 0, 0.00001); 351 } 352 353 @Test 354 public void testGCState_LineCapNull() throws Exception { 355 gc.setLineCap(StrokeLineCap.BUTT); 356 gc.setLineCap(null); 357 assertEquals(gc.getLineCap(), StrokeLineCap.BUTT); 358 gc.setLineCap(StrokeLineCap.ROUND); 359 gc.setLineCap(null); 360 assertEquals(gc.getLineCap(), StrokeLineCap.ROUND); 361 gc.setLineCap(StrokeLineCap.SQUARE); 362 gc.setLineCap(null); 363 assertEquals(gc.getLineCap(), StrokeLineCap.SQUARE); 364 } 365 366 @Test 367 public void testGCState_LineJoinNull() throws Exception { 368 gc.setLineJoin(StrokeLineJoin.BEVEL); 369 gc.setLineJoin(null); 370 assertEquals(gc.getLineJoin(), StrokeLineJoin.BEVEL); 371 gc.setLineJoin(StrokeLineJoin.MITER); 372 gc.setLineJoin(null); 373 assertEquals(gc.getLineJoin(), StrokeLineJoin.MITER); 374 gc.setLineJoin(StrokeLineJoin.ROUND); 375 gc.setLineJoin(null); 376 assertEquals(gc.getLineJoin(), StrokeLineJoin.ROUND); 377 } 378 379 @Test 380 public void testGCState_LineDashNonPositive() throws Exception { 381 gc.setLineDashes(20, 10); 382 assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001); 383 gc.setLineDashes(1, Double.NaN); 384 assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001); 385 gc.setLineDashes(1, Double.POSITIVE_INFINITY); 386 assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001); 387 gc.setLineDashes(1, -1); 388 assertArrayEquals(gc.getLineDashes(), new double[] {20, 10}, 0.00001); 389 } 390 391 @Test 392 public void testGCState_LineDashNull() throws Exception { 393 gc.setLineDashes(10, 10); 394 assertNotNull(gc.getLineDashes()); 395 gc.setLineDashes(null); 396 assertNull(gc.getLineDashes()); 397 398 gc.setLineDashes(10, 10); 399 assertNotNull(gc.getLineDashes()); 400 gc.setLineDashes(); 401 assertNull(gc.getLineDashes()); 402 403 gc.setLineDashes(10, 10); 404 assertNotNull(gc.getLineDashes()); 405 gc.setLineDashes(new double[0]); 406 assertNull(gc.getLineDashes()); 407 408 gc.setLineDashes(10, 10); 409 assertNotNull(gc.getLineDashes()); 410 gc.setLineDashes(0, 0); 411 assertNull(gc.getLineDashes()); 412 } 413 414 @Test 415 public void testGCState_LineDashOddLength() throws Exception { 416 gc.setLineDashes(10); 417 assertArrayEquals(gc.getLineDashes(), new double[] {10, 10}, 0.00001); 418 gc.setLineDashes(10, 20, 30); 419 assertArrayEquals(gc.getLineDashes(), new double[] {10, 20, 30, 10, 20, 30}, 0.00001); 420 } 421 422 @Test 423 public void testGCState_LineDashOffsetNonFinite() throws Exception { 424 gc.setLineDashOffset(5.0); 425 assertEquals(gc.getLineDashOffset(), 5.0, 0.00001); 426 gc.setLineDashOffset(Double.NaN); 427 assertEquals(gc.getLineDashOffset(), 5.0, 0.00001); 428 gc.setLineDashOffset(Double.NEGATIVE_INFINITY); 429 assertEquals(gc.getLineDashOffset(), 5.0, 0.00001); 430 gc.setLineDashOffset(Double.POSITIVE_INFINITY); 431 assertEquals(gc.getLineDashOffset(), 5.0, 0.00001); 432 } 433 434 @Test public void testGCState_BlendMode() throws Exception { 435 gc.setGlobalBlendMode(BlendMode.ADD); 436 gc.setGlobalAlpha(0); 437 438 gc.save(); 439 gc.setGlobalAlpha(0.5); 440 gc.setGlobalBlendMode(BlendMode.COLOR_BURN); 441 assertEquals(gc.getGlobalBlendMode(), BlendMode.COLOR_BURN); 442 assertEquals(gc.getGlobalAlpha(), 0.5, 0.000001); 443 gc.restore(); 444 445 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); 446 assertEquals(0, gc.getGlobalAlpha(), 0.000001); 447 } 448 449 @Test public void testGCState_BlendMode_Null() { 450 gc.setGlobalBlendMode(BlendMode.ADD); 451 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); 452 gc.setGlobalBlendMode(null); 453 assertEquals(BlendMode.ADD, gc.getGlobalBlendMode()); |