3789983e89
Reviewed-by: darcy, ihse
623 lines
27 KiB
Java
623 lines
27 KiB
Java
/*
|
|
* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 only, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This code 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
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
* accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU General Public License version
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
* questions.
|
|
*/
|
|
|
|
/*
|
|
@test %I% %E%
|
|
@key headful
|
|
@bug 6315717
|
|
@summary verifies that modifiers are correct for standard (1, 2, 3, wheel) mouse buttons
|
|
@author Andrei Dmitriev : area=awt.mouse
|
|
@run main MouseModifiersUnitTest_Standard
|
|
*/
|
|
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import java.util.HashMap;
|
|
import java.util.StringTokenizer;
|
|
import java.util.Vector;
|
|
|
|
//the test verifies:
|
|
// 1) verifies that modifiers are correct for standard (1, 2, 3) mouse buttons
|
|
// TODO: 2) verifies that modifiers are correct for wheel
|
|
// TODO: 3)
|
|
// Case1. the test posts BUTTONx_MASK and verifies that paramString() contains correct modifiers and exModifiers
|
|
// Case2. the test posts BUTTONx_DOWN_MASK and verifies that paramString() contains correct modifiers and exModifiers
|
|
// Case3. the test posts getMaskForButton(n) and verifies that paramString() contains correct modifiers and exModifiers
|
|
// repeat all cases with SHIFT/ALT/CTRL modifiers verify that paramString() contains correct modifiers and exModifiers
|
|
// I'm verifying button, modifiers and extModifiers for now.
|
|
|
|
public class MouseModifiersUnitTest_Standard {
|
|
static final int NONE = 0;
|
|
static final int SHIFT = 1;
|
|
static final int CTRL = 2;
|
|
static final int ALT = 3;
|
|
static boolean debug = true; //dump all errors (debug) or throw first(under jtreg) exception
|
|
static boolean autorun = false; //use robot or manual run
|
|
static int testModifier = NONE;
|
|
// static String testModifier = "NONE";
|
|
static CheckingModifierAdapter adapterTest1;
|
|
static CheckingModifierAdapter adapterTest2;
|
|
static CheckingModifierAdapter adapterTest3;
|
|
static CheckingModifierAdapter adapterTest4;
|
|
static Frame f;
|
|
final static int [] mouseButtons = new int [] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON3_MASK};
|
|
// BUTTON1, 2, 3 press-release.
|
|
final static int [] modifiersStandardTestNONE = new int[] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK,
|
|
MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK,
|
|
MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK };
|
|
final static int [] modifiersExStandardTestNONE = new int[] {MouseEvent.BUTTON1_DOWN_MASK, 0, 0,
|
|
MouseEvent.BUTTON2_DOWN_MASK, 0, 0,
|
|
MouseEvent.BUTTON3_DOWN_MASK, 0, 0};
|
|
// BUTTON1, 2, 3 press-release with shift modifier
|
|
final static int [] modifiersStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK,
|
|
MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK,
|
|
MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK };
|
|
final static int [] modifiersExStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
|
|
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
|
|
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK};
|
|
// BUTTON1, 2, 3 press-release with CTRL modifier
|
|
final static int [] modifiersStandardTestCTRL = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK,
|
|
MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK,
|
|
MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK };
|
|
final static int [] modifiersExStandardTestCTRL = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
|
|
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
|
|
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK};
|
|
|
|
// BUTTON1, 2, 3 press-release with ALT modifier
|
|
final static int [] modifiersStandardTestALT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK,
|
|
MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK,
|
|
MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK };
|
|
final static int [] modifiersExStandardTestALT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
|
|
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
|
|
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK};
|
|
|
|
static Robot robot;
|
|
|
|
public static void main(String s[]){
|
|
initParams(s);
|
|
initAdapters();
|
|
f = new Frame();
|
|
final int [] modifiers = {InputEvent.SHIFT_MASK, InputEvent.CTRL_MASK};
|
|
final String [] modifierNames = {"InputEvent.SHIFT_MASK", "InputEvent.CTRL_MASK"};
|
|
f.setLayout(new FlowLayout());
|
|
f.addMouseWheelListener(new MouseWheelListener() {
|
|
public void mouseWheelMoved(MouseWheelEvent e) {
|
|
System.out.println("WHEEL "+e);
|
|
}
|
|
});
|
|
f.setSize(300, 300);
|
|
f.setVisible(true);
|
|
|
|
try {
|
|
robot = new Robot();
|
|
robot.delay(500);
|
|
robot.mouseMove(f.getLocationOnScreen().x + f.getWidth()/2, f.getLocationOnScreen().y + f.getHeight()/2);
|
|
if (autorun) {
|
|
//testing buttons 1, 2, 3 only
|
|
testPlainButtons();
|
|
robot.delay(500);
|
|
|
|
//testing buttons 1, 2, 3 with SHIFT, CTRL, ALT keyboard modifiers
|
|
testButtonsWithShift();
|
|
robot.delay(500);
|
|
|
|
testButtonsWithControl();
|
|
robot.delay(500);
|
|
|
|
testButtonsWithAlt();
|
|
robot.delay(500);
|
|
} else {
|
|
switch (testModifier){
|
|
case SHIFT:
|
|
f.addMouseListener(adapterTest2);
|
|
break;
|
|
case CTRL:
|
|
f.addMouseListener(adapterTest3);
|
|
break;
|
|
case ALT:
|
|
f.addMouseListener(adapterTest4);
|
|
break;
|
|
default: //NONE inclusive
|
|
f.addMouseListener(adapterTest1);
|
|
}
|
|
}
|
|
} catch (Exception e){
|
|
throw new RuntimeException("Test failed.");
|
|
}
|
|
|
|
}
|
|
|
|
public static void initAdapters(){
|
|
adapterTest1 = new CheckingModifierAdapter(NONE);
|
|
adapterTest2 = new CheckingModifierAdapter(SHIFT);
|
|
adapterTest3 = new CheckingModifierAdapter(CTRL);
|
|
adapterTest4 = new CheckingModifierAdapter(ALT);
|
|
}
|
|
|
|
/*======================================================================*/
|
|
public static void checkPressedModifiersTest(int testModifier, MouseEvent event){
|
|
int [] curStandardModifiers = getStandardArray(testModifier);
|
|
int [] curStandardExModifiers = getStandardExArray(testModifier);
|
|
int button = event.getButton();
|
|
int modifiers = event.getModifiers();
|
|
int modifiersEx = event.getModifiersEx();
|
|
int index = (button - 1)*3;
|
|
// int index = (button - 4)*3;
|
|
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
|
|
if (modifiers != curStandardModifiers[index]){
|
|
if (debug){
|
|
System.out.println("Test failed : Pressed. modifiers != modifiersStandard");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Pressed. modifiers != modifiersStandard");
|
|
}
|
|
}
|
|
|
|
if (modifiersEx != curStandardExModifiers[index]){
|
|
// System.out.println(">>>>>>>>>>>>>>> Pressed. modifiersEx "+modifiersEx +" : "+!= curStandardExModifiers");
|
|
if (debug){
|
|
System.out.println("Test failed : Pressed. modifiersEx != curStandardExModifiers");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Pressed. modifiersEx != curStandardExModifiers");
|
|
}
|
|
}
|
|
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
|
|
System.out.println(event.paramString());
|
|
checkButton(paramStringElements, button);
|
|
checkModifiers(testModifier, paramStringElements, button);
|
|
checkExtModifiersOnPress(testModifier, paramStringElements, button);
|
|
}
|
|
|
|
public static void checkButton(HashMap<String, String> h, int button){
|
|
if (h.get("button") == null) {
|
|
throw new RuntimeException("Test failed : Clicked. button is absent in paramString()");
|
|
}
|
|
if (Integer.parseInt(h.get("button")) != button) {
|
|
throw new RuntimeException("Test failed : Clicked. button in paramString() doesn't equal to button being pressed.");
|
|
}
|
|
}
|
|
|
|
public static void checkExtModifiersOnPress(int testModifier, HashMap h, int button){
|
|
String ethalon = "";
|
|
if (h.get("extModifiers") == null) {
|
|
System.out.println("Test failed : Pressed. extModifiers == null");
|
|
throw new RuntimeException("Test failed : Pressed. extModifiers == null");
|
|
}
|
|
switch (testModifier){
|
|
case SHIFT:{
|
|
ethalon = "Shift+";
|
|
break;
|
|
}
|
|
case ALT:{
|
|
ethalon = "Alt+";
|
|
break;
|
|
}
|
|
case CTRL:{
|
|
ethalon = "Ctrl+";
|
|
break;
|
|
}
|
|
default: {
|
|
ethalon = "";
|
|
}
|
|
ethalon = ethalon + "Button" +button;
|
|
|
|
if (!h.get("extModifiers").equals(ethalon)) {
|
|
System.out.println("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
|
|
throw new RuntimeException("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public static void checkModifiers(int testModifier, HashMap<String, String> h, int button){
|
|
// none of modifiers should be null
|
|
if (h.get("modifiers") == null) {
|
|
System.out.println("Test failed : modifiers == null");
|
|
throw new RuntimeException("Test failed : modifiers == null");
|
|
}
|
|
Vector <String> modifierElements = tokenizeModifiers(h.get("modifiers"));
|
|
//check that ButtonX is there
|
|
String buttonEthalon = "Button" + button;
|
|
if (modifierElements.contains(buttonEthalon)){
|
|
modifierElements.remove(buttonEthalon);
|
|
} else {
|
|
System.out.println("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
|
|
throw new RuntimeException("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
|
|
}
|
|
|
|
|
|
//Check all explicitly pressed modifires
|
|
// boolean altIncluded = false; //don't duplicate Alt when ALT is pressed and BUTTON2_MASK.
|
|
String excplicitModifier = "";
|
|
boolean altIncluded = false;
|
|
switch (testModifier){
|
|
case SHIFT:{
|
|
excplicitModifier = "Shift";
|
|
break;
|
|
}
|
|
case ALT:{
|
|
excplicitModifier = "Alt";
|
|
altIncluded = true; //there should be only on "Alt" for two modifiers. So check it.
|
|
break;
|
|
}
|
|
case CTRL:{
|
|
excplicitModifier = "Ctrl";
|
|
break;
|
|
}
|
|
}
|
|
if (!excplicitModifier.equals("")){
|
|
if (modifierElements.contains(excplicitModifier)){
|
|
modifierElements.remove(excplicitModifier);
|
|
} else {
|
|
System.out.println("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
|
|
throw new RuntimeException("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
|
|
}
|
|
}
|
|
|
|
//Button 2 and 3 reports about Alt+Button2 and Meta+Button3 respectively.
|
|
//Check these values too
|
|
String extraModifiers = "";
|
|
String extraModifiersButton3 = "";
|
|
switch (button){
|
|
//BUTTON1 with ALT reports about Alt+Button1+Button2.
|
|
//We should fix this but I would not change this.
|
|
case 1: {
|
|
//Alt+Button1+Button2:
|
|
// 1) we already handled "Alt" in excplicitModifier
|
|
// 2) we already took "Button1" in buttonEthalon
|
|
// 3) so "Button2" is only remained.
|
|
// This should only happen when ALT+Button1 is pressed
|
|
if (altIncluded){
|
|
extraModifiers = "Button2";
|
|
}
|
|
break;
|
|
}
|
|
case 2: {
|
|
//Alt+Button2 report about "Alt+Button2".
|
|
extraModifiers = "Alt";
|
|
break;
|
|
}
|
|
case 3: {
|
|
//ALT+BUTTON3 reports about "Alt+Meta+Button2+Button3"
|
|
// This should only happen when ALT+Button3 is pressed
|
|
extraModifiers = "Meta";
|
|
if (altIncluded){
|
|
extraModifiersButton3 = "Button2";
|
|
}
|
|
break;
|
|
}
|
|
}//switch
|
|
|
|
if (!extraModifiers.equals("")){
|
|
if (modifierElements.contains(extraModifiers)){
|
|
modifierElements.remove(extraModifiers);
|
|
} else {
|
|
//we may already removed "Alt" when filtered explicit modifiers.
|
|
//Here is no failure in this case.
|
|
if (!altIncluded) {
|
|
System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
|
|
throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!extraModifiersButton3.equals("")){
|
|
if (modifierElements.contains(extraModifiersButton3)){
|
|
modifierElements.remove(extraModifiersButton3);
|
|
} else {
|
|
System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
|
|
throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
|
|
}
|
|
}
|
|
|
|
//the length of vector should now be zero
|
|
if (!modifierElements.isEmpty()){
|
|
System.out.println("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
|
|
throw new RuntimeException("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
|
|
}
|
|
}
|
|
|
|
public static void checkExtModifiersOnReleaseClick(int testModifier, HashMap h, int button){
|
|
String ethalon = "";
|
|
switch (testModifier){
|
|
case SHIFT:{
|
|
ethalon = "Shift+";
|
|
break;
|
|
}
|
|
case ALT:{
|
|
ethalon = "Alt+";
|
|
break;
|
|
}
|
|
case CTRL:{
|
|
ethalon = "Ctrl+";
|
|
break;
|
|
}
|
|
default: {
|
|
if (h.get("extModifiers") != null) {
|
|
System.out.println("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
|
|
throw new RuntimeException("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
|
|
} else {
|
|
//no modifiers
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (h.get("extModifiers").equals(ethalon)) {
|
|
System.out.println("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
|
|
throw new RuntimeException("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
|
|
}
|
|
}
|
|
|
|
public static void checkReleasedModifiersTest(int testModifier, MouseEvent event){
|
|
int [] curStandardModifiers = getStandardArray(testModifier);
|
|
int [] curStandardExModifiers = getStandardExArray(testModifier);
|
|
// int index = (button - 4)*3 + 1;
|
|
int button = event.getButton();
|
|
int modifiers = event.getModifiers();
|
|
int modifiersEx = event.getModifiersEx();
|
|
int index = (button - 1)*3 + 1;
|
|
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
|
|
if (modifiers != curStandardModifiers[index]){
|
|
if (debug){
|
|
System.out.println("Test failed : Released. modifiers != modifiersStandard");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Released. modifiers != modifiersStandard");
|
|
}
|
|
}
|
|
if (modifiersEx != curStandardExModifiers[index]){
|
|
if (debug){
|
|
System.out.println("Test failed : Released. modifiersEx != curStandardExModifiers");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Released. modifiersEx != curStandardExModifiers");
|
|
}
|
|
}
|
|
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
|
|
System.out.println(event.paramString());
|
|
checkButton(paramStringElements, button);
|
|
checkModifiers(testModifier, paramStringElements, button);
|
|
checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
|
|
}
|
|
|
|
public static void checkClickedModifiersTest(int testModifier, MouseEvent event){
|
|
int [] curStandardModifiers = getStandardArray(testModifier);
|
|
int [] curStandardExModifiers = getStandardExArray(testModifier);
|
|
// int index = (button - 4)*3 + 2;
|
|
int button = event.getButton();
|
|
int modifiers = event.getModifiers();
|
|
int modifiersEx = event.getModifiersEx();
|
|
int index = (button - 1)*3 + 2;
|
|
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
|
|
if (modifiers != curStandardModifiers[index]){
|
|
if (debug){
|
|
System.out.println("Test failed : Clicked. modifiers != modifiersStandard");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Clicked. modifiers != modifiersStandard");
|
|
}
|
|
}
|
|
if (modifiersEx != curStandardExModifiers[index]){
|
|
if (debug){
|
|
System.out.println("Test failed : Clicked. modifiersEx != curStandardExModifiers");
|
|
} else {
|
|
throw new RuntimeException("Test failed : Clicked. modifiersEx != curStandardExModifiers");
|
|
}
|
|
}
|
|
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
|
|
checkButton(paramStringElements, button);
|
|
checkModifiers(testModifier, paramStringElements, button);
|
|
checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
|
|
}
|
|
/*======================================================================*/
|
|
|
|
public static HashMap<String, String> tokenizeParamString(String param){
|
|
HashMap <String, String> params = new HashMap<String, String>();
|
|
StringTokenizer st = new StringTokenizer(param, ",=");
|
|
while (st.hasMoreTokens()){
|
|
String tmp = st.nextToken();
|
|
// System.out.println("PARSER : "+tmp);
|
|
if (tmp.equals("button") ||
|
|
tmp.equals("modifiers") ||
|
|
tmp.equals("extModifiers")) {
|
|
params.put(tmp, st.nextToken());
|
|
}
|
|
}
|
|
return params;
|
|
}
|
|
|
|
public static Vector<String> tokenizeModifiers(String modifierList){
|
|
Vector<String> modifiers = new Vector<String>();
|
|
StringTokenizer st = new StringTokenizer(modifierList, "+");
|
|
while (st.hasMoreTokens()){
|
|
String tmp = st.nextToken();
|
|
modifiers.addElement(tmp);
|
|
System.out.println("MODIFIER PARSER : "+tmp);
|
|
}
|
|
return modifiers;
|
|
}
|
|
|
|
|
|
//test BUTTON1, 2 and 3 without any modifiers keys
|
|
public static void testPlainButtons(){
|
|
System.out.println("Testing buttons without modifiers.");
|
|
f.addMouseListener(adapterTest1);
|
|
for (int button : mouseButtons){
|
|
robot.mousePress(button);
|
|
robot.delay(100);
|
|
robot.mouseRelease(button);
|
|
}
|
|
robot.delay(1000);
|
|
f.removeMouseListener(adapterTest1);
|
|
}
|
|
|
|
//test BUTTON1, 2 and 3 with SHIFT key
|
|
public static void testButtonsWithShift(){
|
|
System.out.println("Testing buttons with SHIFT modifier.");
|
|
f.addMouseListener(adapterTest2);
|
|
|
|
for (int button : mouseButtons){
|
|
robot.keyPress(KeyEvent.VK_SHIFT);
|
|
robot.mousePress(button);
|
|
robot.delay(100);
|
|
robot.mouseRelease(button);
|
|
robot.keyRelease(KeyEvent.VK_SHIFT);
|
|
}
|
|
robot.delay(1000);
|
|
f.removeMouseListener(adapterTest2);
|
|
}
|
|
|
|
//test BUTTON1, 2 and 3 with CTRL key
|
|
public static void testButtonsWithControl(){
|
|
System.out.println("Testing buttons with CONTROL modifier.");
|
|
f.addMouseListener(adapterTest3);
|
|
for (int button : mouseButtons){
|
|
robot.keyPress(KeyEvent.VK_CONTROL);
|
|
robot.mousePress(button);
|
|
robot.delay(100);
|
|
robot.mouseRelease(button);
|
|
robot.keyRelease(KeyEvent.VK_CONTROL);
|
|
}
|
|
robot.delay(1000);
|
|
f.removeMouseListener(adapterTest3);
|
|
}
|
|
|
|
//test BUTTON1, 2 and 3 with ALT key
|
|
public static void testButtonsWithAlt(){
|
|
System.out.println("Testing buttons with ALT modifier.");
|
|
f.addMouseListener(adapterTest4);
|
|
for (int button : mouseButtons){
|
|
robot.keyPress(KeyEvent.VK_ALT);
|
|
robot.mousePress(button);
|
|
robot.delay(100);
|
|
robot.mouseRelease(button);
|
|
robot.keyRelease(KeyEvent.VK_ALT);
|
|
}
|
|
robot.delay(1000);
|
|
f.removeMouseListener(adapterTest4);
|
|
}
|
|
|
|
public static void initParams(String []s){
|
|
if (s.length != 3){
|
|
autorun = true;
|
|
debug = false;
|
|
testModifier = NONE;
|
|
} else {
|
|
autorun = Boolean.valueOf(s[0]);
|
|
debug = Boolean.valueOf(s[1]);
|
|
|
|
if (s[2].equals("NONE")){
|
|
testModifier = NONE;
|
|
}
|
|
if (s[2].equals("SHIFT")){
|
|
testModifier = SHIFT;
|
|
}
|
|
if (s[2].equals("CTRL")){
|
|
testModifier = CTRL;
|
|
}
|
|
if (s[2].equals("ALT")){
|
|
testModifier = ALT;
|
|
}
|
|
}
|
|
System.out.println("Autorun : " +autorun);
|
|
System.out.println("Debug mode : " +debug);
|
|
System.out.println("Modifier to verify : " + testModifier);
|
|
}
|
|
|
|
public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
|
|
System.out.println("Button = "+button + "Modifiers = "+ modifiers + " standard = "+ modifiersStandard);
|
|
System.out.println(" ModifiersEx = "+ modifiersEx + " standardEx = "+ modifiersExStandard);
|
|
}
|
|
|
|
private static int[] getStandardExArray(int testModifier) {
|
|
int [] curStandardExModifiers;
|
|
switch (testModifier){
|
|
case SHIFT:
|
|
curStandardExModifiers = modifiersExStandardTestSHIFT;
|
|
break;
|
|
case CTRL:
|
|
curStandardExModifiers = modifiersExStandardTestCTRL;
|
|
break;
|
|
case ALT:
|
|
curStandardExModifiers = modifiersExStandardTestALT;
|
|
break;
|
|
default: //NONE by default
|
|
curStandardExModifiers = modifiersExStandardTestNONE;
|
|
}
|
|
return curStandardExModifiers;
|
|
}
|
|
|
|
private static int[] getStandardArray(int testModifier) {
|
|
int [] curStandardModifiers;
|
|
switch (testModifier){
|
|
case SHIFT:
|
|
curStandardModifiers = modifiersStandardTestSHIFT;
|
|
break;
|
|
case CTRL:
|
|
curStandardModifiers = modifiersStandardTestCTRL;
|
|
break;
|
|
case ALT:
|
|
curStandardModifiers = modifiersStandardTestALT;
|
|
break;
|
|
default: //NONE by default
|
|
curStandardModifiers = modifiersStandardTestNONE;
|
|
}
|
|
return curStandardModifiers;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/* A class that invoke appropriate verification
|
|
* routine with current modifier.
|
|
*/
|
|
class CheckingModifierAdapter extends MouseAdapter{
|
|
int modifier;
|
|
public CheckingModifierAdapter(int modifier){
|
|
this.modifier = modifier;
|
|
}
|
|
|
|
public void mousePressed(MouseEvent e) {
|
|
System.out.println("PRESSED "+e);
|
|
if (e.getButton() > MouseEvent.BUTTON3) {
|
|
System.out.println("Extra button affected. Skip.");
|
|
} else {
|
|
MouseModifiersUnitTest_Standard.checkPressedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx(),
|
|
}
|
|
}
|
|
public void mouseReleased(MouseEvent e) {
|
|
System.out.println("RELEASED "+e);
|
|
if (e.getButton() > MouseEvent.BUTTON3) {
|
|
System.out.println("Extra button affected. Skip.");
|
|
} else {
|
|
MouseModifiersUnitTest_Standard.checkReleasedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx()
|
|
}
|
|
}
|
|
public void mouseClicked(MouseEvent e) {
|
|
System.out.println("CLICKED "+e);
|
|
if (e.getButton() > MouseEvent.BUTTON3) {
|
|
System.out.println("Extra button affected. Skip.");
|
|
} else {
|
|
MouseModifiersUnitTest_Standard.checkClickedModifiersTest(modifier, e); //e.getButton(), e.getModifiers(), e.getModifiersEx()
|
|
}
|
|
}
|
|
}
|
|
|