1 /* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.javafx.scene.effect; 27 28 import static test.com.sun.javafx.test.TestHelper.box; 29 import static org.junit.Assert.assertEquals; 30 import static org.junit.Assert.assertNull; 31 import javafx.beans.property.DoubleProperty; 32 import javafx.beans.property.SimpleDoubleProperty; 33 import javafx.scene.paint.Color; 34 35 import org.junit.Before; 36 import org.junit.Test; 37 38 import com.sun.scenario.effect.AbstractShadow.ShadowMode; 39 import com.sun.scenario.effect.Color4f; 40 import javafx.scene.effect.BlurType; 41 import javafx.scene.effect.BoxBlur; 42 import javafx.scene.effect.InnerShadow; 43 44 public class InnerShadowTest extends EffectsTestBase { 45 private InnerShadow effect; 46 private static final Color4f red = new Color4f( 47 (float) Color.RED.getRed(), 48 (float) Color.RED.getGreen(), 49 (float) Color.RED.getBlue(), 50 (float) Color.RED.getOpacity() 51 ); 52 private static final Color4f black = new Color4f( 53 (float) Color.BLACK.getRed(), 54 (float) Color.BLACK.getGreen(), 55 (float) Color.BLACK.getBlue(), 56 (float) Color.BLACK.getOpacity() 57 ); 58 59 @Before 60 public void setUp() { 61 effect = new InnerShadow(); 62 setupTest(effect); 63 } 64 65 @Test 66 public void testSetBlurType() { 67 // try setting correct value 68 effect.setBlurType(BlurType.ONE_PASS_BOX); 69 assertEquals(BlurType.ONE_PASS_BOX, effect.getBlurType()); 70 pulse(); 71 assertEquals(ShadowMode.ONE_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 72 73 effect.setBlurType(BlurType.TWO_PASS_BOX); 74 assertEquals(BlurType.TWO_PASS_BOX, effect.getBlurType()); 75 pulse(); 76 assertEquals(ShadowMode.TWO_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 77 78 effect.setBlurType(BlurType.THREE_PASS_BOX); 79 assertEquals(BlurType.THREE_PASS_BOX, effect.getBlurType()); 80 pulse(); 81 assertEquals(ShadowMode.THREE_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 82 83 effect.setBlurType(BlurType.GAUSSIAN); 84 assertEquals(BlurType.GAUSSIAN, effect.getBlurType()); 85 pulse(); 86 assertEquals(ShadowMode.GAUSSIAN, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 87 } 88 89 @Test 90 public void testDefaultBlurType() { 91 // default value should be BlurType.THREE_PASS_BOX 92 assertEquals(BlurType.THREE_PASS_BOX, effect.getBlurType()); 93 assertEquals(BlurType.THREE_PASS_BOX, effect.blurTypeProperty().get()); 94 pulse(); 95 assertEquals(ShadowMode.THREE_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 96 } 97 98 @Test 99 public void testNullBlurType() { 100 // null should default to BlurType.THREE_PASS_BOX in render tree 101 effect.setBlurType(null); 102 assertNull(effect.getBlurType()); 103 assertNull(effect.blurTypeProperty().get()); 104 pulse(); 105 assertEquals(ShadowMode.THREE_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 106 } 107 108 @Test 109 public void testSetColor() { 110 // try setting correct value 111 effect.setColor(Color.RED); 112 assertEquals(Color.RED, effect.getColor()); 113 pulse(); 114 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 115 assertColor4fEquals(red, actual); 116 } 117 118 @Test 119 public void testDefaultColor() { 120 // default value should be Color.BLACK 121 assertEquals(Color.BLACK, effect.getColor()); 122 assertEquals(Color.BLACK, effect.colorProperty().get()); 123 pulse(); 124 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 125 assertColor4fEquals(black, actual); 126 } 127 128 @Test 129 public void testNullColor() { 130 // null color should default to Color.BLACK in render tree 131 effect.setColor(null); 132 assertNull(effect.getColor()); 133 assertNull(effect.colorProperty().get()); 134 pulse(); 135 Color color = Color.BLACK; 136 Color4f black = new Color4f((float) color.getRed(), (float) color.getGreen(), 137 (float) color.getBlue(), (float) color.getOpacity()); 138 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 139 assertColor4fEquals(black, actual); 140 } 141 142 @Test 143 public void testSetWidth() { 144 // try setting correct value 145 effect.setWidth(9.0f); 146 assertEquals(9.0f, effect.getWidth(), 1e-100); 147 pulse(); 148 assertEquals(9.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 149 // test that radius changed appropriately 150 // radius = (((width + height)/2) -1) /2 151 assertEquals(7.0f, effect.getRadius(), 1e-100); 152 } 153 154 @Test 155 public void testDefaultWidth() { 156 // default value should be 21 157 assertEquals(21f, effect.getWidth(), 1e-100); 158 assertEquals(21f, effect.widthProperty().get(), 1e-100); 159 pulse(); 160 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 161 } 162 163 @Test 164 public void testMinWidth() { 165 // 0 should be ok 166 effect.setWidth(0); 167 // try setting value smaller than minimal 168 effect.setWidth(-0.1f); 169 assertEquals(-0.1f, effect.getWidth(), 1e-100); 170 pulse(); 171 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 172 } 173 174 @Test 175 public void testMaxWidth() { 176 // 255 should be ok 177 effect.setWidth(255); 178 // try setting value greater than maximal 179 effect.setWidth(255.1f); 180 assertEquals(255.1f, effect.getWidth(), 1e-100); 181 pulse(); 182 assertEquals(255f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 183 } 184 185 @Test 186 public void testSetHeight() { 187 // try setting correct value 188 effect.setHeight(9.0f); 189 assertEquals(9.0f, effect.getHeight(), 1e-100); 190 pulse(); 191 assertEquals(9.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 192 // check that radius changed appropriately 193 // radius = (((width + height)/2) -1) /2 194 assertEquals(7.0f, effect.getRadius(), 1e-100); 195 } 196 197 @Test 198 public void testDefaultHeight() { 199 // default value should be 21 200 assertEquals(21f, effect.getHeight(), 1e-100); 201 assertEquals(21f, effect.heightProperty().get(), 1e-100); 202 pulse(); 203 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 204 } 205 206 @Test 207 public void testMinHeight() { 208 // 0 should be ok 209 effect.setHeight(0); 210 // try setting value smaller than minimal 211 effect.setHeight(-0.1f); 212 assertEquals(-0.1f, effect.getHeight(), 1e-100); 213 pulse(); 214 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 215 } 216 217 @Test 218 public void testMaxHeight() { 219 // 255 should be ok 220 effect.setHeight(1); 221 // try setting value greater than maximal 222 effect.setHeight(255.1f); 223 assertEquals(255.1f, effect.getHeight(), 1e-100); 224 pulse(); 225 assertEquals(255f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 226 } 227 228 @Test 229 public void testSetRadius() { 230 // try setting correct value 231 effect.setRadius(4.0f); 232 assertEquals(4.0f, effect.getRadius(), 1e-100); 233 pulse(); 234 assertEquals(4.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 235 // test that width and height changed appropriately 236 assertEquals(9.0f, effect.getHeight(), 1e-100); 237 assertEquals(9.0f, effect.getWidth(), 1e-100); 238 } 239 240 @Test 241 public void testDefaultRadius() { 242 // default value should be 10 243 assertEquals(10f, effect.getRadius(), 1e-100); 244 assertEquals(10f, effect.radiusProperty().get(), 1e-100); 245 pulse(); 246 assertEquals(10f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 247 } 248 249 @Test 250 public void testMinRadius() { 251 // 0 should be ok 252 effect.setRadius(0); 253 // try setting value smaller than minimal 254 effect.setRadius(-0.1f); 255 assertEquals(-0.1f, effect.getRadius(), 1e-100); 256 pulse(); 257 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 258 } 259 260 @Test 261 public void testMaxRadius() { 262 // 127 should be ok 263 effect.setRadius(127); 264 // try setting value greater than maximal 265 effect.setRadius(127.1f); 266 assertEquals(127.1f, effect.getRadius(), 1e-100); 267 pulse(); 268 assertEquals(127f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 269 } 270 271 @Test 272 public void testRadiusNotNegative() { 273 effect.setHeight(0.1f); 274 effect.setWidth(0.1f); 275 // radius should be 0, not negative 276 assertEquals(0f, effect.getRadius(), 1e-100); 277 pulse(); 278 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 279 280 effect.setWidth(0.2f); 281 effect.setHeight(0.2f); 282 // radius should be 0, not negative 283 assertEquals(0f, effect.getRadius(), 1e-100); 284 pulse(); 285 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 286 } 287 288 @Test 289 public void testSetChoke() { 290 // try setting correct value 291 effect.setChoke(1.0f); 292 assertEquals(1.0f, effect.getChoke(), 1e-100); 293 pulse(); 294 assertEquals(1.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 295 } 296 297 @Test 298 public void testDefaultChoke() { 299 // default value should be 0 300 assertEquals(0f, effect.getChoke(), 1e-100); 301 assertEquals(0f, effect.chokeProperty().get(), 1e-100); 302 pulse(); 303 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 304 } 305 306 @Test 307 public void testMinChoke() { 308 // 0 should be ok 309 effect.setChoke(0); 310 // try setting value smaller than minimal 311 effect.setChoke(-0.1f); 312 assertEquals(-0.1f, effect.getChoke(), 1e-100); 313 pulse(); 314 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 315 } 316 317 @Test 318 public void testMaxChoke() { 319 // 1 should be ok 320 effect.setChoke(1); 321 // try setting value greater than maximal 322 effect.setChoke(1.1f); 323 assertEquals(1.1f, effect.getChoke(), 1e-100); 324 pulse(); 325 assertEquals(1f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 326 } 327 328 @Test 329 public void testSetOffsetX() { 330 // try setting correct value 331 effect.setOffsetX(1.0f); 332 assertEquals(1.0f, effect.getOffsetX(), 1e-100); 333 pulse(); 334 assertEquals(1.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 335 } 336 337 @Test 338 public void testDefaultOffsetX() { 339 // default value should be 0 340 assertEquals(0f, effect.getOffsetX(), 1e-100); 341 assertEquals(0f, effect.offsetXProperty().get(), 1e-100); 342 pulse(); 343 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 344 } 345 346 @Test 347 public void testSetOffsetY() { 348 // try setting correct value 349 effect.setOffsetY(1.0f); 350 assertEquals(1.0f, effect.getOffsetY(), 1e-100); 351 pulse(); 352 assertEquals(1.0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 353 } 354 355 @Test 356 public void testDefaultOffsetY() { 357 // default value should be 0 358 assertEquals(0f, effect.getOffsetY(), 1e-100); 359 assertEquals(0f, effect.offsetYProperty().get(), 1e-100); 360 pulse(); 361 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 362 } 363 364 @Test 365 public void testCreateWithParams2() { 366 effect = new InnerShadow(4, Color.RED); 367 setEffect(effect); 368 assertEquals(4, effect.getRadius(), 1e-100); 369 assertEquals(Color.RED, effect.getColor()); 370 // test that width and height changed appropriately 371 assertEquals(9, effect.getHeight(), 1e-100); 372 assertEquals(9, effect.getWidth(), 1e-100); 373 374 pulse(); 375 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 376 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 377 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 378 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 379 assertColor4fEquals(red, actual); 380 } 381 382 @Test 383 public void testCreateWithParams4() { 384 effect = new InnerShadow(4, 1, 1, Color.RED); 385 setEffect(effect); 386 assertEquals(4, effect.getRadius(), 1e-100); 387 assertEquals(1, effect.getOffsetX(), 1e-100); 388 assertEquals(1, effect.getOffsetY(), 1e-100); 389 assertEquals(Color.RED, effect.getColor()); 390 391 // test that width and height changed appropriately 392 assertEquals(9, effect.getHeight(), 1e-100); 393 assertEquals(9, effect.getWidth(), 1e-100); 394 395 pulse(); 396 397 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 398 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 399 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 400 assertEquals(1, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 401 assertEquals(1, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 402 403 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 404 assertColor4fEquals(red, actual); 405 } 406 407 @Test 408 public void testCreateWithParams6() { 409 effect = new InnerShadow(BlurType.GAUSSIAN, Color.RED, 4, 0.5, 1, 2); 410 setupTest(effect); 411 assertEquals(1, effect.getOffsetX(), 1e-100); 412 assertEquals(2, effect.getOffsetY(), 1e-100); 413 assertEquals(4, effect.getRadius(), 1e-100); 414 assertEquals(0.5, effect.getChoke(), 1e-100); 415 assertEquals(Color.RED, effect.getColor()); 416 assertEquals(BlurType.GAUSSIAN, effect.getBlurType()); 417 // test that width and height changed appropriately 418 assertEquals(9, effect.getHeight(), 1e-100); 419 assertEquals(9, effect.getWidth(), 1e-100); 420 pulse(); 421 assertEquals(4f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 422 assertEquals(0.5f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 423 assertEquals(1f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 424 assertEquals(2f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 425 assertEquals(ShadowMode.GAUSSIAN, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 426 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 427 assertColor4fEquals(red, actual); 428 } 429 430 @Test 431 public void testCreateWithDefaultParams2() { 432 effect = new InnerShadow(10, Color.BLACK); 433 setEffect(effect); 434 assertEquals(10, effect.getRadius(), 1e-100); 435 assertEquals(Color.BLACK, effect.getColor()); 436 // test that width and height changed appropriately 437 assertEquals(21, effect.getHeight(), 1e-100); 438 assertEquals(21, effect.getWidth(), 1e-100); 439 440 pulse(); 441 assertEquals(10f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 442 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 443 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 444 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 445 assertColor4fEquals(black, actual); 446 } 447 448 @Test 449 public void testCreateWithDefaultParams4() { 450 effect = new InnerShadow(10, 0, 0, Color.BLACK); 451 setEffect(effect); 452 assertEquals(10, effect.getRadius(), 1e-100); 453 assertEquals(0, effect.getOffsetX(), 1e-100); 454 assertEquals(0, effect.getOffsetY(), 1e-100); 455 assertEquals(Color.BLACK, effect.getColor()); 456 457 // test that width and height changed appropriately 458 assertEquals(21, effect.getHeight(), 1e-100); 459 assertEquals(21, effect.getWidth(), 1e-100); 460 461 pulse(); 462 463 assertEquals(10f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getRadius(), 1e-100); 464 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 465 assertEquals(21f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 466 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 467 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 468 469 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 470 assertColor4fEquals(black, actual); 471 } 472 473 @Test 474 public void testCreateWithDefaultParams6() { 475 effect = new InnerShadow(BlurType.THREE_PASS_BOX, Color.BLACK, 10, 0, 0, 0); 476 setupTest(effect); 477 assertEquals(0, effect.getOffsetX(), 1e-100); 478 assertEquals(0, effect.getOffsetY(), 1e-100); 479 assertEquals(10, effect.getRadius(), 1e-100); 480 assertEquals(0, effect.getChoke(), 1e-100); 481 assertEquals(Color.BLACK, effect.getColor()); 482 assertEquals(BlurType.THREE_PASS_BOX, effect.getBlurType()); 483 // test that width and height changed appropriately 484 assertEquals(21, effect.getHeight(), 1e-100); 485 assertEquals(21, effect.getWidth(), 1e-100); 486 pulse(); 487 assertEquals(10f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 488 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getChoke(), 1e-100); 489 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetX(), 1e-100); 490 assertEquals(0f, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getOffsetY(), 1e-100); 491 assertEquals(ShadowMode.THREE_PASS_BOX, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getShadowMode()); 492 Color4f actual = ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getColor(); 493 assertColor4fEquals(black, actual); 494 } 495 496 @Test 497 public void testHeightSynced() throws Exception { 498 checkDoublePropertySynced( 499 "javafx.scene.effect.InnerShadow", "height", 500 "com.sun.scenario.effect.InnerShadow", "gaussianHeight", 9); 501 assertEquals(7, effect.getRadius(), 1e-100); 502 } 503 504 @Test 505 public void testWidthSynced() throws Exception { 506 checkDoublePropertySynced( 507 "javafx.scene.effect.InnerShadow", "width", 508 "com.sun.scenario.effect.InnerShadow", "gaussianWidth", 9); 509 assertEquals(7, effect.getRadius(), 1e-100); 510 } 511 512 @Test 513 public void testBlurTypeSynced() throws Exception { 514 checkObjectPropertySynced( 515 "javafx.scene.effect.InnerShadow", "blurType", 516 "com.sun.scenario.effect.InnerShadow", "shadowMode", 517 BlurType.TWO_PASS_BOX, ShadowMode.TWO_PASS_BOX, 518 BlurType.GAUSSIAN); 519 } 520 521 @Test 522 public void testOffsetXSynced() throws Exception { 523 checkDoublePropertySynced( 524 "javafx.scene.effect.InnerShadow", "offsetX", 525 "com.sun.scenario.effect.InnerShadow", "offsetX", 10); 526 } 527 528 @Test 529 public void testOffsetYSynced() throws Exception { 530 checkDoublePropertySynced( 531 "javafx.scene.effect.InnerShadow", "offsetY", 532 "com.sun.scenario.effect.InnerShadow", "offsetY", 10); 533 } 534 535 @Test 536 public void testRadiusSynced() throws Exception { 537 checkDoublePropertySynced( 538 "javafx.scene.effect.InnerShadow", "radius", 539 "com.sun.scenario.effect.InnerShadow", "radius", 4); 540 assertEquals(9, effect.getHeight(), 1e-100); 541 assertEquals(9, effect.getWidth(), 1e-100); 542 } 543 544 @Test 545 public void testChokeSynced() throws Exception { 546 checkDoublePropertySynced( 547 "javafx.scene.effect.InnerShadow", "choke", 548 "com.sun.scenario.effect.InnerShadow", "choke", 0.3); 549 } 550 551 @Test 552 public void testInputSynced() throws Exception { 553 BoxBlur blur = new BoxBlur(); 554 checkEffectPropertySynced( 555 "javafx.scene.effect.InnerShadow", "input", 556 "com.sun.scenario.effect.InnerShadow", "contentInput", 557 blur, (com.sun.scenario.effect.BoxBlur)blur.impl_getImpl()); 558 } 559 560 @Test 561 public void testColorSynced() throws Exception { 562 Color4f result = (Color4f) getObjectPropertySynced( 563 "javafx.scene.effect.InnerShadow", "color", 564 "com.sun.scenario.effect.InnerShadow", "color", 565 Color.RED); 566 assertColor4fEquals(red, result); 567 } 568 569 // test whether width/height are changing correctly if radius is bound 570 // and one of them is changed 571 @Test 572 public void testRadiusBound() throws Exception { 573 DoubleProperty boundRadius = new SimpleDoubleProperty(); 574 575 effect.radiusProperty().bind(boundRadius); 576 577 boundRadius.set(4); 578 effect.setWidth(9); 579 580 assertEquals(9, effect.getHeight(), 1e-100); 581 pulse(); 582 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 583 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 584 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 585 586 effect.setHeight(3); 587 assertEquals(15, effect.getWidth(), 1e-100); 588 pulse(); 589 assertEquals(15, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 590 } 591 592 // test whether width/radius are changing correctly if height is bound 593 // and one of them is changed 594 @Test 595 public void testHeightBound() throws Exception { 596 DoubleProperty boundHeight = new SimpleDoubleProperty(); 597 598 effect.heightProperty().bind(boundHeight); 599 600 boundHeight.set(9); 601 effect.setRadius(4); 602 603 assertEquals(9, effect.getWidth(), 1e-100); 604 pulse(); 605 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 606 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 607 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 608 609 effect.setWidth(3); 610 assertEquals(2.5, effect.getRadius(), 1e-100); 611 } 612 613 // test whether height/radius are changing correctly if width is bound 614 // and one of them is changed 615 @Test 616 public void testWidthBound() throws Exception { 617 DoubleProperty boundWidth = new SimpleDoubleProperty(); 618 619 effect.widthProperty().bind(boundWidth); 620 621 boundWidth.set(9); 622 effect.setRadius(4); 623 624 assertEquals(9, effect.getHeight(), 1e-100); 625 pulse(); 626 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 627 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 628 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 629 630 effect.setHeight(3); 631 assertEquals(2.5, effect.getRadius(), 1e-100); 632 } 633 634 // Test for special cases when 2 of width, height, radius are bound 635 @Test 636 public void testRadiusWidthBound() throws Exception { 637 DoubleProperty boundRadius = new SimpleDoubleProperty(); 638 DoubleProperty boundWidth = new SimpleDoubleProperty(); 639 640 effect.radiusProperty().bind(boundRadius); 641 effect.widthProperty().bind(boundWidth); 642 643 boundRadius.set(4); 644 boundWidth.set(9); 645 646 assertEquals(9, effect.getHeight(), 1e-100); 647 pulse(); 648 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 649 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 650 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 651 652 // set radius once again to be sure that the order of calls is not 653 // important 654 boundRadius.set(7); 655 assertEquals(21, effect.getHeight(), 1e-100); 656 pulse(); 657 assertEquals(21, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 658 } 659 660 @Test 661 public void testRadiusHeightBound() throws Exception { 662 DoubleProperty boundRadius = new SimpleDoubleProperty(); 663 DoubleProperty boundHeight = new SimpleDoubleProperty(); 664 665 effect.radiusProperty().bind(boundRadius); 666 effect.heightProperty().bind(boundHeight); 667 668 boundRadius.set(4); 669 boundHeight.set(9); 670 671 assertEquals(9, effect.getWidth(), 1e-100); 672 pulse(); 673 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 674 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 675 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 676 677 boundRadius.set(7); 678 assertEquals(21, effect.getWidth(), 1e-100); 679 pulse(); 680 assertEquals(21, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 681 } 682 683 @Test 684 public void testWidthHeightBound() throws Exception { 685 DoubleProperty boundWidth = new SimpleDoubleProperty(); 686 DoubleProperty boundHeight = new SimpleDoubleProperty(); 687 688 effect.widthProperty().bind(boundWidth); 689 effect.heightProperty().bind(boundHeight); 690 691 boundHeight.set(9); 692 boundWidth.set(9); 693 694 assertEquals(4, effect.getRadius(), 1e-100); 695 pulse(); 696 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 697 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 698 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 699 700 boundHeight.set(21); 701 assertEquals(7, effect.getRadius(), 1e-100); 702 pulse(); 703 assertEquals(7, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 704 } 705 706 // all radius, width and height are bound, radius is ignored in this case 707 // just test that it doesn't end in infinite loop 708 @Test 709 public void testWidthHeightRadiusBound() { 710 DoubleProperty boundWidth = new SimpleDoubleProperty(); 711 DoubleProperty boundHeight = new SimpleDoubleProperty(); 712 DoubleProperty boundRadius = new SimpleDoubleProperty(); 713 714 effect.widthProperty().bind(boundWidth); 715 effect.heightProperty().bind(boundHeight); 716 effect.radiusProperty().bind(boundRadius); 717 718 boundHeight.set(9); 719 boundWidth.set(9); 720 boundRadius.set(5); 721 722 pulse(); 723 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianHeight(), 1e-100); 724 assertEquals(9, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianWidth(), 1e-100); 725 assertEquals(4, ((com.sun.scenario.effect.InnerShadow) effect.impl_getImpl()).getGaussianRadius(), 1e-100); 726 } 727 728 @Test 729 public void testBounds() { 730 assertEquals(box(0, 0, 100, 100), n.getBoundsInLocal()); 731 } 732 733 @Test 734 public void testBoundsWidthInput() { 735 assertEquals(box(0, 0, 100, 100), n.getBoundsInLocal()); 736 BoxBlur blur = new BoxBlur(); 737 effect.setInput(blur); 738 assertEquals(box(-2, -2, 104, 104), n.getBoundsInLocal()); 739 } 740 }