RFR: 8314906: [testbug] Create behavior tests for text input controls [v5]

Andy Goryachev angorya at openjdk.org
Tue Sep 19 21:57:44 UTC 2023


On Tue, 19 Sep 2023 19:50:25 GMT, Martin Fox <duke at openjdk.org> wrote:

>> You could try this code (using this PR's code):
>> 
>> 
>> public class KeyboardLayoutTest extends TextInputBehaviorRobotTest<TextArea> {
>> 
>>     public KeyboardLayoutTest() {
>>         super(new TextArea());
>>     }
>> 
>>     @BeforeEach
>>     @Override
>>     public void beforeEach() {
>>         super.beforeEach();
>>         control.setWrapText(true);
>>     }
>> 
>>     @Test
>>     public void testTyping() throws Exception {
>>         KeyCode[] codes = {
>>             KeyCode.A
>>         };
>> 
>>         execute(
>>             exe(() -> {
>>                 control.addEventFilter(KeyEvent.ANY, (ev) -> {
>>                     System.out.println(ev);
>>                     ev.consume();
>>                 });
>>             })
>>         );
>> 
>>         for(KeyCode cd: codes) {
>>             Util.runAndWait(() -> {
>>                 robot.keyPress(cd);
>>                 robot.keyRelease(cd);
>>             });
>>         }
>>     }
>> }
>
> I tried your test code and couldn't reproduce the problem. Both U.S. English and French layouts gave me the expected result (an 'a' character). I also tried a Russian keyboard just to verify that it would generate a Cyrillic character which it did. I'm running the tests against JavaFX built using the sources in your pull request.
> 
> French
> 
> 
> KeyEvent [source = TextArea at 7237703[styleClass=text-input text-area], target = TextArea at 7237703[styleClass=text-input text-area], eventType = KEY_PRESSED, consumed = false, character = ?, text = a, code = A]
> KeyEvent [source = TextArea at 7237703[styleClass=text-input text-area], target = TextArea at 7237703[styleClass=text-input text-area], eventType = KEY_TYPED, consumed = false, character = a, text = , code = UNDEFINED]
> KeyEvent [source = TextArea at 7237703[styleClass=text-input text-area], target = TextArea at 7237703[styleClass=text-input text-area], eventType = KEY_RELEASED, consumed = false, character = ?, text = a, code = A]
> 
> 
> U.S. English
> 
> 
> KeyEvent [source = TextArea at 73459ba5[styleClass=text-input text-area], target = TextArea at 73459ba5[styleClass=text-input text-area], eventType = KEY_PRESSED, consumed = false, character = ?, text = a, code = A]
> KeyEvent [source = TextArea at 73459ba5[styleClass=text-input text-area], target = TextArea at 73459ba5[styleClass=text-input text-area], eventType = KEY_TYPED, consumed = false, character = a, text = , code = UNDEFINED]
> KeyEvent [source = TextArea at 73459ba5[styleClass=text-input text-area], target = TextArea at 73459ba5[styleClass=text-input text-area], eventType = KEY_RELEASED, consumed = false, character = ?, text = a, code = A]

Thank you for your help!  I can confirm that the latest code does indeed generate the right key event.

I suspect there was something in my setup that got corrupted - I had to install the latest eclipse, found out it's pretty much unusable due to https://github.com/eclipse-jdt/eclipse.jdt.debug/issues/309 , had to revert back to 2023-06 just to discover that my macOS happily suggested that 'your application is damaged and can't be opened' and do I want to move it to Trash?  So after some xattr'ing, restoring proxy settings, etc., etc. I am back online and the issue is gone.

I did remove the offending characters and modified the tests, so thank you once again - your help was invaluable.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1221#discussion_r1330746672


More information about the openjfx-dev mailing list