1 /* 2 * Copyright (c) 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 test.robot.com.sun.glass.ui.monocle; 27 28 import com.sun.glass.ui.monocle.TestLogShim; 29 import com.sun.glass.events.KeyEvent; 30 import com.sun.glass.ui.Application; 31 import com.sun.glass.ui.Robot; 32 import javafx.application.Platform; 33 import org.junit.Before; 34 import org.junit.Rule; 35 import org.junit.Test; 36 import org.junit.rules.TestName; 37 38 /** 39 * This is a generic test for Glass robot. It is in the monocle.input package 40 * because it uses the same test infrastructure as the Monocle input tests. 41 */ 42 public class RobotTest { 43 44 @Rule public TestName name = new TestName(); 45 46 @Before 47 public void setUpScreen() throws Exception { 48 TestLogShim.reset(); 49 TestLogShim.log(name.getMethodName()); 50 TestApplication.showFullScreenScene(); 51 } 52 53 @Test 54 public void clickTest() throws Exception { 55 TestApplication.getStage().getScene().setOnMouseClicked( 56 (e) -> TestLogShim.format("Clicked at %.0f, %.0f", 57 e.getScreenX(), e.getScreenY())); 58 Platform.runLater(() -> { 59 Robot robot = Application.GetApplication().createRobot(); 60 robot.mouseMove(300, 400); 61 robot.mousePress(Robot.MOUSE_LEFT_BTN); 62 robot.mouseRelease(Robot.MOUSE_LEFT_BTN); 63 }); 64 TestLogShim.waitForLog("Clicked at 300, 400"); 65 } 66 67 @Test 68 public void typeTest() throws Exception { 69 TestApplication.getStage().getScene().setOnKeyTyped( 70 (e) ->TestLogShim.format("Typed '%s'", e.getCharacter())); 71 Platform.runLater(() -> { 72 Robot robot = Application.GetApplication().createRobot(); 73 robot.keyPress(KeyEvent.VK_A); 74 robot.keyRelease(KeyEvent.VK_A); 75 }); 76 TestLogShim.waitForLog("Typed 'a'"); 77 Platform.runLater(() -> { 78 Robot robot = Application.GetApplication().createRobot(); 79 robot.keyPress(KeyEvent.VK_SHIFT); 80 robot.keyPress(KeyEvent.VK_B); 81 robot.keyRelease(KeyEvent.VK_B); 82 robot.keyRelease(KeyEvent.VK_SHIFT); 83 }); 84 TestLogShim.waitForLog("Typed 'B'"); 85 } 86 87 @Test 88 public void scrollTest() throws Exception { 89 TestApplication.getStage().getScene().setOnScroll( 90 (e) -> TestLogShim.format("Scroll: %.0f at %.0f, %.0f", 91 Math.signum(e.getDeltaY()), 92 e.getScreenX(), 93 e.getScreenY())); 94 Platform.runLater(() -> { 95 Robot robot = Application.GetApplication().createRobot(); 96 robot.mouseMove(300, 300); 97 robot.mouseWheel(10); 98 }); 99 TestLogShim.waitForLog("Scroll: 1 at 300, 300"); 100 Platform.runLater(() -> { 101 Robot robot = Application.GetApplication().createRobot(); 102 robot.mouseMove(310, 320); 103 robot.mouseWheel(-10); 104 }); 105 TestLogShim.waitForLog("Scroll: -1 at 310, 320"); 106 } 107 108 }