This is the mail archive of the
mauve-discuss@sourceware.org
mailing list for the Mauve project.
new tests
- From: Thomas Fitzsimmons <fitzsim at redhat dot com>
- To: mauve-discuss at sources dot redhat dot com
- Date: Sun, 11 Sep 2005 18:33:41 -0400
- Subject: new tests
Hi,
I committed this patch to add some new tests and extend the MouseEvent
modifiers test.
Tom
2005-09-11 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/testlet/java/awt/Window/pack1.java: New test.
* gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java: Cover
all modifiers.
* gnu/testlet/java/awt/event/MouseEvent/modifiers.java: New test.
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 <roman@kennke.org>
+
+// 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);
+ }
}