RFR: 8296275: Write a test to verify setAccelerator method of JMenuItem [v5]

Alexey Ivanov aivanov at openjdk.org
Fri Nov 18 21:16:23 UTC 2022


On Fri, 18 Nov 2022 19:21:52 GMT, Naveen Narayanan <duke at openjdk.org> wrote:

>> This testcase will
>> 1) Verify setAccelerator method of JMenuitem.
>> 2) Check that the selection of a menu item in the menu bar will generate action by a key combination of META+M.
>> 
>> Testing:
>> Tested using Mach5(20 times per platform) in Mac OS, Linux and Windows and got all pass.
>
> Naveen Narayanan has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8296275: Review comments fixed.

Since the test has nothing to do with `Desktop` class it should be moved to `JMenuItem` folder because it tests functionality of `JMenuItem`.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 24:

> 22: 
> 23: import java.awt.Desktop;
> 24: import java.awt.Desktop.Action;

The unused imports are to be removed.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 51:

> 49:     private static JFrame frame;
> 50:     private final static CountDownLatch actionPerformLatch =
> 51:         new CountDownLatch(1);

Suggestion:

    private static final CountDownLatch actionPerformLatch =
        new CountDownLatch(1);

Please used “blessed” modifier order.

I see no reason to wrap the line, it's 84 chars long, which is acceptable to me. If you like, you can rename it to `actionLatch` so that it fits into 80 column limit.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 63:

> 61: 
> 62:         menuItem.setAccelerator(
> 63:             KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.META_MASK));

Suggestion:

        menuItem.setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.META_DOWN_MASK));


The modifiers come from `InputEvent`, not `ActionEvent`.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 78:

> 76:     }
> 77: 
> 78:     public static void main(String args[]) throws Exception {

Suggestion:

    public static void main(String[] args) throws Exception {


Please use Java-style array declaration.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 81:

> 79:         try {
> 80:             SwingUtilities
> 81:                 .invokeAndWait(JMenuItemSetAcceleratorTest::createAndShow);

I suggest not to wrap the line.

No, it doesn't fit 80 column, yet wrapping creates more visual noise.

If you like, you can statically import `invokeAndWait`. I'm everyone would understand where it comes from without `SwingUtilities.` prefix. However, keeping the class name makes it clear.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 98:

> 96:             }
> 97:             System.out
> 98:                 .println("Test passed, received action event on menu item.");

I'd rather wrap the string argument than the call. In this case, I wouldn't wrap it: the line takes 84 columns.

test/jdk/java/awt/Desktop/JMenuItemSetAcceleratorTest.java line 100:

> 98:                 .println("Test passed, received action event on menu item.");
> 99:         } finally {
> 100:             EventQueue.invokeAndWait(JMenuItemSetAcceleratorTest::disposeFrame);

Why not `SwingUtilities`?

-------------

Changes requested by aivanov (Reviewer).

PR: https://git.openjdk.org/jdk/pull/11035



More information about the client-libs-dev mailing list