Index: gnu/testlet/java/awt/Window/pack1.java =================================================================== RCS file: gnu/testlet/java/awt/Window/pack1.java diff -N gnu/testlet/java/awt/Window/pack1.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gnu/testlet/java/awt/Window/pack1.java 11 Sep 2005 22:33:48 -0000 @@ -0,0 +1,137 @@ +// Tags: GUI JDK1.0 + +// Copyright (C) 2005 Red Hat + +// This file is part of Mauve. + +// Mauve 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 2, or (at your option) +// any later version. + +// Mauve 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 Mauve; see the file COPYING. If not, write to +// the Free Software Foundation, 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +package gnu.testlet.java.awt.Window; + +import gnu.testlet.TestHarness; +import gnu.testlet.Testlet; + +import java.awt.*; +import java.awt.event.*; + +/** + * Check that Window.pack gives children the right sizes. + */ +public class pack1 implements Testlet +{ + Color bg = new Color (243, 133, 89); + Color border = new Color (255, 0, 0); + + class pack1Frame extends Frame + { + public pack1Frame () + { + super (); + } + } + + class pack1Canvas extends Canvas + { + public pack1Canvas () + { + super (); + setBackground (bg); + } + + public void paint (Graphics g) + { + Rectangle bounds = new Rectangle (0, 0, + this.getSize ().width, + this.getSize ().height); + g.setColor (border); + g.drawRect (bounds.x, bounds.y, bounds.width - 1, bounds.height - 1); + } + } + + public void checkColor (TestHarness harness, Color c) + { + harness.check (c.getRed () == border.getRed () + && c.getGreen () == border.getGreen () + && c.getBlue () == border.getBlue ()); + } + + public void test (TestHarness harness) + { + Robot r = harness.createRobot (); + Color c; + int x = 100; + int y = 100; + int width = 100; + int height = 100; + Insets i; + + pack1Frame f = new pack1Frame (); + + f.setLocation (x, y); + f.setSize (width, height); + + f.add (new pack1Canvas ()); + + r.setAutoDelay (100); + r.setAutoWaitForIdle (true); + + f.show (); + + r.waitForIdle (); + r.delay (100); + + i = f.getInsets (); + + int top_y = y + i.top; + int bottom_y = y + height - i.bottom - 1; + int left_x = x + i.left; + int right_x = x + width - i.right - 1; + + // top-left-left + c = r.getPixelColor (left_x, top_y + 1); + checkColor (harness, c); + + // top-left-top + c = r.getPixelColor (left_x + 1, top_y); + checkColor (harness, c); + + // top-right-right + c = r.getPixelColor (right_x, top_y + 1); + checkColor (harness, c); + + // top-right-top + c = r.getPixelColor (right_x - 1, top_y); + checkColor (harness, c); + + // bottom-left-left + c = r.getPixelColor (left_x, bottom_y - 1); + checkColor (harness, c); + + // bottom-left-bottom + c = r.getPixelColor (left_x + 1, bottom_y); + checkColor (harness, c); + + // bottom-right-right + c = r.getPixelColor (right_x, bottom_y - 1); + checkColor (harness, c); + + // bottom-right-bottom + c = r.getPixelColor (right_x - 1, bottom_y); + checkColor (harness, c); + + r.delay (4000); + } +} Index: gnu/testlet/java/awt/event/MouseEvent/modifiers.java =================================================================== RCS file: gnu/testlet/java/awt/event/MouseEvent/modifiers.java diff -N gnu/testlet/java/awt/event/MouseEvent/modifiers.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gnu/testlet/java/awt/event/MouseEvent/modifiers.java 11 Sep 2005 22:33:48 -0000 @@ -0,0 +1,280 @@ +// Tags: JDK1.4 + +// Copyright (C) 2005 Roman Kennke + +// This file is part of Mauve. + +// Mauve 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 2, or (at your option) +// any later version. + +// Mauve 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 Mauve; see the file COPYING. If not, write to +// the Free Software Foundation, 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +package gnu.testlet.java.awt.event.MouseEvent; + +import gnu.testlet.Testlet; +import gnu.testlet.TestHarness; + +import java.awt.Frame; +import java.awt.Point; +import java.awt.Robot; +import java.awt.event.InputEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.KeyEvent; + +/** + * Checks if a click does trigger the correct getModifiers() flags. + * This doesn't test the ALT, META or ALT_GRAPH modifiers as their + * behaviour is window-manager specific. Some window managers + * intercept some key-mouse combinations, e.g. ALT-BUTTON1 means + * "Start dragging this window" in Metacity. Also note that xmodmap + * settings will affect Java-generated modifier masks. + * + * @author Roman Kennke + */ +public class modifiers implements Testlet +{ + int mask; + Robot robot; + TestHarness h; + // set this to true to test ALT, META and ALT_GRAPH modifiers + boolean test_alt; + + public void checkMask (int keycode[], int buttonmask, int keymask) + { + int i; + for (i = 0; i < keycode.length; i++) + robot.keyPress (keycode[i]); + + robot.mousePress(buttonmask); + h.check(mask, buttonmask | keymask, "mousePressed: " + mask); + mask = 0; + robot.mouseRelease(buttonmask); + h.check(mask, buttonmask | keymask, "mouseReleased: " + mask); + mask = 0; + + for (i = 0; i < keycode.length; i++) + robot.keyRelease (keycode[i]); + } + + public void checkAllMaskCombinations (int buttonmask) + { + // each of the 5 key masks can be on or off, giving 32 possible + // combinations. + + // no modifiers + checkMask (new int[] {}, + buttonmask, + 0); + + // one modifier + // SHIFT_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT }, + buttonmask, + InputEvent.SHIFT_MASK); + + // CTRL_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL }, + buttonmask, + InputEvent.CTRL_MASK); + + if (test_alt) + { + // META_MASK + checkMask (new int[] { KeyEvent.VK_META }, + buttonmask, + InputEvent.META_MASK); + + // ALT_MASK + checkMask (new int[] { KeyEvent.VK_ALT }, + buttonmask, + InputEvent.ALT_MASK); + + // ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.ALT_GRAPH_MASK); + } + + // two modifiers + + // SHIFT_MASK | CTRL_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK); + + if (test_alt) + { + // SHIFT_MASK | META_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.META_MASK); + + // SHIFT_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.ALT_MASK); + + // SHIFT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.ALT_GRAPH_MASK); + + // CTRL_MASK | META_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.META_MASK); + + // CTRL_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.ALT_MASK); + + // CTRL_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK); + + // META_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.META_MASK | InputEvent.ALT_MASK); + + // META_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK); + + // ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // three modifiers + + // SHIFT_MASK | CTRL_MASK | META_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK); + + // SHIFT_MASK | CTRL_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_MASK); + + // SHIFT_MASK | CTRL_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK); + + // SHIFT_MASK | META_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK); + + // SHIFT_MASK | META_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK); + + // SHIFT_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // CTRL_MASK | META_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK); + + // CTRL_MASK | META_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK); + + // CTRL_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // META_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // four modifiers + + // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK); + + // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK); + + // SHIFT_MASK | CTRL_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // SHIFT_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // CTRL_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + + // five modifiers + + // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK); + } + } + + public void test(TestHarness h) + { + this.h = h; + Frame frame = new Frame(); + MouseAdapter a = new MouseAdapter() + { + public void mousePressed(MouseEvent ev) + { + mask = ev.getModifiers(); + } + public void mouseReleased(MouseEvent ev) + { + mask = ev.getModifiers(); + } + }; + frame.addMouseListener(a); + frame.setSize(100, 100); + frame.show(); + Point loc = frame.getLocationOnScreen(); + + robot = h.createRobot(); + robot.setAutoWaitForIdle (true); + + robot.mouseMove(loc.x + 50, loc.y + 50); + + checkAllMaskCombinations (InputEvent.BUTTON1_MASK); + checkAllMaskCombinations (InputEvent.BUTTON2_MASK); + checkAllMaskCombinations (InputEvent.BUTTON3_MASK); + } +} Index: gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java =================================================================== RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java,v retrieving revision 1.1 diff -u -r1.1 modifiersEx.java --- gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java 25 Apr 2005 20:47:07 -0000 1.1 +++ gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java 11 Sep 2005 22:33:48 -0000 @@ -30,20 +30,240 @@ import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.KeyEvent; /** - * Checks if a click does trigger the correct getModifiersEx() flags. + * Checks if a click does trigger the correct getModifiers() flags. + * This doesn't test the ALT, META or ALT_GRAPH modifiers as their + * behaviour is window-manager specific. Some window managers + * intercept some key-mouse combinations, e.g. ALT-BUTTON1 means + * "Start dragging this window" in Metacity. Also note that xmodmap + * settings will affect Java-generated modifier masks. * * @author Roman Kennke */ public class modifiersEx implements Testlet { int mask; - + Robot robot; + TestHarness h; + // set this to true to test ALT, META and ALT_GRAPH modifiers + boolean test_alt; + + public void checkMask (int keycode[], int buttonmask, int keymask) + { + int robot_button = 0; + + if (buttonmask == InputEvent.BUTTON1_DOWN_MASK) + robot_button = InputEvent.BUTTON1_MASK; + else if (buttonmask == InputEvent.BUTTON2_DOWN_MASK) + robot_button = InputEvent.BUTTON2_MASK; + else if (buttonmask == InputEvent.BUTTON3_DOWN_MASK) + robot_button = InputEvent.BUTTON3_MASK; + + int i; + for (i = 0; i < keycode.length; i++) + robot.keyPress (keycode[i]); + + robot.mousePress(robot_button); + h.check(mask, buttonmask | keymask, "mousePressed: " + mask); + mask = 0; + robot.mouseRelease(robot_button); + // release event extended modifiers don't include button mask + h.check(mask, keymask, "mouseReleased: " + mask); + mask = 0; + + for (i = 0; i < keycode.length; i++) + robot.keyRelease (keycode[i]); + } + + public void checkAllMaskCombinations (int buttonmask) + { + // each of the 5 key masks can be on or off, giving 32 possible + // combinations. + + // no modifiers + checkMask (new int[] {}, + buttonmask, + 0); + + // one modifier + // SHIFT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK); + + // CTRL_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL }, + buttonmask, + InputEvent.CTRL_DOWN_MASK); + + if (test_alt) + { + // META_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_META }, + buttonmask, + InputEvent.META_DOWN_MASK); + + // ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_ALT }, + buttonmask, + InputEvent.ALT_DOWN_MASK); + + // ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.ALT_GRAPH_DOWN_MASK); + } + + // two modifiers + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK); + + if (test_alt) + { + // SHIFT_DOWN_MASK | META_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK); + + // SHIFT_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // SHIFT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // CTRL_DOWN_MASK | META_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK); + + // CTRL_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // CTRL_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // META_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // META_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // three modifiers + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK); + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // SHIFT_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // CTRL_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // four modifiers + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK); + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + + // five modifiers + + // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK + checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH }, + buttonmask, + InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK); + } + } + public void test(TestHarness h) { + this.h = h; Frame frame = new Frame(); - frame.addMouseListener(new MouseAdapter() { + MouseAdapter a = new MouseAdapter() + { public void mousePressed(MouseEvent ev) { mask = ev.getModifiersEx(); @@ -52,19 +272,19 @@ { mask = ev.getModifiersEx(); } - }); + }; + frame.addMouseListener(a); frame.setSize(100, 100); frame.show(); Point loc = frame.getLocationOnScreen(); - Robot robot = h.createRobot(); + robot = h.createRobot(); + robot.setAutoWaitForIdle (true); + robot.mouseMove(loc.x + 50, loc.y + 50); - - robot.mousePress(InputEvent.BUTTON1_MASK); - h.check(mask & InputEvent.BUTTON1_DOWN_MASK, InputEvent.BUTTON1_DOWN_MASK, - "mousePressed: " + mask); - robot.mouseRelease(InputEvent.BUTTON1_MASK); - h.check(mask & InputEvent.BUTTON1_DOWN_MASK, 0, "mouseReleased: " + mask); - } + checkAllMaskCombinations (InputEvent.BUTTON1_DOWN_MASK); + checkAllMaskCombinations (InputEvent.BUTTON2_DOWN_MASK); + checkAllMaskCombinations (InputEvent.BUTTON3_DOWN_MASK); + } }