Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-aarch32-jdk8u
Path: blob/jdk8u272-b10-aarch32-20201026/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java
48795 views
1
/*
2
* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
@test %I% %E%
26
@bug 6315717
27
@summary verifies that modifiers are correct for standard (1, 2, 3, wheel) mouse buttons
28
@author Andrei Dmitriev : area=awt.mouse
29
@run main MouseModifiersUnitTest_Standard
30
*/
31
32
import java.awt.*;
33
import java.awt.event.*;
34
import java.util.HashMap;
35
import java.util.StringTokenizer;
36
import java.util.Vector;
37
38
//the test verifies:
39
// 1) verifies that modifiers are correct for standard (1, 2, 3) mouse buttons
40
// TODO: 2) verifies that modifiers are correct for wheel
41
// TODO: 3)
42
// Case1. the test posts BUTTONx_MASK and verifies that paramString() contains correct modifiers and exModifiers
43
// Case2. the test posts BUTTONx_DOWN_MASK and verifies that paramString() contains correct modifiers and exModifiers
44
// Case3. the test posts getMaskForButton(n) and verifies that paramString() contains correct modifiers and exModifiers
45
// repeat all cases with SHIFT/ALT/CTRL modifiers verify that paramString() contains correct modifiers and exModifiers
46
// I'm verifying button, modifiers and extModifiers for now.
47
48
public class MouseModifiersUnitTest_Standard {
49
static final int NONE = 0;
50
static final int SHIFT = 1;
51
static final int CTRL = 2;
52
static final int ALT = 3;
53
static boolean debug = true; //dump all errors (debug) or throw first(under jtreg) exception
54
static boolean autorun = false; //use robot or manual run
55
static int testModifier = NONE;
56
// static String testModifier = "NONE";
57
static CheckingModifierAdapter adapterTest1;
58
static CheckingModifierAdapter adapterTest2;
59
static CheckingModifierAdapter adapterTest3;
60
static CheckingModifierAdapter adapterTest4;
61
static Frame f;
62
final static int [] mouseButtons = new int [] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON3_MASK};
63
// BUTTON1, 2, 3 press-release.
64
final static int [] modifiersStandardTestNONE = new int[] {MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK,
65
MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK, MouseEvent.BUTTON2_MASK,
66
MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK, MouseEvent.BUTTON3_MASK };
67
final static int [] modifiersExStandardTestNONE = new int[] {MouseEvent.BUTTON1_DOWN_MASK, 0, 0,
68
MouseEvent.BUTTON2_DOWN_MASK, 0, 0,
69
MouseEvent.BUTTON3_DOWN_MASK, 0, 0};
70
// BUTTON1, 2, 3 press-release with shift modifier
71
final static int [] modifiersStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.SHIFT_MASK,
72
MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.SHIFT_MASK,
73
MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.SHIFT_MASK };
74
final static int [] modifiersExStandardTestSHIFT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
75
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK,
76
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK};
77
// BUTTON1, 2, 3 press-release with CTRL modifier
78
final static int [] modifiersStandardTestCTRL = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON1_MASK|InputEvent.CTRL_MASK,
79
MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON2_MASK|InputEvent.CTRL_MASK,
80
MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK, MouseEvent.BUTTON3_MASK|InputEvent.CTRL_MASK };
81
final static int [] modifiersExStandardTestCTRL = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
82
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
83
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK, InputEvent.CTRL_DOWN_MASK};
84
85
// BUTTON1, 2, 3 press-release with ALT modifier
86
final static int [] modifiersStandardTestALT = new int[] {MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON1_MASK|InputEvent.ALT_MASK,
87
MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON2_MASK|InputEvent.ALT_MASK,
88
MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK, MouseEvent.BUTTON3_MASK|InputEvent.ALT_MASK };
89
final static int [] modifiersExStandardTestALT = new int[] {MouseEvent.BUTTON1_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
90
MouseEvent.BUTTON2_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK,
91
MouseEvent.BUTTON3_DOWN_MASK|InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK, InputEvent.ALT_DOWN_MASK};
92
93
static Robot robot;
94
95
public static void main(String s[]){
96
initParams(s);
97
initAdapters();
98
f = new Frame();
99
final int [] modifiers = {InputEvent.SHIFT_MASK, InputEvent.CTRL_MASK};
100
final String [] modifierNames = {"InputEvent.SHIFT_MASK", "InputEvent.CTRL_MASK"};
101
f.setLayout(new FlowLayout());
102
f.addMouseWheelListener(new MouseWheelListener() {
103
public void mouseWheelMoved(MouseWheelEvent e) {
104
System.out.println("WHEEL "+e);
105
}
106
});
107
f.setSize(300, 300);
108
f.setVisible(true);
109
110
try {
111
robot = new Robot();
112
robot.delay(500);
113
robot.mouseMove(f.getLocationOnScreen().x + f.getWidth()/2, f.getLocationOnScreen().y + f.getHeight()/2);
114
if (autorun) {
115
//testing buttons 1, 2, 3 only
116
testPlainButtons();
117
robot.delay(500);
118
119
//testing buttons 1, 2, 3 with SHIFT, CTRL, ALT keyboard modifiers
120
testButtonsWithShift();
121
robot.delay(500);
122
123
testButtonsWithControl();
124
robot.delay(500);
125
126
testButtonsWithAlt();
127
robot.delay(500);
128
} else {
129
switch (testModifier){
130
case SHIFT:
131
f.addMouseListener(adapterTest2);
132
break;
133
case CTRL:
134
f.addMouseListener(adapterTest3);
135
break;
136
case ALT:
137
f.addMouseListener(adapterTest4);
138
break;
139
default: //NONE inclusive
140
f.addMouseListener(adapterTest1);
141
}
142
}
143
} catch (Exception e){
144
throw new RuntimeException("Test failed.");
145
}
146
147
}
148
149
public static void initAdapters(){
150
adapterTest1 = new CheckingModifierAdapter(NONE);
151
adapterTest2 = new CheckingModifierAdapter(SHIFT);
152
adapterTest3 = new CheckingModifierAdapter(CTRL);
153
adapterTest4 = new CheckingModifierAdapter(ALT);
154
}
155
156
/*======================================================================*/
157
public static void checkPressedModifiersTest(int testModifier, MouseEvent event){
158
int [] curStandardModifiers = getStandardArray(testModifier);
159
int [] curStandardExModifiers = getStandardExArray(testModifier);
160
int button = event.getButton();
161
int modifiers = event.getModifiers();
162
int modifiersEx = event.getModifiersEx();
163
int index = (button - 1)*3;
164
// int index = (button - 4)*3;
165
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
166
if (modifiers != curStandardModifiers[index]){
167
if (debug){
168
System.out.println("Test failed : Pressed. modifiers != modifiersStandard");
169
} else {
170
throw new RuntimeException("Test failed : Pressed. modifiers != modifiersStandard");
171
}
172
}
173
174
if (modifiersEx != curStandardExModifiers[index]){
175
// System.out.println(">>>>>>>>>>>>>>> Pressed. modifiersEx "+modifiersEx +" : "+!= curStandardExModifiers");
176
if (debug){
177
System.out.println("Test failed : Pressed. modifiersEx != curStandardExModifiers");
178
} else {
179
throw new RuntimeException("Test failed : Pressed. modifiersEx != curStandardExModifiers");
180
}
181
}
182
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
183
System.out.println(event.paramString());
184
checkButton(paramStringElements, button);
185
checkModifiers(testModifier, paramStringElements, button);
186
checkExtModifiersOnPress(testModifier, paramStringElements, button);
187
}
188
189
public static void checkButton(HashMap<String, String> h, int button){
190
if (h.get("button") == null) {
191
throw new RuntimeException("Test failed : Clicked. button is absent in paramString()");
192
}
193
if (Integer.parseInt(h.get("button")) != button) {
194
throw new RuntimeException("Test failed : Clicked. button in paramString() doesn't equal to button being pressed.");
195
}
196
}
197
198
public static void checkExtModifiersOnPress(int testModifier, HashMap h, int button){
199
String ethalon = "";
200
if (h.get("extModifiers") == null) {
201
System.out.println("Test failed : Pressed. extModifiers == null");
202
throw new RuntimeException("Test failed : Pressed. extModifiers == null");
203
}
204
switch (testModifier){
205
case SHIFT:{
206
ethalon = "Shift+";
207
break;
208
}
209
case ALT:{
210
ethalon = "Alt+";
211
break;
212
}
213
case CTRL:{
214
ethalon = "Ctrl+";
215
break;
216
}
217
default: {
218
ethalon = "";
219
}
220
ethalon = ethalon + "Button" +button;
221
222
if (!h.get("extModifiers").equals(ethalon)) {
223
System.out.println("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
224
throw new RuntimeException("Test failed : Pressed. extModifiers = " +h.get("extModifiers")+" instead of : "+ethalon);
225
}
226
}
227
}
228
229
230
231
public static void checkModifiers(int testModifier, HashMap<String, String> h, int button){
232
// none of modifiers should be null
233
if (h.get("modifiers") == null) {
234
System.out.println("Test failed : modifiers == null");
235
throw new RuntimeException("Test failed : modifiers == null");
236
}
237
Vector <String> modifierElements = tokenizeModifiers(h.get("modifiers"));
238
//check that ButtonX is there
239
String buttonEthalon = "Button" + button;
240
if (modifierElements.contains(buttonEthalon)){
241
modifierElements.remove(buttonEthalon);
242
} else {
243
System.out.println("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
244
throw new RuntimeException("Test failed : modifiers doesn't contain Button "+h.get("modifiers"));
245
}
246
247
248
//Check all explicitly pressed modifires
249
// boolean altIncluded = false; //don't duplicate Alt when ALT is pressed and BUTTON2_MASK.
250
String excplicitModifier = "";
251
boolean altIncluded = false;
252
switch (testModifier){
253
case SHIFT:{
254
excplicitModifier = "Shift";
255
break;
256
}
257
case ALT:{
258
excplicitModifier = "Alt";
259
altIncluded = true; //there should be only on "Alt" for two modifiers. So check it.
260
break;
261
}
262
case CTRL:{
263
excplicitModifier = "Ctrl";
264
break;
265
}
266
}
267
if (!excplicitModifier.equals("")){
268
if (modifierElements.contains(excplicitModifier)){
269
modifierElements.remove(excplicitModifier);
270
} else {
271
System.out.println("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
272
throw new RuntimeException("Test failed : modifiers doesn't contain explicit modifier "+excplicitModifier + " in "+ h.get("modifiers"));
273
}
274
}
275
276
//Button 2 and 3 reports about Alt+Button2 and Meta+Button3 respectively.
277
//Check these values too
278
String extraModifiers = "";
279
String extraModifiersButton3 = "";
280
switch (button){
281
//BUTTON1 with ALT reports about Alt+Button1+Button2.
282
//We should fix this but I would not change this.
283
case 1: {
284
//Alt+Button1+Button2:
285
// 1) we already handled "Alt" in excplicitModifier
286
// 2) we already took "Button1" in buttonEthalon
287
// 3) so "Button2" is only remained.
288
// This should only happen when ALT+Button1 is pressed
289
if (altIncluded){
290
extraModifiers = "Button2";
291
}
292
break;
293
}
294
case 2: {
295
//Alt+Button2 report about "Alt+Button2".
296
extraModifiers = "Alt";
297
break;
298
}
299
case 3: {
300
//ALT+BUTTON3 reports about "Alt+Meta+Button2+Button3"
301
// This should only happen when ALT+Button3 is pressed
302
extraModifiers = "Meta";
303
if (altIncluded){
304
extraModifiersButton3 = "Button2";
305
}
306
break;
307
}
308
}//switch
309
310
if (!extraModifiers.equals("")){
311
if (modifierElements.contains(extraModifiers)){
312
modifierElements.remove(extraModifiers);
313
} else {
314
//we may already removed "Alt" when filtered explicit modifiers.
315
//Here is no failure in this case.
316
if (!altIncluded) {
317
System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
318
throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiers + " in "+ h.get("modifiers"));
319
}
320
}
321
}
322
323
if (!extraModifiersButton3.equals("")){
324
if (modifierElements.contains(extraModifiersButton3)){
325
modifierElements.remove(extraModifiersButton3);
326
} else {
327
System.out.println("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
328
throw new RuntimeException("Test failed : modifiers doesn't contain a modifier from BUTTON2 or BUTTON3 "+extraModifiersButton3 + " in "+ h.get("modifiers"));
329
}
330
}
331
332
//the length of vector should now be zero
333
if (!modifierElements.isEmpty()){
334
System.out.println("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
335
throw new RuntimeException("Test failed : there is some more elements in modifiers that shouldn't be there: "+h.get("modifiers"));
336
}
337
}
338
339
public static void checkExtModifiersOnReleaseClick(int testModifier, HashMap h, int button){
340
String ethalon = "";
341
switch (testModifier){
342
case SHIFT:{
343
ethalon = "Shift+";
344
break;
345
}
346
case ALT:{
347
ethalon = "Alt+";
348
break;
349
}
350
case CTRL:{
351
ethalon = "Ctrl+";
352
break;
353
}
354
default: {
355
if (h.get("extModifiers") != null) {
356
System.out.println("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
357
throw new RuntimeException("Test failed : Released. extModifiers != null but no modifiers keys are pressed");
358
} else {
359
//no modifiers
360
return;
361
}
362
}
363
}
364
if (h.get("extModifiers").equals(ethalon)) {
365
System.out.println("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
366
throw new RuntimeException("Test failed : Released. extModifiers = "+ h.get("extModifiers") +" instead of : "+ethalon);
367
}
368
}
369
370
public static void checkReleasedModifiersTest(int testModifier, MouseEvent event){
371
int [] curStandardModifiers = getStandardArray(testModifier);
372
int [] curStandardExModifiers = getStandardExArray(testModifier);
373
// int index = (button - 4)*3 + 1;
374
int button = event.getButton();
375
int modifiers = event.getModifiers();
376
int modifiersEx = event.getModifiersEx();
377
int index = (button - 1)*3 + 1;
378
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
379
if (modifiers != curStandardModifiers[index]){
380
if (debug){
381
System.out.println("Test failed : Released. modifiers != modifiersStandard");
382
} else {
383
throw new RuntimeException("Test failed : Released. modifiers != modifiersStandard");
384
}
385
}
386
if (modifiersEx != curStandardExModifiers[index]){
387
if (debug){
388
System.out.println("Test failed : Released. modifiersEx != curStandardExModifiers");
389
} else {
390
throw new RuntimeException("Test failed : Released. modifiersEx != curStandardExModifiers");
391
}
392
}
393
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
394
System.out.println(event.paramString());
395
checkButton(paramStringElements, button);
396
checkModifiers(testModifier, paramStringElements, button);
397
checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
398
}
399
400
public static void checkClickedModifiersTest(int testModifier, MouseEvent event){
401
int [] curStandardModifiers = getStandardArray(testModifier);
402
int [] curStandardExModifiers = getStandardExArray(testModifier);
403
// int index = (button - 4)*3 + 2;
404
int button = event.getButton();
405
int modifiers = event.getModifiers();
406
int modifiersEx = event.getModifiersEx();
407
int index = (button - 1)*3 + 2;
408
dumpValues(button, modifiers, curStandardModifiers[index], modifiersEx, curStandardExModifiers[index]);
409
if (modifiers != curStandardModifiers[index]){
410
if (debug){
411
System.out.println("Test failed : Clicked. modifiers != modifiersStandard");
412
} else {
413
throw new RuntimeException("Test failed : Clicked. modifiers != modifiersStandard");
414
}
415
}
416
if (modifiersEx != curStandardExModifiers[index]){
417
if (debug){
418
System.out.println("Test failed : Clicked. modifiersEx != curStandardExModifiers");
419
} else {
420
throw new RuntimeException("Test failed : Clicked. modifiersEx != curStandardExModifiers");
421
}
422
}
423
HashMap <String, String> paramStringElements = tokenizeParamString(event.paramString());
424
checkButton(paramStringElements, button);
425
checkModifiers(testModifier, paramStringElements, button);
426
checkExtModifiersOnReleaseClick(testModifier, paramStringElements, button);
427
}
428
/*======================================================================*/
429
430
public static HashMap<String, String> tokenizeParamString(String param){
431
HashMap <String, String> params = new HashMap<String, String>();
432
StringTokenizer st = new StringTokenizer(param, ",=");
433
while (st.hasMoreTokens()){
434
String tmp = st.nextToken();
435
// System.out.println("PARSER : "+tmp);
436
if (tmp.equals("button") ||
437
tmp.equals("modifiers") ||
438
tmp.equals("extModifiers")) {
439
params.put(tmp, st.nextToken());
440
}
441
}
442
return params;
443
}
444
445
public static Vector<String> tokenizeModifiers(String modifierList){
446
Vector<String> modifiers = new Vector<String>();
447
StringTokenizer st = new StringTokenizer(modifierList, "+");
448
while (st.hasMoreTokens()){
449
String tmp = st.nextToken();
450
modifiers.addElement(tmp);
451
System.out.println("MODIFIER PARSER : "+tmp);
452
}
453
return modifiers;
454
}
455
456
457
//test BUTTON1, 2 and 3 without any modifiers keys
458
public static void testPlainButtons(){
459
System.out.println("Testing buttons without modifiers.");
460
f.addMouseListener(adapterTest1);
461
for (int button : mouseButtons){
462
robot.mousePress(button);
463
robot.delay(100);
464
robot.mouseRelease(button);
465
}
466
robot.delay(1000);
467
f.removeMouseListener(adapterTest1);
468
}
469
470
//test BUTTON1, 2 and 3 with SHIFT key
471
public static void testButtonsWithShift(){
472
System.out.println("Testing buttons with SHIFT modifier.");
473
f.addMouseListener(adapterTest2);
474
475
for (int button : mouseButtons){
476
robot.keyPress(KeyEvent.VK_SHIFT);
477
robot.mousePress(button);
478
robot.delay(100);
479
robot.mouseRelease(button);
480
robot.keyRelease(KeyEvent.VK_SHIFT);
481
}
482
robot.delay(1000);
483
f.removeMouseListener(adapterTest2);
484
}
485
486
//test BUTTON1, 2 and 3 with CTRL key
487
public static void testButtonsWithControl(){
488
System.out.println("Testing buttons with CONTROL modifier.");
489
f.addMouseListener(adapterTest3);
490
for (int button : mouseButtons){
491
robot.keyPress(KeyEvent.VK_CONTROL);
492
robot.mousePress(button);
493
robot.delay(100);
494
robot.mouseRelease(button);
495
robot.keyRelease(KeyEvent.VK_CONTROL);
496
}
497
robot.delay(1000);
498
f.removeMouseListener(adapterTest3);
499
}
500
501
//test BUTTON1, 2 and 3 with ALT key
502
public static void testButtonsWithAlt(){
503
System.out.println("Testing buttons with ALT modifier.");
504
f.addMouseListener(adapterTest4);
505
for (int button : mouseButtons){
506
robot.keyPress(KeyEvent.VK_ALT);
507
robot.mousePress(button);
508
robot.delay(100);
509
robot.mouseRelease(button);
510
robot.keyRelease(KeyEvent.VK_ALT);
511
}
512
robot.delay(1000);
513
f.removeMouseListener(adapterTest4);
514
}
515
516
public static void initParams(String []s){
517
if (s.length != 3){
518
autorun = true;
519
debug = false;
520
testModifier = NONE;
521
} else {
522
autorun = Boolean.valueOf(s[0]);
523
debug = Boolean.valueOf(s[1]);
524
525
if (s[2].equals("NONE")){
526
testModifier = NONE;
527
}
528
if (s[2].equals("SHIFT")){
529
testModifier = SHIFT;
530
}
531
if (s[2].equals("CTRL")){
532
testModifier = CTRL;
533
}
534
if (s[2].equals("ALT")){
535
testModifier = ALT;
536
}
537
}
538
System.out.println("Autorun : " +autorun);
539
System.out.println("Debug mode : " +debug);
540
System.out.println("Modifier to verify : " + testModifier);
541
}
542
543
public static void dumpValues(int button, int modifiers, int modifiersStandard, int modifiersEx, int modifiersExStandard){
544
System.out.println("Button = "+button + "Modifiers = "+ modifiers + " standard = "+ modifiersStandard);
545
System.out.println(" ModifiersEx = "+ modifiersEx + " standardEx = "+ modifiersExStandard);
546
}
547
548
private static int[] getStandardExArray(int testModifier) {
549
int [] curStandardExModifiers;
550
switch (testModifier){
551
case SHIFT:
552
curStandardExModifiers = modifiersExStandardTestSHIFT;
553
break;
554
case CTRL:
555
curStandardExModifiers = modifiersExStandardTestCTRL;
556
break;
557
case ALT:
558
curStandardExModifiers = modifiersExStandardTestALT;
559
break;
560
default: //NONE by default
561
curStandardExModifiers = modifiersExStandardTestNONE;
562
}
563
return curStandardExModifiers;
564
}
565
566
private static int[] getStandardArray(int testModifier) {
567
int [] curStandardModifiers;
568
switch (testModifier){
569
case SHIFT:
570
curStandardModifiers = modifiersStandardTestSHIFT;
571
break;
572
case CTRL:
573
curStandardModifiers = modifiersStandardTestCTRL;
574
break;
575
case ALT:
576
curStandardModifiers = modifiersStandardTestALT;
577
break;
578
default: //NONE by default
579
curStandardModifiers = modifiersStandardTestNONE;
580
}
581
return curStandardModifiers;
582
}
583
584
}
585
586
587
/* A class that invoke appropriate verification
588
* routine with current modifier.
589
*/
590
class CheckingModifierAdapter extends MouseAdapter{
591
int modifier;
592
public CheckingModifierAdapter(int modifier){
593
this.modifier = modifier;
594
}
595
596
public void mousePressed(MouseEvent e) {
597
System.out.println("PRESSED "+e);
598
if (e.getButton() > MouseEvent.BUTTON3) {
599
System.out.println("Extra button affected. Skip.");
600
} else {
601
MouseModifiersUnitTest_Standard.checkPressedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx(),
602
}
603
}
604
public void mouseReleased(MouseEvent e) {
605
System.out.println("RELEASED "+e);
606
if (e.getButton() > MouseEvent.BUTTON3) {
607
System.out.println("Extra button affected. Skip.");
608
} else {
609
MouseModifiersUnitTest_Standard.checkReleasedModifiersTest(modifier, e); // e.getButton(), e.getModifiers(), e.getModifiersEx()
610
}
611
}
612
public void mouseClicked(MouseEvent e) {
613
System.out.println("CLICKED "+e);
614
if (e.getButton() > MouseEvent.BUTTON3) {
615
System.out.println("Extra button affected. Skip.");
616
} else {
617
MouseModifiersUnitTest_Standard.checkClickedModifiersTest(modifier, e); //e.getButton(), e.getModifiers(), e.getModifiersEx()
618
}
619
}
620
}
621
622
623