1 /* 2 * Copyright (c) 2012, 2014, 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.input; 27 28 import com.sun.javafx.pgstub.StubScene; 29 import com.sun.javafx.test.MouseEventGenerator; 30 import javafx.event.Event; 31 import javafx.event.EventHandler; 32 import javafx.geometry.Point3D; 33 import javafx.scene.Group; 34 import javafx.scene.Scene; 35 import javafx.scene.shape.Rectangle; 36 import javafx.stage.Stage; 37 import org.junit.Assert; 38 import org.junit.Test; 39 import static org.junit.Assert.*; 40 41 public class ZoomEventTest { 42 43 private boolean zoomed; 44 private boolean zoomed2; 45 private PickResult pickRes; 46 47 @Test public void testShortConstructor() { 48 Rectangle node = new Rectangle(); 49 node.setTranslateX(3); 50 node.setTranslateY(2); 51 node.setTranslateZ(50); 52 53 pickRes = new PickResult(node, new Point3D(15, 25, 100), 33); 54 ZoomEvent e = new ZoomEvent( 55 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 56 false, true, false, true, false, true, 57 0.75, 1.5, pickRes); 58 59 assertSame(ZoomEvent.ZOOM_FINISHED, e.getEventType()); 60 assertSame(pickRes, e.getPickResult()); 61 assertEquals(18, e.getX(), 10e-20); 62 assertEquals(27, e.getY(), 10e-20); 63 assertEquals(150, e.getZ(), 10e-20); 64 assertEquals(10, e.getSceneX(), 10e-20); 65 assertEquals(20, e.getSceneY(), 10e-20); 66 assertEquals(30, e.getScreenX(), 10e-20); 67 assertEquals(40, e.getScreenY(), 10e-20); 68 assertFalse(e.isShiftDown()); 69 assertTrue(e.isControlDown()); 70 assertFalse(e.isAltDown()); 71 assertTrue(e.isMetaDown()); 72 assertFalse(e.isDirect()); 73 assertTrue(e.isInertia()); 74 assertEquals(0.75, e.getZoomFactor(), 10e-20); 75 assertEquals(1.5, e.getTotalZoomFactor(), 10e-20); 76 assertSame(Event.NULL_SOURCE_TARGET, e.getSource()); 77 assertSame(Event.NULL_SOURCE_TARGET, e.getTarget()); 78 assertFalse(e.isConsumed()); 79 80 e = new ZoomEvent( 81 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 82 true, false, true, false, true, false, 83 0.75, 1.5, pickRes); 84 assertTrue(e.isShiftDown()); 85 assertFalse(e.isControlDown()); 86 assertTrue(e.isAltDown()); 87 assertFalse(e.isMetaDown()); 88 assertTrue(e.isDirect()); 89 assertFalse(e.isInertia()); 90 } 91 92 @Test public void testShortConstructorWithoutPickResult() { 93 ZoomEvent e = new ZoomEvent( 94 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 95 false, true, false, true, false, true, 96 0.75, 1.5, null); 97 98 assertEquals(10, e.getX(), 10e-20); 99 assertEquals(20, e.getY(), 10e-20); 100 assertEquals(0, e.getZ(), 10e-20); 101 assertEquals(10, e.getSceneX(), 10e-20); 102 assertEquals(20, e.getSceneY(), 10e-20); 103 assertEquals(30, e.getScreenX(), 10e-20); 104 assertEquals(40, e.getScreenY(), 10e-20); 105 assertNotNull(e.getPickResult()); 106 assertNotNull(e.getPickResult().getIntersectedPoint()); 107 assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20); 108 assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20); 109 assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20); 110 assertSame(Event.NULL_SOURCE_TARGET, e.getSource()); 111 assertSame(Event.NULL_SOURCE_TARGET, e.getTarget()); 112 } 113 114 @Test public void testLongConstructor() { 115 Rectangle node = new Rectangle(10, 10); 116 node.setTranslateX(3); 117 node.setTranslateY(2); 118 node.setTranslateZ(50); 119 Rectangle n1 = new Rectangle(10, 10); 120 Rectangle n2 = new Rectangle(10, 10); 121 122 pickRes = new PickResult(node, new Point3D(15, 25, 100), 33); 123 ZoomEvent e = new ZoomEvent(n1, n2, 124 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 125 false, true, false, true, false, true, 126 0.75, 1.5, pickRes); 127 128 assertSame(n1, e.getSource()); 129 assertSame(n2, e.getTarget()); 130 assertSame(ZoomEvent.ZOOM_FINISHED, e.getEventType()); 131 assertSame(pickRes, e.getPickResult()); 132 assertEquals(18, e.getX(), 10e-20); 133 assertEquals(27, e.getY(), 10e-20); 134 assertEquals(150, e.getZ(), 10e-20); 135 assertEquals(10, e.getSceneX(), 10e-20); 136 assertEquals(20, e.getSceneY(), 10e-20); 137 assertEquals(30, e.getScreenX(), 10e-20); 138 assertEquals(40, e.getScreenY(), 10e-20); 139 assertFalse(e.isShiftDown()); 140 assertTrue(e.isControlDown()); 141 assertFalse(e.isAltDown()); 142 assertTrue(e.isMetaDown()); 143 assertFalse(e.isDirect()); 144 assertTrue(e.isInertia()); 145 assertEquals(0.75, e.getZoomFactor(), 10e-20); 146 assertEquals(1.5, e.getTotalZoomFactor(), 10e-20); 147 assertFalse(e.isConsumed()); 148 149 e = new ZoomEvent(n1, n2, 150 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 151 true, false, true, false, true, false, 152 0.75, 1.5, pickRes); 153 assertTrue(e.isShiftDown()); 154 assertFalse(e.isControlDown()); 155 assertTrue(e.isAltDown()); 156 assertFalse(e.isMetaDown()); 157 assertTrue(e.isDirect()); 158 assertFalse(e.isInertia()); 159 } 160 161 @Test public void testLongConstructorWithoutPickResult() { 162 Rectangle n1 = new Rectangle(10, 10); 163 Rectangle n2 = new Rectangle(10, 10); 164 ZoomEvent e = new ZoomEvent(n1, n2, 165 ZoomEvent.ZOOM_FINISHED, 10, 20, 30, 40, 166 false, true, false, true, false, true, 167 0.75, 1.5, null); 168 169 assertSame(n1, e.getSource()); 170 assertSame(n2, e.getTarget()); 171 assertEquals(10, e.getX(), 10e-20); 172 assertEquals(20, e.getY(), 10e-20); 173 assertEquals(0, e.getZ(), 10e-20); 174 assertEquals(10, e.getSceneX(), 10e-20); 175 assertEquals(20, e.getSceneY(), 10e-20); 176 assertEquals(30, e.getScreenX(), 10e-20); 177 assertEquals(40, e.getScreenY(), 10e-20); 178 assertNotNull(e.getPickResult()); 179 assertNotNull(e.getPickResult().getIntersectedPoint()); 180 assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20); 181 assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20); 182 assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20); 183 } 184 185 @Test 186 public void shouldDeliverZoomEventToPickedNode() { 187 Scene scene = createScene(); 188 Rectangle rect = 189 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 190 191 zoomed = false; 192 rect.setOnZoom(event -> { 193 zoomed = true; 194 }); 195 196 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 197 ZoomEvent.ZOOM, 1, 1, 198 50, 50, 50, 50, false, false, false, false, false, false); 199 200 assertFalse(zoomed); 201 202 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 203 ZoomEvent.ZOOM, 1, 1, 204 150, 150, 150, 150, false, false, false, false, false, false); 205 206 assertTrue(zoomed); 207 } 208 209 @Test 210 public void shouldPassFactors() { 211 Scene scene = createScene(); 212 Rectangle rect = 213 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 214 215 zoomed = false; 216 rect.setOnZoom(event -> { 217 Assert.assertEquals(1.2, event.getZoomFactor(), 0.0001); 218 Assert.assertEquals(2.4, event.getTotalZoomFactor(), 0.0001); 219 zoomed = true; 220 }); 221 222 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 223 ZoomEvent.ZOOM, 1.2, 2.4, 224 150, 150, 150, 150, false, false, false, false, false, false); 225 226 assertTrue(zoomed); 227 } 228 229 @Test 230 public void shouldPassModifiers() { 231 Scene scene = createScene(); 232 Rectangle rect = 233 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 234 235 zoomed = false; 236 rect.setOnZoom(event -> { 237 assertTrue(event.isShiftDown()); 238 assertFalse(event.isControlDown()); 239 assertTrue(event.isAltDown()); 240 assertFalse(event.isMetaDown()); 241 zoomed = true; 242 }); 243 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 244 ZoomEvent.ZOOM, 2, 3, 245 150, 150, 150, 150, true, false, true, false, false, false); 246 assertTrue(zoomed); 247 248 zoomed = false; 249 rect.setOnZoom(event -> { 250 assertFalse(event.isShiftDown()); 251 assertTrue(event.isControlDown()); 252 assertFalse(event.isAltDown()); 253 assertTrue(event.isMetaDown()); 254 zoomed = true; 255 }); 256 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 257 ZoomEvent.ZOOM, 2, 3, 258 150, 150, 150, 150, false, true, false, true, false, false); 259 assertTrue(zoomed); 260 } 261 262 @Test 263 public void shouldPassDirect() { 264 Scene scene = createScene(); 265 Rectangle rect = 266 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 267 268 zoomed = false; 269 rect.setOnZoom(event -> { 270 assertTrue(event.isDirect()); 271 zoomed = true; 272 }); 273 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 274 ZoomEvent.ZOOM, 2, 3, 275 150, 150, 150, 150, true, false, true, false, true, false); 276 assertTrue(zoomed); 277 278 zoomed = false; 279 rect.setOnZoom(event -> { 280 assertFalse(event.isDirect()); 281 zoomed = true; 282 }); 283 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 284 ZoomEvent.ZOOM, 2, 3, 285 150, 150, 150, 150, false, true, false, true, false, false); 286 assertTrue(zoomed); 287 } 288 289 @Test 290 public void shouldPassInertia() { 291 Scene scene = createScene(); 292 Rectangle rect = 293 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 294 295 zoomed = false; 296 rect.setOnZoom(event -> { 297 assertTrue(event.isInertia()); 298 zoomed = true; 299 }); 300 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 301 ZoomEvent.ZOOM, 2, 3, 302 150, 150, 150, 150, true, false, true, false, false, true); 303 assertTrue(zoomed); 304 305 zoomed = false; 306 rect.setOnZoom(event -> { 307 assertFalse(event.isInertia()); 308 zoomed = true; 309 }); 310 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 311 ZoomEvent.ZOOM, 2, 3, 312 150, 150, 150, 150, false, true, false, true, false, false); 313 assertTrue(zoomed); 314 } 315 316 @Test 317 public void shouldPassEventType() { 318 Scene scene = createScene(); 319 Rectangle rect = 320 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 321 322 zoomed = false; 323 rect.setOnZoomStarted(event -> { 324 zoomed = true; 325 }); 326 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 327 ZoomEvent.ZOOM_STARTED, 2, 3, 328 150, 150, 150, 150, true, false, true, false, true, false); 329 assertTrue(zoomed); 330 331 zoomed = false; 332 rect.setOnZoomFinished(event -> { 333 zoomed = true; 334 }); 335 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 336 ZoomEvent.ZOOM_FINISHED, 2, 3, 337 150, 150, 150, 150, true, false, true, false, true, false); 338 assertTrue(zoomed); 339 } 340 341 @Test 342 public void handlingAnyShouldGetAllTypes() { 343 Scene scene = createScene(); 344 Rectangle rect = 345 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 346 347 rect.addEventHandler(ZoomEvent.ANY, event -> { 348 zoomed = true; 349 }); 350 351 zoomed = false; 352 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 353 ZoomEvent.ZOOM_STARTED, 2, 3, 354 150, 150, 150, 150, true, false, true, false, true, false); 355 assertTrue(zoomed); 356 357 zoomed = false; 358 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 359 ZoomEvent.ZOOM, 2, 3, 360 150, 150, 150, 150, true, false, true, false, true, false); 361 assertTrue(zoomed); 362 363 zoomed = false; 364 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 365 ZoomEvent.ZOOM_FINISHED, 2, 3, 366 150, 150, 150, 150, true, false, true, false, true, false); 367 assertTrue(zoomed); 368 } 369 370 @Test 371 public void shouldDeliverWholeGestureToOneNode() { 372 Scene scene = createScene(); 373 Rectangle rect1 = 374 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 375 Rectangle rect2 = 376 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(1); 377 378 rect1.addEventHandler(ZoomEvent.ANY, event -> { 379 zoomed = true; 380 }); 381 rect2.addEventHandler(ZoomEvent.ANY, event -> { 382 zoomed2 = true; 383 }); 384 385 zoomed = false; 386 zoomed2 = false; 387 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 388 ZoomEvent.ZOOM_STARTED, 2, 3, 389 150, 150, 150, 150, true, false, true, false, true, false); 390 assertTrue(zoomed); 391 assertFalse(zoomed2); 392 393 zoomed = false; 394 zoomed2 = false; 395 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 396 ZoomEvent.ZOOM, 2, 3, 397 250, 250, 250, 250, true, false, true, false, true, false); 398 assertTrue(zoomed); 399 assertFalse(zoomed2); 400 401 zoomed = false; 402 zoomed2 = false; 403 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 404 ZoomEvent.ZOOM_FINISHED, 2, 3, 405 250, 250, 250, 250, true, false, true, false, true, false); 406 assertTrue(zoomed); 407 assertFalse(zoomed2); 408 } 409 410 @Test 411 public void shouldCompute3dCoordinates() { 412 Scene scene = createScene(); 413 Rectangle rect = 414 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 415 rect.setTranslateZ(50); 416 417 zoomed = false; 418 zoomed2 = false; 419 rect.setOnZoom(event -> { 420 Assert.assertEquals(150, event.getX(), 0.00001); 421 Assert.assertEquals(150, event.getY(), 0.00001); 422 Assert.assertEquals(0, event.getZ(), 0.00001); 423 zoomed = true; 424 }); 425 426 scene.setOnZoom(event -> { 427 Assert.assertEquals(150, event.getX(), 0.00001); 428 Assert.assertEquals(150, event.getY(), 0.00001); 429 Assert.assertEquals(50, event.getZ(), 0.00001); 430 zoomed2 = true; 431 }); 432 433 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 434 ZoomEvent.ZOOM, 1, 1, 435 150, 150, 150, 150, false, false, false, false, false, false); 436 437 assertTrue(zoomed); 438 assertTrue(zoomed2); 439 } 440 441 @Test 442 public void shouldContainPickResult() { 443 Scene scene = createScene(); 444 Rectangle rect1 = 445 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 446 Rectangle rect2 = 447 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(1); 448 449 rect1.addEventHandler(ZoomEvent.ANY, event -> { 450 zoomed = true; 451 pickRes = event.getPickResult(); 452 }); 453 rect2.addEventHandler(ZoomEvent.ANY, event -> { 454 zoomed2 = true; 455 pickRes = event.getPickResult(); 456 }); 457 458 zoomed = false; 459 zoomed2 = false; 460 pickRes = null; 461 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 462 ZoomEvent.ZOOM_STARTED, 2, 3, 463 150, 150, 150, 150, true, false, true, false, true, false); 464 assertTrue(zoomed); 465 assertFalse(zoomed2); 466 assertNotNull(pickRes); 467 assertSame(rect1, pickRes.getIntersectedNode()); 468 assertEquals(150, pickRes.getIntersectedPoint().getX(), 0.00001); 469 assertEquals(150, pickRes.getIntersectedPoint().getY(), 0.00001); 470 assertEquals(0, pickRes.getIntersectedPoint().getZ(), 0.00001); 471 472 zoomed = false; 473 zoomed2 = false; 474 pickRes = null; 475 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 476 ZoomEvent.ZOOM, 2, 3, 477 250, 250, 250, 250, true, false, true, false, true, false); 478 assertTrue(zoomed); 479 assertFalse(zoomed2); 480 assertNotNull(pickRes); 481 assertSame(rect2, pickRes.getIntersectedNode()); 482 assertEquals(250, pickRes.getIntersectedPoint().getX(), 0.00001); 483 assertEquals(250, pickRes.getIntersectedPoint().getY(), 0.00001); 484 assertEquals(0, pickRes.getIntersectedPoint().getZ(), 0.00001); 485 486 zoomed = false; 487 zoomed2 = false; 488 pickRes = null; 489 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 490 ZoomEvent.ZOOM_FINISHED, 2, 3, 491 250, 250, 250, 250, true, false, true, false, true, false); 492 assertTrue(zoomed); 493 assertFalse(zoomed2); 494 assertNotNull(pickRes); 495 assertSame(rect2, pickRes.getIntersectedNode()); 496 assertEquals(250, pickRes.getIntersectedPoint().getX(), 0.00001); 497 assertEquals(250, pickRes.getIntersectedPoint().getY(), 0.00001); 498 assertEquals(0, pickRes.getIntersectedPoint().getZ(), 0.00001); 499 } 500 501 @Test 502 public void unknownLocationShouldBeReplacedByMouseLocation() { 503 Scene scene = createScene(); 504 Rectangle rect1 = 505 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 506 Rectangle rect2 = 507 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(1); 508 rect1.addEventHandler(ZoomEvent.ANY, event -> { 509 zoomed = true; 510 }); 511 512 MouseEventGenerator generator = new MouseEventGenerator(); 513 514 zoomed = false; 515 zoomed2 = false; 516 rect2.setOnZoomStarted(event -> { 517 Assert.assertEquals(250.0, event.getSceneX(), 0.0001); 518 Assert.assertEquals(250.0, event.getSceneY(), 0.0001); 519 zoomed2 = true; 520 }); 521 scene.impl_processMouseEvent(generator.generateMouseEvent( 522 MouseEvent.MOUSE_MOVED, 250, 250)); 523 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 524 ZoomEvent.ZOOM_STARTED, 2, 3, 525 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 526 true, false, true, false, true, false); 527 assertFalse(zoomed); 528 assertTrue(zoomed2); 529 530 zoomed = false; 531 zoomed2 = false; 532 rect2.setOnZoom(event -> { 533 Assert.assertEquals(150.0, event.getSceneX(), 0.0001); 534 Assert.assertEquals(150.0, event.getSceneY(), 0.0001); 535 zoomed2 = true; 536 }); 537 scene.impl_processMouseEvent(generator.generateMouseEvent( 538 MouseEvent.MOUSE_MOVED, 150, 150)); 539 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 540 ZoomEvent.ZOOM, 2, 3, 541 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 542 true, false, true, false, true, false); 543 assertFalse(zoomed); 544 assertTrue(zoomed2); 545 546 zoomed = false; 547 zoomed2 = false; 548 rect2.setOnZoomFinished(event -> { 549 Assert.assertEquals(150.0, event.getSceneX(), 0.0001); 550 Assert.assertEquals(150.0, event.getSceneY(), 0.0001); 551 zoomed2 = true; 552 }); 553 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 554 ZoomEvent.ZOOM_FINISHED, 2, 3, 555 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 556 true, false, true, false, true, false); 557 assertFalse(zoomed); 558 assertTrue(zoomed2); 559 } 560 561 @Test 562 public void finishedLocationShouldBeFixed() { 563 Scene scene = createScene(); 564 Rectangle rect = 565 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 566 rect.setOnZoomFinished(event -> { 567 Assert.assertEquals(250.0, event.getSceneX(), 0.0001); 568 Assert.assertEquals(250.0, event.getSceneY(), 0.0001); 569 zoomed = true; 570 }); 571 572 zoomed = false; 573 574 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 575 ZoomEvent.ZOOM_STARTED, 2, 3, 576 150, 150, 150, 150, true, false, true, false, true, false); 577 578 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 579 ZoomEvent.ZOOM, 2, 3, 580 250, 250, 250, 250, true, false, true, false, true, false); 581 582 assertFalse(zoomed); 583 584 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 585 ZoomEvent.ZOOM_FINISHED, 2, 3, 586 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 587 true, false, true, false, true, false); 588 589 assertTrue(zoomed); 590 } 591 592 @Test 593 public void unknownLocalShouldBeFixedByMousePosition() { 594 MouseEventGenerator gen = new MouseEventGenerator(); 595 Scene scene = createScene(); 596 Rectangle rect = 597 (Rectangle) scene.getRoot().getChildrenUnmodifiable().get(0); 598 599 rect.setOnZoom(event -> { 600 Assert.assertEquals(150.0, event.getSceneX(), 0.0001); 601 Assert.assertEquals(150.0, event.getSceneY(), 0.0001); 602 zoomed = true; 603 }); 604 605 zoomed = false; 606 607 scene.impl_processMouseEvent( 608 gen.generateMouseEvent(MouseEvent.MOUSE_MOVED, 250, 250)); 609 610 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 611 ZoomEvent.ZOOM, 2, 3, 612 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 613 true, false, true, false, true, false); 614 615 assertFalse(zoomed); 616 617 scene.impl_processMouseEvent( 618 gen.generateMouseEvent(MouseEvent.MOUSE_MOVED, 150, 150)); 619 620 ((StubScene) scene.impl_getPeer()).getListener().zoomEvent( 621 ZoomEvent.ZOOM, 2, 3, 622 Double.NaN, Double.NaN, Double.NaN, Double.NaN, 623 true, false, true, false, true, false); 624 625 assertTrue(zoomed); 626 } 627 628 @Test public void testToString() { 629 ZoomEvent e = new ZoomEvent(ZoomEvent.ZOOM, 630 100, 100, 200, 200, 631 false, false, false, false, 632 true, false, 10, 20, null); 633 634 String s = e.toString(); 635 636 assertNotNull(s); 637 assertFalse(s.isEmpty()); 638 } 639 640 private Scene createScene() { 641 final Group root = new Group(); 642 643 final Scene scene = new Scene(root, 400, 400); 644 645 Rectangle rect = new Rectangle(100, 100, 100, 100); 646 Rectangle rect2 = new Rectangle(200, 200, 100, 100); 647 648 root.getChildren().addAll(rect, rect2); 649 650 Stage stage = new Stage(); 651 stage.setScene(scene); 652 stage.show(); 653 654 return scene; 655 } 656 }