870N/A/*
870N/A @test %I% %E%
870N/A @bug 6315717
870N/A @summary verifies that modifiers are correct for standard (1, 2, 3, wheel) mouse buttons
870N/A @author Andrei Dmitriev : area=awt.mouse
870N/A @run main MouseModifiersUnitTest_Standard
870N/A */
870N/A
870N/Aimport java.awt.*;
870N/Aimport java.awt.event.*;
870N/Aimport java.util.HashMap;
870N/Aimport java.util.StringTokenizer;
870N/Aimport java.util.Vector;
870N/A
870N/A//the test verifies:
870N/A// 1) verifies that modifiers are correct for standard (1, 2, 3) mouse buttons
870N/A// TODO: 2) verifies that modifiers are correct for wheel
870N/A// TODO: 3)
870N/A// Case1. the test posts BUTTONx_MASK and verifies that paramString() contains correct modifiers and exModifiers
870N/A// Case2. the test posts BUTTONx_DOWN_MASK and verifies that paramString() contains correct modifiers and exModifiers
870N/A// Case3. the test posts getMaskForButton(n) and verifies that paramString() contains correct modifiers and exModifiers
870N/A// repeat all cases with SHIFT/ALT/CTRL modifiers verify that paramString() contains correct modifiers and exModifiers
870N/A// I'm verifying button, modifiers and extModifiers for now.
870N/A
870N/Apublic class MouseModifiersUnitTest_Standard {
870N/A static final int NONE = 0;
870N/A static final int SHIFT = 1;
870N/A static final int CTRL = 2;
870N/A static final int ALT = 3;
870N/A static boolean debug = true; //dump all errors (debug) or throw first(under jtreg) exception
870N/A static boolean autorun = false; //use robot or manual run
870N/A static int testModifier = NONE;
870N/A // static String testModifier = "NONE";
870N/A static CheckingModifierAdapter adapterTest1;
870N/A static CheckingModifierAdapter adapterTest2;
870N/A static CheckingModifierAdapter adapterTest3;
870N/A static CheckingModifierAdapter adapterTest4;
870N/A static Frame f;
870N/A final static int [] mouseButtons = new int [] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON3_MASK};
870N/A // BUTTON1, 2, 3 press-release.
870N/A final static int [] modifiersStandardTestNONE = new int[] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK,
870N/A MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK,
870N/A MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK };
870N/A final static int [] modifiersExStandardTestNONE = new int[] {MouseEvent.BUTTON1_DOWN_MASK, 0, 0,
870N/A MouseEvent.BUTTON2_DOWN_MASK, 0, 0,
870N/A MouseEvent.BUTTON3_DOWN_MASK, 0, 0};
870N/A // BUTTON1, 2, 3 press-release with shift modifier
870N/A final static int [] modifiersStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK,
870N/A MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK,
870N/A MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK };
870N/A final static int [] modifiersExStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
870N/A MouseEvent.BUTTON2_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
870N/A MouseEvent.BUTTON3_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK};
870N/A // BUTTON1, 2, 3 press-release with CTRL modifier
870N/A final static int [] modifiersStandardTestCTRL = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK,
870N/A MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK,
870N/A MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK };
870N/A final static int [] modifiersExStandardTestCTRL = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
870N/A MouseEvent.BUTTON2_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
870N/A MouseEvent.BUTTON3_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK};
870N/A
870N/A // BUTTON1, 2, 3 press-release with ALT modifier
870N/A final static int [] modifiersStandardTestALT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK,
870N/A MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK,
870N/A MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK };
870N/A final static int [] modifiersExStandardTestALT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
870N/A MouseEvent.BUTTON2_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
870N/A MouseEvent.BUTTON3_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK};
870N/A
870N/A static Robot robot;
870N/A
870N/A public static void main(String s[]){
870N/A initParams(s);
870N/A initAdapters();
870N/A f = new Frame();
870N/A final int [] modifiers = {InputEvent.SHIFT_MASK, InputEvent.CTRL_MASK};
870N/A final String [] modifierNames = {"InputEvent.SHIFT_MASK", "InputEvent.CTRL_MASK"};
870N/A f.setLayout(new FlowLayout());
870N/A f.addMouseWheelListener(new MouseWheelListener() {
870N/A public void mouseWheelMoved(MouseWheelEvent e) {
870N/A System.out.println("WHEEL "+e);
870N/A }
870N/A });
870N/A f.setSize(300, 300);
870N/A f.setVisible(true);
870N/A
870N/A try {
870N/A robot = new Robot();
870N/A robot.delay(500);
870N/A robot.mouseMove(f.getLocationOnScreen().x + f.getWidth()/2, f.getLocationOnScreen().y + f.getHeight()/2);
870N/A if (autorun) {
870N/A //testing buttons 1, 2, 3 only
870N/A testPlainButtons();
870N/A robot.delay(500);
870N/A
870N/A //testing buttons 1, 2, 3 with SHIFT, CTRL, ALT keyboard modifiers
870N/A testButtonsWithShift();
870N/A robot.delay(500);
870N/A
870N/A testButtonsWithControl();
870N/A robot.delay(500);
870N/A
870N/A testButtonsWithAlt();
870N/A robot.delay(500);
870N/A } else {
870N/A switch (testModifier){
870N/A case SHIFT:
870N/A f.addMouseListener(adapterTest2);
870N/A break;
870N/A case CTRL:
870N/A f.addMouseListener(adapterTest3);
870N/A break;
870N/A case ALT:
870N/A f.addMouseListener(adapterTest4);
870N/A break;
870N/A default: //NONE inclusive
870N/A f.addMouseListener(adapterTest1);
870N/A }
870N/A }
870N/A } catch (Exception e){
870N/A throw new RuntimeException("Test failed.");
870N/A }
870N/A
870N/A }
870N/A
870N/A public static void initAdapters(){
870N/A adapterTest1 = new CheckingModifierAdapter(NONE);
870N/A adapterTest2 = new CheckingModifierAdapter(SHIFT);
870N/A adapterTest3 = new CheckingModifierAdapter(CTRL);
870N/A adapterTest4 = new CheckingModifierAdapter(ALT);
870N/A }
870N/A
870N/A /*======================================================================*/
870N/A public static void checkPressedModifiersTest(int testModifier, MouseEvent event){
870N/A int [] curStandardModifiers = getStandardArray(testModifier);
870N/A int [] curStandardExModifiers = getStandardExArray(testModifier);
870N/A int button = event.getButton();
870N/A int modifiers = event.getModifiers();
870N/A int modifiersEx = event.getModifiersEx();
870N/A int index = (button - 1)*3;
870N/A // int index = (button - 4)*3;
870N/A dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
870N/A if (modifiers != curStandardModifiers[index]){
870N/A if (debug){
870N/A System.out.println("Test failed : Pressed. modifiers != modifiersStandard");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Pressed. modifiers != modifiersStandard");
870N/A }
870N/A }
870N/A
870N/A if (modifiersEx != curStandardExModifiers[index]){
870N/A// System.out.println(">>>>>>>>>>>>>>> Pressed. modifiersEx "+modifiersEx +" : "+!= curStandardExModifiers");
870N/A if (debug){
870N/A System.out.println("Test failed : Pressed. modifiersEx != curStandardExModifiers");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Pressed. modifiersEx != curStandardExModifiers");
870N/A }
870N/A }
870N/A HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
870N/A System.out.println(event.paramString());
870N/A checkButton(paramStringElements, button);
870N/A checkModifiers(testModifier, paramStringElements, button);
870N/A checkExtModifiersOnPress(testModifier, paramStringElements, button);
870N/A }
870N/A
870N/A public static void checkButton(HashMap<String, String> h, int button){
870N/A if (h.get("button") == null) {
870N/A throw new RuntimeException("Test failed : Clicked. button is absent in paramString()");
870N/A }
870N/A if (Integer.parseInt(h.get("button")) != button) {
870N/A throw new RuntimeException("Test failed : Clicked. button in paramString() doesn't equal to button being pressed.");
870N/A }
870N/A }
870N/A
870N/A public static void checkExtModifiersOnPress(int testModifier, HashMap h, int button){
870N/A String ethalon = "";
870N/A if (h.get("extModifiers") == null) {
870N/A System.out.println("Test failed : Pressed. extModifiers == null");
870N/A throw new RuntimeException("Test failed : Pressed. extModifiers == null");
870N/A }
870N/A switch (testModifier){
870N/A case SHIFT:{
870N/A ethalon = "Shift+";
870N/A break;
870N/A }
870N/A case ALT:{
870N/A ethalon = "Alt+";
870N/A break;
870N/A }
870N/A case CTRL:{
870N/A ethalon = "Ctrl+";
870N/A break;
870N/A }
870N/A default: {
870N/A ethalon = "";
870N/A }
870N/A ethalon = ethalon + "Button" +button;
870N/A
870N/A if (!h.get("extModifiers").equals(ethalon)) {
870N/A System.out.println("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
870N/A throw new RuntimeException("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
870N/A }
870N/A }
870N/A }
870N/A
870N/A
870N/A
870N/A public static void checkModifiers(int testModifier, HashMap<String, String> h, int button){
870N/A // none of modifiers should be null
870N/A if (h.get("modifiers") == null) {
870N/A System.out.println("Test failed : modifiers == null");
870N/A throw new RuntimeException("Test failed : modifiers == null");
870N/A }
870N/A Vector <String> modifierElements = tokenizeModifiers(h.get("modifiers"));
870N/A //check that ButtonX is there
870N/A String buttonEthalon = "Button" + button;
870N/A if (modifierElements.contains(buttonEthalon)){
870N/A modifierElements.remove(buttonEthalon);
870N/A } else {
870N/A System.out.println("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
870N/A throw new RuntimeException("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
870N/A }
870N/A
870N/A
870N/A //Check all explicitly pressed modifires
870N/A// boolean altIncluded = false; //don't duplicate Alt when ALT is pressed and BUTTON2_MASK.
870N/A String excplicitModifier = "";
870N/A boolean altIncluded = false;
870N/A switch (testModifier){
870N/A case SHIFT:{
870N/A excplicitModifier = "Shift";
870N/A break;
870N/A }
870N/A case ALT:{
870N/A excplicitModifier = "Alt";
870N/A altIncluded = true; //there should be only on "Alt" for two modifiers. So check it.
870N/A break;
870N/A }
870N/A case CTRL:{
870N/A excplicitModifier = "Ctrl";
870N/A break;
870N/A }
870N/A }
870N/A if (!excplicitModifier.equals("")){
870N/A if (modifierElements.contains(excplicitModifier)){
870N/A modifierElements.remove(excplicitModifier);
870N/A } else {
870N/A System.out.println("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
870N/A throw new RuntimeException("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
870N/A }
870N/A }
870N/A
870N/A //Button 2 and 3 reports about Alt+Button2 and Meta+Button3 respectively.
870N/A //Check these values too
870N/A String extraModifiers = "";
870N/A String extraModifiersButton3 = "";
870N/A switch (button){
870N/A //BUTTON1 with ALT reports about Alt+Button1+Button2.
870N/A //We should fix this but I would not change this.
870N/A case 1: {
870N/A //Alt+Button1+Button2:
870N/A // 1) we already handled "Alt" in excplicitModifier
870N/A // 2) we already took "Button1" in buttonEthalon
870N/A // 3) so "Button2" is only remained.
870N/A // This should only happen when ALT+Button1 is pressed
870N/A if (altIncluded){
870N/A extraModifiers = "Button2";
870N/A }
870N/A break;
870N/A }
870N/A case 2: {
870N/A //Alt+Button2 report about "Alt+Button2".
870N/A extraModifiers = "Alt";
870N/A break;
870N/A }
870N/A case 3: {
870N/A //ALT+BUTTON3 reports about "Alt+Meta+Button2+Button3"
870N/A // This should only happen when ALT+Button3 is pressed
870N/A extraModifiers = "Meta";
870N/A if (altIncluded){
870N/A extraModifiersButton3 = "Button2";
870N/A }
870N/A break;
870N/A }
870N/A }//switch
870N/A
870N/A if (!extraModifiers.equals("")){
870N/A if (modifierElements.contains(extraModifiers)){
870N/A modifierElements.remove(extraModifiers);
870N/A } else {
870N/A //we may already removed "Alt" when filtered explicit modifiers.
870N/A //Here is no failure in this case.
870N/A if (!altIncluded) {
870N/A System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
870N/A throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
870N/A }
870N/A }
870N/A }
870N/A
870N/A if (!extraModifiersButton3.equals("")){
870N/A if (modifierElements.contains(extraModifiersButton3)){
870N/A modifierElements.remove(extraModifiersButton3);
870N/A } else {
870N/A System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
870N/A throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
870N/A }
870N/A }
870N/A
870N/A //the length of vector should now be zero
870N/A if (!modifierElements.isEmpty()){
870N/A System.out.println("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
870N/A throw new RuntimeException("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
870N/A }
870N/A }
870N/A
870N/A public static void checkExtModifiersOnReleaseClick(int testModifier, HashMap h, int button){
870N/A String ethalon = "";
870N/A switch (testModifier){
870N/A case SHIFT:{
870N/A ethalon = "Shift+";
870N/A break;
870N/A }
870N/A case ALT:{
870N/A ethalon = "Alt+";
870N/A break;
870N/A }
870N/A case CTRL:{
870N/A ethalon = "Ctrl+";
870N/A break;
870N/A }
870N/A default: {
870N/A if (h.get("extModifiers") != null) {
870N/A System.out.println("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
870N/A throw new RuntimeException("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
870N/A } else {
870N/A //no modifiers
870N/A return;
870N/A }
870N/A }
870N/A }
870N/A if (h.get("extModifiers").equals(ethalon)) {
870N/A System.out.println("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
870N/A throw new RuntimeException("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
870N/A }
870N/A }
870N/A
870N/A public static void checkReleasedModifiersTest(int testModifier, MouseEvent event){
870N/A int [] curStandardModifiers = getStandardArray(testModifier);
870N/A int [] curStandardExModifiers = getStandardExArray(testModifier);
870N/A // int index = (button - 4)*3 + 1;
870N/A int button = event.getButton();
870N/A int modifiers = event.getModifiers();
870N/A int modifiersEx = event.getModifiersEx();
870N/A int index = (button - 1)*3 + 1;
870N/A dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
870N/A if (modifiers != curStandardModifiers[index]){
870N/A if (debug){
870N/A System.out.println("Test failed : Released. modifiers != modifiersStandard");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Released. modifiers != modifiersStandard");
870N/A }
870N/A }
870N/A if (modifiersEx != curStandardExModifiers[index]){
870N/A if (debug){
870N/A System.out.println("Test failed : Released. modifiersEx != curStandardExModifiers");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Released. modifiersEx != curStandardExModifiers");
870N/A }
870N/A }
870N/A HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
870N/A System.out.println(event.paramString());
870N/A checkButton(paramStringElements, button);
870N/A checkModifiers(testModifier, paramStringElements, button);
870N/A checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
870N/A }
870N/A
870N/A public static void checkClickedModifiersTest(int testModifier, MouseEvent event){
870N/A int [] curStandardModifiers = getStandardArray(testModifier);
870N/A int [] curStandardExModifiers = getStandardExArray(testModifier);
870N/A // int index = (button - 4)*3 + 2;
870N/A int button = event.getButton();
870N/A int modifiers = event.getModifiers();
870N/A int modifiersEx = event.getModifiersEx();
870N/A int index = (button - 1)*3 + 2;
870N/A dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
870N/A if (modifiers != curStandardModifiers[index]){
870N/A if (debug){
870N/A System.out.println("Test failed : Clicked. modifiers != modifiersStandard");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Clicked. modifiers != modifiersStandard");
870N/A }
870N/A }
870N/A if (modifiersEx != curStandardExModifiers[index]){
870N/A if (debug){
870N/A System.out.println("Test failed : Clicked. modifiersEx != curStandardExModifiers");
870N/A } else {
870N/A throw new RuntimeException("Test failed : Clicked. modifiersEx != curStandardExModifiers");
870N/A }
870N/A }
870N/A HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
870N/A checkButton(paramStringElements, button);
870N/A checkModifiers(testModifier, paramStringElements, button);
870N/A checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
870N/A }
870N/A /*======================================================================*/
870N/A
870N/A public static HashMap<String, String> tokenizeParamString(String param){
870N/A HashMap <String, String> params = new HashMap<String, String>();
870N/A StringTokenizer st = new StringTokenizer(param, ",=");
870N/A while (st.hasMoreTokens()){
870N/A String tmp = st.nextToken();
870N/A// System.out.println("PARSER : "+tmp);
870N/A if (tmp.equals("button") ||
870N/A tmp.equals("modifiers") ||
870N/A tmp.equals("extModifiers")) {
870N/A params.put(tmp, st.nextToken());
870N/A }
870N/A }
870N/A return params;
870N/A }
870N/A
870N/A public static Vector<String> tokenizeModifiers(String modifierList){
870N/A Vector<String> modifiers = new Vector<String>();
870N/A StringTokenizer st = new StringTokenizer(modifierList, "+");
870N/A while (st.hasMoreTokens()){
870N/A String tmp = st.nextToken();
870N/A modifiers.addElement(tmp);
870N/A System.out.println("MODIFIER PARSER : "+tmp);
870N/A }
870N/A return modifiers;
870N/A }
870N/A
870N/A
870N/A //test BUTTON1, 2 and 3 without any modifiers keys
870N/A public static void testPlainButtons(){
870N/A System.out.println("Testing buttons without modifiers.");
870N/A f.addMouseListener(adapterTest1);
870N/A for (int button : mouseButtons){
870N/A robot.mousePress(button);
870N/A robot.delay(100);
870N/A robot.mouseRelease(button);
870N/A }
870N/A robot.delay(1000);
870N/A f.removeMouseListener(adapterTest1);
870N/A }
870N/A
870N/A //test BUTTON1, 2 and 3 with SHIFT key
870N/A public static void testButtonsWithShift(){
870N/A System.out.println("Testing buttons with SHIFT modifier.");
870N/A f.addMouseListener(adapterTest2);
870N/A
870N/A for (int button : mouseButtons){
870N/A robot.keyPress(KeyEvent.VK_SHIFT);
870N/A robot.mousePress(button);
870N/A robot.delay(100);
870N/A robot.mouseRelease(button);
870N/A robot.keyRelease(KeyEvent.VK_SHIFT);
870N/A }
870N/A robot.delay(1000);
870N/A f.removeMouseListener(adapterTest2);
870N/A }
870N/A
870N/A //test BUTTON1, 2 and 3 with CTRL key
870N/A public static void testButtonsWithControl(){
870N/A System.out.println("Testing buttons with CONTROL modifier.");
870N/A f.addMouseListener(adapterTest3);
870N/A for (int button : mouseButtons){
870N/A robot.keyPress(KeyEvent.VK_CONTROL);
870N/A robot.mousePress(button);
870N/A robot.delay(100);
870N/A robot.mouseRelease(button);
870N/A robot.keyRelease(KeyEvent.VK_CONTROL);
870N/A }
870N/A robot.delay(1000);
870N/A f.removeMouseListener(adapterTest3);
870N/A }
870N/A
870N/A //test BUTTON1, 2 and 3 with ALT key
870N/A public static void testButtonsWithAlt(){
870N/A System.out.println("Testing buttons with ALT modifier.");
870N/A f.addMouseListener(adapterTest4);
870N/A for (int button : mouseButtons){
870N/A robot.keyPress(KeyEvent.VK_ALT);
870N/A robot.mousePress(button);
870N/A robot.delay(100);
870N/A robot.mouseRelease(button);
870N/A robot.keyRelease(KeyEvent.VK_ALT);
870N/A }
870N/A robot.delay(1000);
870N/A f.removeMouseListener(adapterTest4);
870N/A }
870N/A
870N/A public static void initParams(String []s){
870N/A if (s.length != 3){
870N/A autorun = true;
870N/A debug = false;
870N/A testModifier = NONE;
870N/A } else {
870N/A autorun = Boolean.valueOf(s[0]);
870N/A debug = Boolean.valueOf(s[1]);
870N/A
870N/A if (s[2].equals("NONE")){
870N/A testModifier = NONE;
870N/A }
870N/A if (s[2].equals("SHIFT")){
870N/A testModifier = SHIFT;
870N/A }
870N/A if (s[2].equals("CTRL")){
870N/A testModifier = CTRL;
870N/A }
870N/A if (s[2].equals("ALT")){
870N/A testModifier = ALT;
870N/A }
870N/A }
870N/A System.out.println("Autorun : " +autorun);
870N/A System.out.println("Debug mode : " +debug);
870N/A System.out.println("Modifier to verify : " + testModifier);
870N/A }
870N/A
870N/A public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
870N/A System.out.println("Button = "+button + "Modifiers = "+ modifiers + " standard = "+ modifiersStandard);
870N/A System.out.println(" ModifiersEx = "+ modifiersEx + " standardEx = "+ modifiersExStandard);
870N/A }
870N/A
870N/A private static int[] getStandardExArray(int testModifier) {
870N/A int [] curStandardExModifiers;
870N/A switch (testModifier){
870N/A case SHIFT:
870N/A curStandardExModifiers = modifiersExStandardTestSHIFT;
870N/A break;
870N/A case CTRL:
870N/A curStandardExModifiers = modifiersExStandardTestCTRL;
870N/A break;
870N/A case ALT:
870N/A curStandardExModifiers = modifiersExStandardTestALT;
870N/A break;
870N/A default: //NONE by default
870N/A curStandardExModifiers = modifiersExStandardTestNONE;
870N/A }
870N/A return curStandardExModifiers;
870N/A }
870N/A
870N/A private static int[] getStandardArray(int testModifier) {
870N/A int [] curStandardModifiers;
870N/A switch (testModifier){
870N/A case SHIFT:
870N/A curStandardModifiers = modifiersStandardTestSHIFT;
870N/A break;
870N/A case CTRL:
870N/A curStandardModifiers = modifiersStandardTestCTRL;
870N/A break;
870N/A case ALT:
870N/A curStandardModifiers = modifiersStandardTestALT;
870N/A break;
870N/A default: //NONE by default
870N/A curStandardModifiers = modifiersStandardTestNONE;
870N/A }
870N/A return curStandardModifiers;
870N/A }
870N/A
870N/A}
870N/A
870N/A
870N/A/* A class that invoke appropriate verification
870N/A * routine with current modifier.
870N/A */
870N/Aclass CheckingModifierAdapter extends MouseAdapter{
870N/A int modifier;
870N/A public CheckingModifierAdapter(int modifier){
870N/A this.modifier = modifier;
870N/A }
870N/A
870N/A public void mousePressed(MouseEvent e) {
870N/A System.out.println("PRESSED "+e);
870N/A if (e.getButton() > MouseEvent.BUTTON3) {
870N/A System.out.println("Extra button affected. Skip.");
870N/A } else {
870N/A MouseModifiersUnitTest_Standard.checkPressedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx(),
870N/A }
870N/A }
870N/A public void mouseReleased(MouseEvent e) {
870N/A System.out.println("RELEASED "+e);
870N/A if (e.getButton() > MouseEvent.BUTTON3) {
870N/A System.out.println("Extra button affected. Skip.");
870N/A } else {
870N/A MouseModifiersUnitTest_Standard.checkReleasedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx()
870N/A }
870N/A }
870N/A public void mouseClicked(MouseEvent e) {
870N/A System.out.println("CLICKED "+e);
870N/A if (e.getButton() > MouseEvent.BUTTON3) {
870N/A System.out.println("Extra button affected. Skip.");
870N/A } else {
870N/A MouseModifiersUnitTest_Standard.checkClickedModifiersTest(modifier, e); //e.getButton(), e.getModifiers(), e.getModifiersEx()
870N/A }
870N/A }
870N/A}
870N/A