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