X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FPlatformTest.java;fp=test%2Fjalview%2Futil%2FPlatformTest.java;h=307f4507e3c96ce0133fe0033556289b1dc691cb;hb=2595e9d4ee0dbbd3406a98c4e49a61ccde806479;hp=0000000000000000000000000000000000000000;hpb=e20075ba805d744d7cc4976e2b8d5e5840fb0a8d;p=jalview.git diff --git a/test/jalview/util/PlatformTest.java b/test/jalview/util/PlatformTest.java new file mode 100644 index 0000000..307f450 --- /dev/null +++ b/test/jalview/util/PlatformTest.java @@ -0,0 +1,111 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.util; + +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; + +import jalview.gui.JvOptionPane; + +import java.awt.Button; +import java.awt.Event; +import java.awt.event.MouseEvent; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class PlatformTest +{ + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + + Button b = new Button(); + + /** + * isControlDown for Mac should answer true for Meta-down, but not for right + * mouse (popup trigger) + */ + @Test(groups = "Functional") + public void testIsControlDown_mac() + { + int clickCount = 1; + boolean isPopupTrigger = false; + int buttonNo = MouseEvent.BUTTON1; + boolean mac = true; + + int mods = 0; + // not concerned with MouseEvent id, when, x, y, xAbs, yAbs values + assertFalse(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + mods = Event.CTRL_MASK; + assertFalse(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + mods = Event.META_MASK; + assertTrue(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + isPopupTrigger = true; + assertFalse(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + isPopupTrigger = false; + buttonNo = MouseEvent.BUTTON2; + mods = 0; + assertFalse(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + } + + /** + * If not a Mac, we only care whether CTRL_MASK modifier is set on the mouse + * event + */ + @Test(groups = "Functional") + public void testIsControlDown_notMac() + { + int clickCount = 1; + boolean isPopupTrigger = false; + int buttonNo = MouseEvent.BUTTON1; + boolean mac = false; + + int mods = 0; + // not concerned with MouseEvent id, when, x, y, xAbs, yAbs values + assertFalse(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + mods = Event.CTRL_MASK; + assertTrue(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + + mods = Event.CTRL_MASK | Event.SHIFT_MASK | Event.ALT_MASK; + clickCount = 2; + buttonNo = 2; + isPopupTrigger = true; + assertTrue(Platform.isControlDown(new MouseEvent(b, 0, 0L, mods, 0, 0, + 0, 0, clickCount, isPopupTrigger, buttonNo), mac)); + } +}