8252713: jtreg time out of CtrlASCII.java seems to hang the Xserver.

Reviewed-by: prr
This commit is contained in:
Alexander Zvegintsev 2022-11-22 09:20:46 +00:00
parent 88957a7ce8
commit 6d6046b379
2 changed files with 176 additions and 175 deletions
test/jdk
ProblemList.txt
java/awt/event/KeyEvent/KeyTyped

@ -186,7 +186,6 @@ java/awt/Focus/6981400/Test1.java 8029675 windows-all,macosx-all
java/awt/Focus/6981400/Test3.java 8173264 generic-all
java/awt/event/KeyEvent/ExtendedKeyCode/ExtendedKeyCodeTest.java 8169476 windows-all,macosx-all
java/awt/event/KeyEvent/KeyChar/KeyCharTest.java 8169474,8224055 macosx-all,windows-all
java/awt/event/KeyEvent/KeyTyped/CtrlASCII.java 8252713 linux-all
java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.java 8194947 generic-all
java/awt/Frame/FramesGC/FramesGC.java 8079069 macosx-all

@ -1,5 +1,5 @@
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,13 +25,20 @@
@test
@key headful
@bug 6497426
@summary ests that pressing of Ctrl+ascii mostly fires KEY_TYPED with a Unicode control symbols
@run main CtrlASCII
@summary Tests that pressing of Ctrl+ascii mostly fires KEY_TYPED with a Unicode control symbols
@run main/timeout=600 CtrlASCII
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Point;
import java.awt.Robot;
import java.awt.TextField;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashMap;
//
// In this test, a key listener for KEY_TYPED checks if a character typed has
@ -42,136 +49,135 @@ import java.util.*;
// produce a unicode character, so there will be no KEY_TYPED and no problem.
// Test doesn't try to verify Ctrl+deadkey behavior.
//
public class CtrlASCII extends Frame implements KeyListener
{
public class CtrlASCII extends Frame implements KeyListener {
// Declare things used in the test, like buttons and labels here
static Hashtable<Character, Integer> keycharHash = new Hashtable<Character, Integer>();
static boolean testFailed = false;
//Frame frame;
static final HashMap<Character, Integer> KEYCHAR_MAP = new HashMap<>();
static volatile boolean testFailed = false;
TextField tf;
Robot robot;
static void fillHash( boolean isMSWindows ) {
keycharHash.put( (char)0x20 , KeyEvent.VK_SPACE ); /*32,x20*/ /*' ' */
keycharHash.put( (char)0x21 , KeyEvent.VK_EXCLAMATION_MARK ); /*33,x21*/ /*'!' fr*/
keycharHash.put( (char)0x22 , KeyEvent.VK_QUOTEDBL ); /*34,x22*/ /*'"' fr*/
keycharHash.put( (char)0x23 , KeyEvent.VK_NUMBER_SIGN ); /*35,x23*/ /*'#' de*/
keycharHash.put( (char)0x24 , KeyEvent.VK_DOLLAR ); /*36,x24*/ /*'$', de_CH*/
//keycharHash.put('%', (char)0x25 ); /*37,x25*/ /*no VK, cannot test*/
keycharHash.put( (char)0x26 , KeyEvent.VK_AMPERSAND ); /*38,x26*/ /*'&', fr*/
keycharHash.put( (char)0x27 , KeyEvent.VK_QUOTE ); /*39,x27*/ /*''', fr*/
keycharHash.put( (char)0x28 , KeyEvent.VK_LEFT_PARENTHESIS ); /*40,x28*/ /*'(', fr*/
keycharHash.put( (char)0x29 , KeyEvent.VK_RIGHT_PARENTHESIS ); /*41,x29*/ /*')', fr*/
keycharHash.put( (char)0x2a , KeyEvent.VK_ASTERISK ); /*42,x2a*/ /*'*', fr*/
keycharHash.put( (char)0x2b , KeyEvent.VK_PLUS ); /*43,x2b*/ /*'+', de*/
keycharHash.put( (char)0x2c , KeyEvent.VK_COMMA ); /*44,x2c*/ /*','*/
keycharHash.put( (char)0x2d , KeyEvent.VK_MINUS ); /*45,x2d*/ /*'-'*/
keycharHash.put( (char)0x2e , KeyEvent.VK_PERIOD ); /*46,x2e*/ /*'.'*/
keycharHash.put( (char)0x2f , KeyEvent.VK_SLASH ); /*47,x2f*/ /*'/'*/
keycharHash.put( (char)0x30 , KeyEvent.VK_0 ); /*48,x30*/
keycharHash.put( (char)0x31 , KeyEvent.VK_1 ); /*49,x31*/
keycharHash.put( (char)0x32 , KeyEvent.VK_2 ); /*50,x32*/
keycharHash.put( (char)0x33 , KeyEvent.VK_3 ); /*51,x33*/
keycharHash.put( (char)0x34 , KeyEvent.VK_4 ); /*52,x34*/
keycharHash.put( (char)0x35 , KeyEvent.VK_5 ); /*53,x35*/
keycharHash.put( (char)0x36 , KeyEvent.VK_6 ); /*54,x36*/
keycharHash.put( (char)0x37 , KeyEvent.VK_7 ); /*55,x37*/
keycharHash.put( (char)0x38 , KeyEvent.VK_8 ); /*56,x38*/
keycharHash.put( (char)0x39 , KeyEvent.VK_9 ); /*57,x39*/
keycharHash.put( (char)0x3a , KeyEvent.VK_COLON ); /*58,x3a*/ /*':', fr*/
keycharHash.put( (char)0x3b , KeyEvent.VK_SEMICOLON ); /*59,x3b*/ /*';'*/
keycharHash.put( (char)0x3c , KeyEvent.VK_LESS ); /*60,x3c*/ /*'<' us 102*/
keycharHash.put( (char)0x3d , KeyEvent.VK_EQUALS ); /*61,x3d*/
keycharHash.put( (char)0x3e , KeyEvent.VK_GREATER ); /*62,x3e*/ /*'>' ?????? where???*/
// Javadoc says: "there is no keycode for the question mark because
// there is no keyboard for which it appears on the primary layer."
// Well, it's Lithuanian standard.
//keycharHash.put('?', (char)0x3f ); /*63,x3f*/ /*no VK, cannot test*/
keycharHash.put( (char)0x40 , KeyEvent.VK_AT ); /*64,x40*/ /*'@' ?????? where???*/
keycharHash.put( (char)0x1 , KeyEvent.VK_A ); /*65,x41*/
keycharHash.put( (char)0x2 , KeyEvent.VK_B ); /*66,x42*/
keycharHash.put( (char)0x3 , KeyEvent.VK_C ); /*67,x43*/
keycharHash.put( (char)0x4 , KeyEvent.VK_D ); /*68,x44*/
keycharHash.put( (char)0x5 , KeyEvent.VK_E ); /*69,x45*/
keycharHash.put( (char)0x6 , KeyEvent.VK_F ); /*70,x46*/
keycharHash.put( (char)0x7 , KeyEvent.VK_G ); /*71,x47*/
keycharHash.put( (char)0x8 , KeyEvent.VK_H ); /*72,x48*/
keycharHash.put( (char)0x9 , KeyEvent.VK_I ); /*73,x49*/
keycharHash.put( (char)0xa , KeyEvent.VK_J ); /*74,x4a*/
keycharHash.put( (char)0xb , KeyEvent.VK_K ); /*75,x4b*/
keycharHash.put( (char)0xc , KeyEvent.VK_L ); /*76,x4c*/
keycharHash.put( (char)0xd , KeyEvent.VK_M ); /*77,x4d*/
keycharHash.put( (char)0xe , KeyEvent.VK_N ); /*78,x4e*/
keycharHash.put( (char)0xf , KeyEvent.VK_O ); /*79,x4f*/
keycharHash.put( (char)0x10 , KeyEvent.VK_P ); /*80,x50*/
keycharHash.put( (char)0x11 , KeyEvent.VK_Q ); /*81,x51*/
keycharHash.put( (char)0x12 , KeyEvent.VK_R ); /*82,x52*/
keycharHash.put( (char)0x13 , KeyEvent.VK_S ); /*83,x53*/
keycharHash.put( (char)0x14 , KeyEvent.VK_T ); /*84,x54*/
keycharHash.put( (char)0x15 , KeyEvent.VK_U ); /*85,x55*/
keycharHash.put( (char)0x16 , KeyEvent.VK_V ); /*86,x56*/
keycharHash.put( (char)0x17 , KeyEvent.VK_W ); /*87,x57*/
keycharHash.put( (char)0x18 , KeyEvent.VK_X ); /*88,x58*/
keycharHash.put( (char)0x19 , KeyEvent.VK_Y ); /*89,x59*/
keycharHash.put( (char)0x1a , KeyEvent.VK_Z ); /*90,x5a*/
static void fillHash() {
KEYCHAR_MAP.put((char) 0x20, KeyEvent.VK_SPACE); /*32,x20*/ /*' ' */
KEYCHAR_MAP.put((char) 0x21, KeyEvent.VK_EXCLAMATION_MARK); /*33,x21*/ /*'!' fr*/
KEYCHAR_MAP.put((char) 0x22, KeyEvent.VK_QUOTEDBL); /*34,x22*/ /*'"' fr*/
KEYCHAR_MAP.put((char) 0x23, KeyEvent.VK_NUMBER_SIGN); /*35,x23*/ /*'#' de*/
KEYCHAR_MAP.put((char) 0x24, KeyEvent.VK_DOLLAR); /*36,x24*/ /*'$', de_CH*/
//keycharHash.put('%', (char)0x25 ); /*37,x25*/ /*no VK, cannot test*/
KEYCHAR_MAP.put((char) 0x26, KeyEvent.VK_AMPERSAND); /*38,x26*/ /*'&', fr*/
KEYCHAR_MAP.put((char) 0x27, KeyEvent.VK_QUOTE); /*39,x27*/ /*''', fr*/
KEYCHAR_MAP.put((char) 0x28, KeyEvent.VK_LEFT_PARENTHESIS); /*40,x28*/ /*'(', fr*/
KEYCHAR_MAP.put((char) 0x29, KeyEvent.VK_RIGHT_PARENTHESIS); /*41,x29*/ /*')', fr*/
KEYCHAR_MAP.put((char) 0x2a, KeyEvent.VK_ASTERISK); /*42,x2a*/ /*'*', fr*/
KEYCHAR_MAP.put((char) 0x2b, KeyEvent.VK_PLUS); /*43,x2b*/ /*'+', de*/
KEYCHAR_MAP.put((char) 0x2c, KeyEvent.VK_COMMA); /*44,x2c*/ /*','*/
KEYCHAR_MAP.put((char) 0x2d, KeyEvent.VK_MINUS); /*45,x2d*/ /*'-'*/
KEYCHAR_MAP.put((char) 0x2e, KeyEvent.VK_PERIOD); /*46,x2e*/ /*'.'*/
KEYCHAR_MAP.put((char) 0x2f, KeyEvent.VK_SLASH); /*47,x2f*/ /*'/'*/
KEYCHAR_MAP.put((char) 0x30, KeyEvent.VK_0); /*48,x30*/
KEYCHAR_MAP.put((char) 0x31, KeyEvent.VK_1); /*49,x31*/
KEYCHAR_MAP.put((char) 0x32, KeyEvent.VK_2); /*50,x32*/
KEYCHAR_MAP.put((char) 0x33, KeyEvent.VK_3); /*51,x33*/
KEYCHAR_MAP.put((char) 0x34, KeyEvent.VK_4); /*52,x34*/
KEYCHAR_MAP.put((char) 0x35, KeyEvent.VK_5); /*53,x35*/
KEYCHAR_MAP.put((char) 0x36, KeyEvent.VK_6); /*54,x36*/
KEYCHAR_MAP.put((char) 0x37, KeyEvent.VK_7); /*55,x37*/
KEYCHAR_MAP.put((char) 0x38, KeyEvent.VK_8); /*56,x38*/
KEYCHAR_MAP.put((char) 0x39, KeyEvent.VK_9); /*57,x39*/
KEYCHAR_MAP.put((char) 0x3a, KeyEvent.VK_COLON); /*58,x3a*/ /*':', fr*/
KEYCHAR_MAP.put((char) 0x3b, KeyEvent.VK_SEMICOLON); /*59,x3b*/ /*';'*/
KEYCHAR_MAP.put((char) 0x3c, KeyEvent.VK_LESS); /*60,x3c*/ /*'<' us 102*/
KEYCHAR_MAP.put((char) 0x3d, KeyEvent.VK_EQUALS); /*61,x3d*/
KEYCHAR_MAP.put((char) 0x3e, KeyEvent.VK_GREATER); /*62,x3e*/ /*'>' ?????? where???*/
// Javadoc says: "there is no keycode for the question mark because
// there is no keyboard for which it appears on the primary layer."
// Well, it's Lithuanian standard.
//keycharHash.put('?', (char)0x3f); /*63,x3f*/ /*no VK, cannot test*/
KEYCHAR_MAP.put((char) 0x40, KeyEvent.VK_AT); /*64,x40*/ /*'@' ?????? where???*/
KEYCHAR_MAP.put((char) 0x1, KeyEvent.VK_A); /*65,x41*/
KEYCHAR_MAP.put((char) 0x2, KeyEvent.VK_B); /*66,x42*/
KEYCHAR_MAP.put((char) 0x3, KeyEvent.VK_C); /*67,x43*/
KEYCHAR_MAP.put((char) 0x4, KeyEvent.VK_D); /*68,x44*/
KEYCHAR_MAP.put((char) 0x5, KeyEvent.VK_E); /*69,x45*/
KEYCHAR_MAP.put((char) 0x6, KeyEvent.VK_F); /*70,x46*/
KEYCHAR_MAP.put((char) 0x7, KeyEvent.VK_G); /*71,x47*/
KEYCHAR_MAP.put((char) 0x8, KeyEvent.VK_H); /*72,x48*/
KEYCHAR_MAP.put((char) 0x9, KeyEvent.VK_I); /*73,x49*/
KEYCHAR_MAP.put((char) 0xa, KeyEvent.VK_J); /*74,x4a*/
KEYCHAR_MAP.put((char) 0xb, KeyEvent.VK_K); /*75,x4b*/
KEYCHAR_MAP.put((char) 0xc, KeyEvent.VK_L); /*76,x4c*/
KEYCHAR_MAP.put((char) 0xd, KeyEvent.VK_M); /*77,x4d*/
KEYCHAR_MAP.put((char) 0xe, KeyEvent.VK_N); /*78,x4e*/
KEYCHAR_MAP.put((char) 0xf, KeyEvent.VK_O); /*79,x4f*/
KEYCHAR_MAP.put((char) 0x10, KeyEvent.VK_P); /*80,x50*/
KEYCHAR_MAP.put((char) 0x11, KeyEvent.VK_Q); /*81,x51*/
KEYCHAR_MAP.put((char) 0x12, KeyEvent.VK_R); /*82,x52*/
KEYCHAR_MAP.put((char) 0x13, KeyEvent.VK_S); /*83,x53*/
KEYCHAR_MAP.put((char) 0x14, KeyEvent.VK_T); /*84,x54*/
KEYCHAR_MAP.put((char) 0x15, KeyEvent.VK_U); /*85,x55*/
KEYCHAR_MAP.put((char) 0x16, KeyEvent.VK_V); /*86,x56*/
KEYCHAR_MAP.put((char) 0x17, KeyEvent.VK_W); /*87,x57*/
KEYCHAR_MAP.put((char) 0x18, KeyEvent.VK_X); /*88,x58*/
KEYCHAR_MAP.put((char) 0x19, KeyEvent.VK_Y); /*89,x59*/
KEYCHAR_MAP.put((char) 0x1a, KeyEvent.VK_Z); /*90,x5a*/
KEYCHAR_MAP.put((char) 0x1b, KeyEvent.VK_OPEN_BRACKET); /*91,x5b*/ /*'['*/
KEYCHAR_MAP.put((char) 0x1c, KeyEvent.VK_BACK_SLASH); /*92,x5c*/ /*'\'*/
KEYCHAR_MAP.put((char) 0x1d, KeyEvent.VK_CLOSE_BRACKET); /*93,x5d*/ /*']'*/
KEYCHAR_MAP.put((char) 0x5e, KeyEvent.VK_CIRCUMFLEX); /*94,x5e*/ /*'^' ?? nodead fr, de??*/
KEYCHAR_MAP.put((char) 0x1f, KeyEvent.VK_UNDERSCORE); /*95,x5f*/ /*'_' fr*/
KEYCHAR_MAP.put((char) 0x60, KeyEvent.VK_BACK_QUOTE); /*96,x60*/
keycharHash.put( (char)0x1b , KeyEvent.VK_OPEN_BRACKET ); /*91,x5b*/ /*'['*/
keycharHash.put( (char)0x1c , KeyEvent.VK_BACK_SLASH ); /*92,x5c*/ /*'\'*/
keycharHash.put( (char)0x1d , KeyEvent.VK_CLOSE_BRACKET ); /*93,x5d*/ /*']'*/
keycharHash.put( (char)0x5e , KeyEvent.VK_CIRCUMFLEX ); /*94,x5e*/ /*'^' ?? nodead fr, de??*/
keycharHash.put( (char)0x1f , KeyEvent.VK_UNDERSCORE ); /*95,x5f*/ /*'_' fr*/
keycharHash.put( (char)0x60 , KeyEvent.VK_BACK_QUOTE ); /*96,x60*/
/********* Same as uppercase*/
//keycharHash.put( (char)0x1 , KeyEvent.VK_a );/*97,x61*/
//keycharHash.put( (char)0x2 , KeyEvent.VK_b );/*98,x62*/
//keycharHash.put( (char)0x3 , KeyEvent.VK_c );/*99,x63*/
//keycharHash.put( (char)0x4 , KeyEvent.VK_d );/*100,x64*/
//keycharHash.put( (char)0x5 , KeyEvent.VK_e );/*101,x65*/
//keycharHash.put( (char)0x6 , KeyEvent.VK_f );/*102,x66*/
//keycharHash.put( (char)0x7 , KeyEvent.VK_g );/*103,x67*/
//keycharHash.put( (char)0x8 , KeyEvent.VK_h );/*104,x68*/
//keycharHash.put( (char)0x9 , KeyEvent.VK_i );/*105,x69*/
//keycharHash.put( (char)0xa , KeyEvent.VK_j );/*106,x6a*/
//keycharHash.put( (char)0xb , KeyEvent.VK_k );/*107,x6b*/
//keycharHash.put( (char)0xc , KeyEvent.VK_l );/*108,x6c*/
//keycharHash.put( (char)0xd , KeyEvent.VK_m );/*109,x6d*/
//keycharHash.put( (char)0xe , KeyEvent.VK_n );/*110,x6e*/
//keycharHash.put( (char)0xf , KeyEvent.VK_o );/*111,x6f*/
//keycharHash.put( (char)0x10 , KeyEvent.VK_p );/*112,x70*/
//keycharHash.put( (char)0x11 , KeyEvent.VK_q );/*113,x71*/
//keycharHash.put( (char)0x12 , KeyEvent.VK_r );/*114,x72*/
//keycharHash.put( (char)0x13 , KeyEvent.VK_s );/*115,x73*/
//keycharHash.put( (char)0x14 , KeyEvent.VK_t );/*116,x74*/
//keycharHash.put( (char)0x15 , KeyEvent.VK_u );/*117,x75*/
//keycharHash.put( (char)0x16 , KeyEvent.VK_v );/*118,x76*/
//keycharHash.put( (char)0x17 , KeyEvent.VK_w );/*119,x77*/
//keycharHash.put( (char)0x18 , KeyEvent.VK_x );/*120,x78*/
//keycharHash.put( (char)0x19 , KeyEvent.VK_y );/*121,x79*/
//keycharHash.put( (char)0x1a , KeyEvent.VK_z );/*122,x7a*/
keycharHash.put( (char)0x7b , KeyEvent.VK_BRACELEFT ); /*123,x7b*/ /*'{' la (Latin American)*/
//keycharHash.put( (char)0x1c , KeyEvent.VK_| ); /*124,x7c*/ /* no VK, cannot test*/
keycharHash.put( (char)0x7d , KeyEvent.VK_BRACERIGHT ); /*125,x7d*/ /*'}' la */
//keycharHash.put( (char)0x1e , KeyEvent.VK_~ ); /*126,x7e*/ /* no VK, cannot test*/
//keycharHash.put((char)0x1, KeyEvent.VK_a); /*97,x61*/
//keycharHash.put((char)0x2, KeyEvent.VK_b); /*98,x62*/
//keycharHash.put((char)0x3, KeyEvent.VK_c); /*99,x63*/
//keycharHash.put((char)0x4, KeyEvent.VK_d); /*100,x64*/
//keycharHash.put((char)0x5, KeyEvent.VK_e); /*101,x65*/
//keycharHash.put((char)0x6, KeyEvent.VK_f); /*102,x66*/
//keycharHash.put((char)0x7, KeyEvent.VK_g); /*103,x67*/
//keycharHash.put((char)0x8, KeyEvent.VK_h); /*104,x68*/
//keycharHash.put((char)0x9, KeyEvent.VK_i); /*105,x69*/
//keycharHash.put((char)0xa, KeyEvent.VK_j); /*106,x6a*/
//keycharHash.put((char)0xb, KeyEvent.VK_k); /*107,x6b*/
//keycharHash.put((char)0xc, KeyEvent.VK_l); /*108,x6c*/
//keycharHash.put((char)0xd, KeyEvent.VK_m); /*109,x6d*/
//keycharHash.put((char)0xe, KeyEvent.VK_n); /*110,x6e*/
//keycharHash.put((char)0xf, KeyEvent.VK_o); /*111,x6f*/
//keycharHash.put((char)0x10, KeyEvent.VK_p); /*112,x70*/
//keycharHash.put((char)0x11, KeyEvent.VK_q); /*113,x71*/
//keycharHash.put((char)0x12, KeyEvent.VK_r); /*114,x72*/
//keycharHash.put((char)0x13, KeyEvent.VK_s); /*115,x73*/
//keycharHash.put((char)0x14, KeyEvent.VK_t); /*116,x74*/
//keycharHash.put((char)0x15, KeyEvent.VK_u); /*117,x75*/
//keycharHash.put((char)0x16, KeyEvent.VK_v); /*118,x76*/
//keycharHash.put((char)0x17, KeyEvent.VK_w); /*119,x77*/
//keycharHash.put((char)0x18, KeyEvent.VK_x); /*120,x78*/
//keycharHash.put((char)0x19, KeyEvent.VK_y); /*121,x79*/
//keycharHash.put((char)0x1a, KeyEvent.VK_z); /*122,x7a*/
KEYCHAR_MAP.put((char) 0x7b, KeyEvent.VK_BRACELEFT); /*123,x7b*/ /*'{' la (Latin American)*/
//keycharHash.put(char) 0x1c, KeyEvent.VK_|); /*124,x7c*/ /* no VK, cannot test*/
KEYCHAR_MAP.put((char) 0x7d, KeyEvent.VK_BRACERIGHT); /*125,x7d*/ /*'}' la */
//keycharHash.put((char) 0x1e, KeyEvent.VK_~); /*126,x7e*/ /* no VK, cannot test*/
}
public static void main(String[] args) {
public static void main(String[] args) throws AWTException {
CtrlASCII test = new CtrlASCII();
test.init();
test.start();
}
public void init()
{
fillHash( false );
this.setLayout (new BorderLayout ());
public void init() throws AWTException {
fillHash();
}//End init()
robot = new Robot();
robot.setAutoWaitForIdle(true);
robot.setAutoDelay(100);
public void start ()
{
setSize(400,300);
setLayout(new BorderLayout());
setSize(400, 300);
setLocationRelativeTo(null);
setVisible(true);
@ -181,87 +187,83 @@ public class CtrlASCII extends Frame implements KeyListener
tf.addKeyListener(this);
validate();
robot.waitForIdle();
robot.delay(1000);
this.requestFocus();
tf.requestFocusInWindow();
robot.waitForIdle();
}//End init()
public void start() {
try {
robot = new Robot();
robot.setAutoWaitForIdle(true);
robot.setAutoDelay(100);
robot.waitForIdle();
// wait for focus, etc. (Hack.)
robot.delay(2000);
this.requestFocus();
tf.requestFocusInWindow();
Point pt = getLocationOnScreen();
robot.mouseMove( pt.x+100, pt.y+100 );
robot.delay(2000);
robot.mousePress( InputEvent.BUTTON1_MASK );
robot.mouseRelease( InputEvent.BUTTON1_MASK );
Enumeration<Integer> enuElem = keycharHash.elements();
robot.mouseMove(pt.x + 100, pt.y + 100);
robot.delay(1000);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
KEYCHAR_MAP.forEach((k, v) -> punchCtrlKey(v));
int kc;
while( enuElem.hasMoreElements()) {
kc = enuElem.nextElement();
punchCtrlKey( robot, kc );
}
robot.delay(500);
} catch (Exception e) {
throw new RuntimeException("The test was not completed.\n\n" + e);
} finally {
dispose();
}
if( testFailed ) {
if (testFailed) {
throw new RuntimeException("The test failed.\n\n");
}
System.out.println("Success\n");
}// start()
public void punchCtrlKey( Robot ro, int keyCode ) {
ro.keyPress(KeyEvent.VK_CONTROL);
public void punchCtrlKey(int keyCode) {
try {
ro.keyPress(keyCode);
ro.keyRelease(keyCode);
}catch(IllegalArgumentException iae) {
System.err.println("skip probably invalid keyCode "+keyCode);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(keyCode);
} catch (IllegalArgumentException iae) {
System.err.println("skip probably invalid keyCode " + keyCode);
} finally {
try {
robot.keyRelease(keyCode);
} catch (IllegalArgumentException iae) {
System.err.println("skip probably invalid keyCode " + keyCode);
}
robot.keyRelease(KeyEvent.VK_CONTROL);
}
ro.keyRelease(KeyEvent.VK_CONTROL);
ro.delay(200);
robot.delay(200);
}
public void keyPressed(KeyEvent evt)
{
public void keyPressed(KeyEvent evt) {
//printKey(evt);
}
public void keyTyped(KeyEvent evt)
{
public void keyTyped(KeyEvent evt) {
printKey(evt);
char keych = evt.getKeyChar();
if( !keycharHash.containsKey( keych ) ) {
System.out.println("Unexpected keychar: "+keych);
System.out.println("Unexpected keychar: "+keych);
if (!KEYCHAR_MAP.containsKey(keych)) {
System.out.println("Unexpected keychar: " + keych);
testFailed = true;
}
}
public void keyReleased(KeyEvent evt)
{
public void keyReleased(KeyEvent evt) {
//printKey(evt);
}
protected void printKey(KeyEvent evt)
{
switch(evt.getID())
{
case KeyEvent.KEY_TYPED:
case KeyEvent.KEY_PRESSED:
case KeyEvent.KEY_RELEASED:
break;
default:
System.out.println("Other Event ");
System.out.println("Other Event ");
return;
protected void printKey(KeyEvent evt) {
switch (evt.getID()) {
case KeyEvent.KEY_TYPED:
case KeyEvent.KEY_PRESSED:
case KeyEvent.KEY_RELEASED:
break;
default:
System.out.println("Other Event ");
return;
}
System.out.print(" 0x"+ Integer.toHexString(evt.getKeyChar()));
System.out.println (" 0x"+ Integer.toHexString(evt.getKeyChar()));
System.out.println(" 0x" + Integer.toHexString(evt.getKeyChar()));
}
}// class CtrlASCII