1 /*
   2  * Copyright (c) 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.input;
  27 
  28 import javafx.event.Event;
  29 import javafx.geometry.Point3D;
  30 import javafx.scene.input.GestureEvent;
  31 import javafx.scene.input.GestureEvent;
  32 import javafx.scene.input.GestureEventShim;
  33 import javafx.scene.input.PickResult;
  34 import javafx.scene.input.PickResult;
  35 import javafx.scene.shape.Rectangle;
  36 import org.junit.Test;
  37 import static org.junit.Assert.assertEquals;
  38 import static org.junit.Assert.assertFalse;
  39 import static org.junit.Assert.assertNotNull;
  40 import static org.junit.Assert.assertSame;
  41 import static org.junit.Assert.assertTrue;
  42 
  43 public class GestureEventTest {
  44 
  45     @Test public void testShortConstructor() {
  46         Rectangle node = new Rectangle();
  47         node.setTranslateX(3);
  48         node.setTranslateY(2);
  49         node.setTranslateZ(50);
  50 
  51         PickResult pickRes = new PickResult(node, new Point3D(15, 25, 100), 33);
  52         GestureEvent e = GestureEventShim.getGestureEvent(
  53                 GestureEvent.ANY, 10, 20, 30, 40,
  54                 false, true, false, true, false, true, pickRes);
  55 
  56         assertSame(GestureEvent.ANY, e.getEventType());
  57         assertSame(pickRes, e.getPickResult());
  58         assertEquals(18, e.getX(), 10e-20);
  59         assertEquals(27, e.getY(), 10e-20);
  60         assertEquals(150, e.getZ(), 10e-20);
  61         assertEquals(10, e.getSceneX(), 10e-20);
  62         assertEquals(20, e.getSceneY(), 10e-20);
  63         assertEquals(30, e.getScreenX(), 10e-20);
  64         assertEquals(40, e.getScreenY(), 10e-20);
  65         assertFalse(e.isShiftDown());
  66         assertTrue(e.isControlDown());
  67         assertFalse(e.isAltDown());
  68         assertTrue(e.isMetaDown());
  69         assertFalse(e.isDirect());
  70         assertTrue(e.isInertia());
  71         assertSame(Event.NULL_SOURCE_TARGET, e.getSource());
  72         assertSame(Event.NULL_SOURCE_TARGET, e.getTarget());
  73         assertFalse(e.isConsumed());
  74 
  75         e = GestureEventShim.getGestureEvent(
  76                 GestureEvent.ANY, 10, 20, 30, 40,
  77                 true, false, true, false, true, false, null);
  78         assertTrue(e.isShiftDown());
  79         assertFalse(e.isControlDown());
  80         assertTrue(e.isAltDown());
  81         assertFalse(e.isMetaDown());
  82         assertTrue(e.isDirect());
  83         assertFalse(e.isInertia());
  84     }
  85 
  86     @Test public void testShortConstructorWithoutPickResult() {
  87         GestureEvent e = GestureEventShim.getGestureEvent(
  88                 GestureEvent.ANY, 10, 20, 30, 40,
  89                 false, true, false, true, false, true, null);
  90 
  91         assertEquals(10, e.getX(), 10e-20);
  92         assertEquals(20, e.getY(), 10e-20);
  93         assertEquals(0, e.getZ(), 10e-20);
  94         assertEquals(10, e.getSceneX(), 10e-20);
  95         assertEquals(20, e.getSceneY(), 10e-20);
  96         assertEquals(30, e.getScreenX(), 10e-20);
  97         assertEquals(40, e.getScreenY(), 10e-20);
  98         assertNotNull(e.getPickResult());
  99         assertNotNull(e.getPickResult().getIntersectedPoint());
 100         assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20);
 101         assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20);
 102         assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20);
 103         assertSame(Event.NULL_SOURCE_TARGET, e.getSource());
 104         assertSame(Event.NULL_SOURCE_TARGET, e.getTarget());
 105     }
 106 
 107     @Test public void testLongConstructor() {
 108         Rectangle node = new Rectangle(10, 10);
 109         node.setTranslateX(3);
 110         node.setTranslateY(2);
 111         node.setTranslateZ(50);
 112         Rectangle n1 = new Rectangle(10, 10);
 113         Rectangle n2 = new Rectangle(10, 10);
 114 
 115         PickResult pickRes = new PickResult(node, new Point3D(15, 25, 100), 33);
 116         GestureEvent e = GestureEventShim.getGestureEvent(
 117                 n1, n2,
 118                 GestureEvent.ANY, 10, 20, 30, 40,
 119                 false, true, false, true, false, true, pickRes);
 120         assertSame(n1, e.getSource());
 121         assertSame(n2, e.getTarget());
 122         assertSame(GestureEvent.ANY, e.getEventType());
 123         assertSame(pickRes, e.getPickResult());
 124         assertEquals(18, e.getX(), 10e-20);
 125         assertEquals(27, e.getY(), 10e-20);
 126         assertEquals(150, e.getZ(), 10e-20);
 127         assertEquals(10, e.getSceneX(), 10e-20);
 128         assertEquals(20, e.getSceneY(), 10e-20);
 129         assertEquals(30, e.getScreenX(), 10e-20);
 130         assertEquals(40, e.getScreenY(), 10e-20);
 131         assertFalse(e.isShiftDown());
 132         assertTrue(e.isControlDown());
 133         assertFalse(e.isAltDown());
 134         assertTrue(e.isMetaDown());
 135         assertFalse(e.isDirect());
 136         assertTrue(e.isInertia());
 137         assertFalse(e.isConsumed());
 138 
 139         e = GestureEventShim.getGestureEvent(
 140                 n1, n2,
 141                 GestureEvent.ANY, 10, 20, 30, 40,
 142                 true, false, true, false, true, false, null);
 143         assertTrue(e.isShiftDown());
 144         assertFalse(e.isControlDown());
 145         assertTrue(e.isAltDown());
 146         assertFalse(e.isMetaDown());
 147         assertTrue(e.isDirect());
 148         assertFalse(e.isInertia());
 149     }
 150 
 151 
 152     @Test public void testLongConstructorWithoutPickResult() {
 153         Rectangle n1 = new Rectangle(10, 10);
 154         Rectangle n2 = new Rectangle(10, 10);
 155         GestureEvent e = GestureEventShim.getGestureEvent(
 156                 n1, n2,
 157                 GestureEvent.ANY, 10, 20, 30, 40,
 158                 false, true, false, true, false, true, null);
 159 
 160         assertSame(n1, e.getSource());
 161         assertSame(n2, e.getTarget());
 162         assertEquals(10, e.getX(), 10e-20);
 163         assertEquals(20, e.getY(), 10e-20);
 164         assertEquals(0, e.getZ(), 10e-20);
 165         assertEquals(10, e.getSceneX(), 10e-20);
 166         assertEquals(20, e.getSceneY(), 10e-20);
 167         assertEquals(30, e.getScreenX(), 10e-20);
 168         assertEquals(40, e.getScreenY(), 10e-20);
 169         assertNotNull(e.getPickResult());
 170         assertNotNull(e.getPickResult().getIntersectedPoint());
 171         assertEquals(10, e.getPickResult().getIntersectedPoint().getX(), 10e-20);
 172         assertEquals(20, e.getPickResult().getIntersectedPoint().getY(), 10e-20);
 173         assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 10e-20);
 174     }
 175 
 176 }