RFR: 8335547: Support multi-line prompt text for TextArea [v4]
Ziad El Midaoui
zelmidaoui at openjdk.org
Tue Mar 25 22:53:55 UTC 2025
On Fri, 14 Mar 2025 16:27:09 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> With the new approach the `promptText` property is accepting any value so it's expected to have prompt text with Linebreaks for `TextField` and `PasswordField`, is this the test that I have to keep ?
>>
>> Else to have a test that uses `stage` in `TextInputControlTest` we will have to check for the Class type in many cases since `TextInputSkinShim::getPromptNode` have two overloaded methods for `TextArea` and `TextField`
>> It will look like this in the test :
>>
>>
>> SkinBase<?> skin;
>> if (type.equals(TextField.class)) {
>> textInput = new TextField();
>> skin = new TextFieldSkin((TextField) textInput);
>> } else if (type.equals(PasswordField.class)) {
>> textInput = new PasswordField();
>> skin = new TextFieldSkin((TextField) textInput);
>> } else if (type.equals(TextArea.class)) {
>> textInput = new TextArea();
>> skin = new TextAreaSkin((TextArea) textInput);
>> }
>>
>> //test logic
>>
>> if (type.equals(TextField.class) || type.equals(PasswordField.class)) {
>> promptNode = TextInputSkinShim.getPromptNode((TextField) textInput);
>> } else {
>> promptNode = TextInputSkinShim.getPromptNode((TextArea) textInput);
>> }
>
> If the code gets more complicated it might be better to use your initial approach and move the tests into separate classes (but remember the PasswordField lost its test cases - this might be ok since the methods and the logic being tested is identical between `TextField` and `PasswordField`).
>
> Another option, for the sake of discussion, is to use a more complex parameter instead of simple `Class` for the parameterized test. Take a look at the `LabelSkinCreationTest` - there the parameterized test iterates a list of `Parameters` which packs more data. So you could, for example, supply more arguments to each test: the skin class, the getter, a flag that indicates whether the stage is needed, the expected string.
>
> What do you think?
I guess we will keep it like this as you said since tested is identical between TextField and PasswordField
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1716#discussion_r2013039465
More information about the openjfx-dev
mailing list