RFR: 8333403: Write a test to check various components events are triggered properly [v9]
Alexey Ivanov
aivanov at openjdk.org
Tue Sep 17 17:09:16 UTC 2024
On Tue, 17 Sep 2024 16:19:27 GMT, Ravi Gupta <rgupta at openjdk.org> wrote:
>> This testcase checks for the following assertions for Component events:
>>
>> 1. When components are resized, moved, hidden and shown the respective events are triggered.
>> 2. When the components are hidden/disabled also,the component events like resized/moved are triggered.
>> 3. When a hidden component is hidden again, or a visible component is shown again, the events should not be fired.
>> 4. When a window is minimized/restored then hidden and shown component events should be triggered.
>>
>> Testing:
>> Tested using Mach5(20 times per platform) in macos,linux and windows and got all pass.
>
> Ravi Gupta has updated the pull request incrementally with one additional commit since the last revision:
>
> 8333403: Whitespace Fixed
I am still for moving the test into `java/awt/Component` folder.
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 50:
> 48: * @bug 8333403
> 49: * @summary Test performs various operations to check components events are triggered properly.
> 50: * @run main ComponentEventTest
Add the library and build tags to use the `Platform` class.
Suggestion:
* @summary Test performs various operations to check components events are triggered properly.
* @library /test/lib
* @build jdk.test.lib.Platform
* @run main ComponentEventTest
And don't forget to add `jdk.test.lib.Platform` to the list of imports.
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 149:
> 147: private static void doTest()
> 148: throws InvocationTargetException, InterruptedException {
> 149: // Click on the Frame to ensure its gain Focus
Suggestion:
// Click the frame to ensure it gains focus
I see no reason why you capitalise “frame” and “focus”.
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 161:
> 159: robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
> 160:
> 161: robot.delay(DELAY);
Does it make sense to move this part into a new method `clickFrame`?
Does anyone else have any opinions on this?
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 171:
> 169: robot.delay(DELAY);
> 170:
> 171: System.out.println("Iconify frame");
Similarly, iconify and deiconify could be moved into a separate method. Shorter, logically complete pieces improve the code quality and the overall readability of the code.
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 196:
> 194: * the events from the native system.
> 195: * Please check the JDK-6754618
> 196: */
Suggestion:
/*
* Because of the different behavior between MS Windows and other OS,
* we receive native events WM_SIZE and WM_MOVE on Windows
* when the frame state changes from iconified to normal.
* AWT sends these events to components when it receives
* the events from the native system.
* See JDK-6754618 for more information.
*/
test/jdk/java/awt/ComponentEvent/ComponentEventTest.java line 208:
> 206: throw new RuntimeException(
> 207: "ComponentEvent triggered when frame set to normal");
> 208: }
I suggest using the `Platform` class to determine whether the test runs on Windows or not and splitting the common condition and platform-dependent conditions:
if (componentShown || componentHidden) {
throw new RuntimeException(
"FAIL: componentShown or componentHidden triggered "
+ "when frame set to normal");
}
if (Platform.isWindows() && (!componentMoved || !componentResized)) {
throw new RuntimeException(
"FAIL: componentMoved or componentResized wasn't triggered "
+ "when frame set to normal");
}
if (!Platform.isWindows() && (componentMoved || componentResized)) {
throw new RuntimeException(
"FAIL: componentMoved or componentResized triggered "
+ "when frame set to normal");
}
This allows you to report a clearer error message.
-------------
Changes requested by aivanov (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/19521#pullrequestreview-2310234320
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763592072
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763532753
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763582314
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763583953
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763545672
PR Review Comment: https://git.openjdk.org/jdk/pull/19521#discussion_r1763563500
More information about the client-libs-dev
mailing list