File: CharUndefinedTest.java

package info (click to toggle)
openjdk-25 25.0.1%2B8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 825,408 kB
  • sloc: java: 5,585,680; cpp: 1,333,948; xml: 1,321,242; ansic: 488,034; asm: 404,003; objc: 21,088; sh: 15,106; javascript: 13,265; python: 8,319; makefile: 2,518; perl: 357; awk: 351; pascal: 103; exp: 83; sed: 72; jsp: 24
file content (95 lines) | stat: -rw-r--r-- 3,772 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
 * Copyright (c) 1999, 2025, 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
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code 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
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * @test
 * @bug 4115484 4164672 4167893
 * @summary Ensures that KeyEvent has right keyChar for modifier and action keys.
 * @library /java/awt/regtesthelpers
 * @build PassFailJFrame
 * @run main/manual CharUndefinedTest
 */

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.lang.reflect.InvocationTargetException;

public class CharUndefinedTest extends Frame implements KeyListener {

    static String INSTRUCTIONS = """
            Click on the text field inside the window named "Check KeyChar values".
            Of any of the keys mentioned in this list that exist on your keyboard
            press each of the listed keys once and also press them in two-key combinations such as
            Control-Shift or Alt-Control.
            The list of keys is: "Control, Shift, Meta, Alt, Command, Option".
            After that press all function keys from F1 to F12 once,
            Insert, Home, End, PageUp, PageDown and four arrow keys.
            Check the log area below. If there are no messages starting with word "ERROR"
            press "Pass" otherwise press "Fail".
            """;

    public CharUndefinedTest() {
        super("Check KeyChar values");
        setLayout(new BorderLayout());
        TextField tf = new TextField(30);
        tf.addKeyListener(this);
        add(tf, BorderLayout.CENTER);
        pack();
        tf.requestFocus();
    }

    public void keyPressed(KeyEvent e) {
        if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) {
            PassFailJFrame.log("ERROR: KeyPressed: keyChar = " + e.getKeyChar() +
                    " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode()));
        }
    }

    public void keyTyped(KeyEvent e) {
        if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) {
            PassFailJFrame.log("ERROR: KeyTyped: keyChar = " + e.getKeyChar() +
                    " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode()));
        }
    }

    public void keyReleased(KeyEvent e) {
        if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED) {
            PassFailJFrame.log("ERROR: KeyReleased: keyChar = " + e.getKeyChar() +
                    " keyCode = " + e.getKeyCode() + " " + e.getKeyText(e.getKeyCode()));
        }
    }

    public static void main(String[] args) throws InterruptedException,
            InvocationTargetException {
        PassFailJFrame.builder()
                .instructions(INSTRUCTIONS)
                .columns(45)
                .logArea(10)
                .testUI(CharUndefinedTest::new)
                .build()
                .awaitAndCheck();
    }
}