1 /*
   2  * Copyright (c) 2011, 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;
  27 
  28 import test.com.sun.javafx.pgstub.StubImageLoaderFactory;
  29 import test.com.sun.javafx.pgstub.StubPlatformImageInfo;
  30 import test.com.sun.javafx.pgstub.StubToolkit;
  31 import com.sun.javafx.tk.Toolkit;
  32 import javafx.scene.Cursor;
  33 import javafx.scene.ImageCursor;
  34 import javafx.scene.image.Image;
  35 
  36 import static org.junit.Assert.assertEquals;
  37 import static org.junit.Assert.assertTrue;
  38 
  39 import org.junit.Test;
  40 
  41 
  42 public class CursorTest {
  43 
  44     @Test public void test_cursorFromUppercaseName() {
  45         assertEquals(Cursor.DEFAULT, Cursor.cursor("DEFAULT"));
  46         assertEquals(Cursor.CLOSED_HAND, Cursor.cursor("CLOSED_HAND"));
  47         assertEquals(Cursor.CROSSHAIR, Cursor.cursor("CROSSHAIR"));
  48         assertEquals(Cursor.DISAPPEAR, Cursor.cursor("DISAPPEAR"));
  49         assertEquals(Cursor.E_RESIZE, Cursor.cursor("E_RESIZE"));
  50         assertEquals(Cursor.MOVE, Cursor.cursor("MOVE"));
  51         assertEquals(Cursor.NE_RESIZE, Cursor.cursor("NE_RESIZE"));
  52         assertEquals(Cursor.NONE, Cursor.cursor("NONE"));
  53         assertEquals(Cursor.NW_RESIZE, Cursor.cursor("NW_RESIZE"));
  54         assertEquals(Cursor.N_RESIZE, Cursor.cursor("N_RESIZE"));
  55         assertEquals(Cursor.OPEN_HAND, Cursor.cursor("OPEN_HAND"));
  56         assertEquals(Cursor.SE_RESIZE, Cursor.cursor("SE_RESIZE"));
  57         assertEquals(Cursor.SW_RESIZE, Cursor.cursor("SW_RESIZE"));
  58         assertEquals(Cursor.S_RESIZE, Cursor.cursor("S_RESIZE"));
  59         assertEquals(Cursor.TEXT, Cursor.cursor("TEXT"));
  60         assertEquals(Cursor.V_RESIZE, Cursor.cursor("V_RESIZE"));
  61         assertEquals(Cursor.WAIT, Cursor.cursor("WAIT"));
  62         assertEquals(Cursor.W_RESIZE, Cursor.cursor("W_RESIZE"));
  63     }
  64 
  65     @Test public void test_cursorFromLowercaseName() {
  66         assertEquals(Cursor.DEFAULT, Cursor.cursor("default"));
  67         assertEquals(Cursor.CLOSED_HAND, Cursor.cursor("closed_hand"));
  68         assertEquals(Cursor.CROSSHAIR, Cursor.cursor("crosshair"));
  69         assertEquals(Cursor.DISAPPEAR, Cursor.cursor("disappear"));
  70         assertEquals(Cursor.E_RESIZE, Cursor.cursor("e_resize"));
  71         assertEquals(Cursor.MOVE, Cursor.cursor("move"));
  72         assertEquals(Cursor.NE_RESIZE, Cursor.cursor("ne_resize"));
  73         assertEquals(Cursor.NONE, Cursor.cursor("none"));
  74         assertEquals(Cursor.NW_RESIZE, Cursor.cursor("nw_resize"));
  75         assertEquals(Cursor.N_RESIZE, Cursor.cursor("n_resize"));
  76         assertEquals(Cursor.OPEN_HAND, Cursor.cursor("open_hand"));
  77         assertEquals(Cursor.SE_RESIZE, Cursor.cursor("se_resize"));
  78         assertEquals(Cursor.SW_RESIZE, Cursor.cursor("sw_resize"));
  79         assertEquals(Cursor.S_RESIZE, Cursor.cursor("s_resize"));
  80         assertEquals(Cursor.TEXT, Cursor.cursor("text"));
  81         assertEquals(Cursor.V_RESIZE, Cursor.cursor("v_resize"));
  82         assertEquals(Cursor.WAIT, Cursor.cursor("wait"));
  83         assertEquals(Cursor.W_RESIZE, Cursor.cursor("w_resize"));
  84     }
  85 
  86     @Test public void test_cursorFromUrl() {
  87         final StubImageLoaderFactory imageLoaderFactory =
  88                 ((StubToolkit) Toolkit.getToolkit()).getImageLoaderFactory();
  89 
  90         final String imageUrl = "file:cursor.png";
  91         imageLoaderFactory.registerImage(
  92                 imageUrl, new StubPlatformImageInfo(100, 100));
  93 
  94         final Cursor cursor = Cursor.cursor(imageUrl);
  95         assertTrue(cursor instanceof ImageCursor);
  96 
  97         final Image cursorImage = ((ImageCursor) cursor).getImage();
  98         assertEquals(imageUrl, cursorImage.impl_getUrl());
  99     }
 100 
 101     @Test(expected=NullPointerException.class)
 102     public void test_cursorFromNull() {
 103         Cursor.cursor(null);
 104     }
 105 
 106     @Test(expected=IllegalArgumentException.class)
 107     public void test_cursorFromInvalidUrl() {
 108         Cursor.cursor("file//:cursor.png");
 109     }
 110 
 111     @Test(expected=IllegalArgumentException.class)
 112     public void test_cursorFromInvalidName() {
 113         Cursor.cursor("crosslair");
 114     }
 115 }