RFR: 8292353: TableRow vs. TreeTableRow: inconsistent visuals in cell selection mode [v12]
Kevin Rushforth
kcr at openjdk.org
Wed Sep 28 17:07:42 UTC 2022
On Tue, 20 Sep 2022 19:06:19 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> The issue is caused by TreeTableRow incorrectly selected when cell selection mode is enabled.
>>
>> Changes:
>> - modified TreeTableRow.updateSelection()
>
> Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision:
>
> 8292353: review comments
The fix looks good.
As for the tests, I somewhat agree with the comments left by @kleopatra, especially the comment about the suitability of the tests in `TreeAndTableViewTest`. Having said that, they aren't harmful, so I will leave it up to you as to whether to remove that test class or leave it in.
I left a few specific comments on the tests inline. You can either update this PR (probably best) or file a follow-up test bug, which can be done during an upcoming test sprint.
modules/javafx.controls/src/test/java/test/javafx/scene/control/ControlUtils.java line 55:
> 53: * Miscellaneous convenience methods to support javafx.controls tests.
> 54: */
> 55: public class ControlUtils {
Minor: You might consider adding a private no-arg constructor to highlight the fact that it is a collection of static utility methods.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 28:
> 26:
> 27: import static org.junit.jupiter.api.Assertions.assertFalse;
> 28: import static org.junit.jupiter.api.Assertions.assertTrue;
Best not to mix JUnit4 and JUnit5 methods in the same test class. So I recommend changing all of the `org.junit.jupiter.api.Assertions` imports their JUnit4 equivalents in the modified and added tests.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 54:
> 52: }
> 53:
> 54: /** TableView with cell selection enabled should not select TreeTableRows */
Typo: should be `TableRows`
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 56:
> 54: /** TableView with cell selection enabled should not select TreeTableRows */
> 55: @Test
> 56: public void test_TableView_jdk_8292353_select_all() {
Minor: I recommend removing `jdk_8292353` from the name of the tests, as we no longer follow that pattern. Instead, you can add the bug ID in the method comment, if you like.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 81:
> 79: sm.select(0, col0);
> 80: sm.select(0, col1);
> 81: sm.select(0, col2);
In addition to this test method, which verifies that selecting all columns individually doesn't select the row when in cell selection mode, I recommend adding another test method that selects all of them as a group using `sm.select(0, null)`.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 89:
> 87: }
> 88:
> 89: /** TableView with cell selection enabled should not select TreeTableRows */
Typo: should be "TableRows"
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewRowTest.java line 120:
> 118: assertFalse(row.isSelected());
> 119: }
> 120: }
Unless you are certain that they are covered elsewhere (not counting anything in `TreeAndTableViewTest`), having similar test methods to the above with cell selection disabled would be useful.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeAndTableViewTest.java line 29:
> 27: import static org.junit.jupiter.api.Assertions.assertEquals;
> 28: import static org.junit.jupiter.api.Assertions.assertFalse;
> 29: import static org.junit.jupiter.api.Assertions.assertTrue;
Replace with JUnit4 equivalents.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeTableRowTest.java line 32:
> 30: import static org.junit.Assert.assertSame;
> 31: import static org.junit.jupiter.api.Assertions.assertFalse;
> 32: import static org.junit.jupiter.api.Assertions.assertTrue;
Replace with JUnit4 equivalents.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeTableRowTest.java line 840:
> 838: /** TreeTableView with cell selection enabled should not select TreeTableRows */
> 839: @Test
> 840: public void test_TreeTableView_jdk_8292353_select_all() {
Ditto the comments I made in `TableViewRowTest` about the test method names and the need for additional test methods.
-------------
PR: https://git.openjdk.org/jfx/pull/875
More information about the openjfx-dev
mailing list