|
33 | 33 |
|
34 | 34 | import static org.junit.Assert.*;
|
35 | 35 |
|
| 36 | +import javafx.beans.property.SimpleStringProperty; |
| 37 | +import javafx.beans.property.StringProperty; |
36 | 38 | import javafx.collections.FXCollections;
|
37 | 39 | import javafx.scene.Node;
|
38 | 40 | import javafx.scene.Scene;
|
39 | 41 | import javafx.scene.control.ChoiceBox;
|
| 42 | +import javafx.scene.control.ChoiceBoxShim; |
40 | 43 | import javafx.scene.control.ContextMenu;
|
41 | 44 | import javafx.scene.control.Control;
|
42 | 45 | import javafx.scene.control.MenuItem;
|
@@ -314,6 +317,41 @@ public void testSyncedClearSelectionUncontained() {
|
314 | 317 | assertEquals(uncontained, box.getValue());
|
315 | 318 | }
|
316 | 319 |
|
| 320 | + //------------- tests for JDK-8242001 |
| 321 | + |
| 322 | + /** |
| 323 | + * Testing JDK-8242001: box value not updated on replacing selection model. |
| 324 | + * |
| 325 | + * Happens if replacing.selectedItem == null |
| 326 | + * |
| 327 | + */ |
| 328 | + @Test |
| 329 | + public void testSyncedContainedValueReplaceSMEmpty() { |
| 330 | + box.setValue(box.getItems().get(1)); |
| 331 | + SingleSelectionModel<String> replaceSM = ChoiceBoxShim.get_ChoiceBoxSelectionModel(box); |
| 332 | + assertNull(replaceSM.getSelectedItem()); |
| 333 | + box.setSelectionModel(replaceSM); |
| 334 | + assertEquals(replaceSM.getSelectedItem(), box.getValue()); |
| 335 | + } |
| 336 | + |
| 337 | + @Test |
| 338 | + public void testSyncedUncontainedValueReplaceSMEmpty() { |
| 339 | + box.setValue(uncontained); |
| 340 | + SingleSelectionModel<String> replaceSM = ChoiceBoxShim.get_ChoiceBoxSelectionModel(box); |
| 341 | + assertNull(replaceSM.getSelectedItem()); |
| 342 | + box.setSelectionModel(replaceSM); |
| 343 | + assertEquals(replaceSM.getSelectedItem(), box.getValue()); |
| 344 | + } |
| 345 | + |
| 346 | + @Test |
| 347 | + public void testSyncedBoundValueReplaceSMEmpty() { |
| 348 | + StringProperty valueSource = new SimpleStringProperty("stickyValue"); |
| 349 | + box.valueProperty().bind(valueSource); |
| 350 | + SingleSelectionModel<String> replaceSM = ChoiceBoxShim.get_ChoiceBoxSelectionModel(box); |
| 351 | + assertNull(replaceSM.getSelectedItem()); |
| 352 | + box.setSelectionModel(replaceSM); |
| 353 | + assertEquals(valueSource.get(), box.getValue()); |
| 354 | + } |
317 | 355 |
|
318 | 356 | //----------- setup and sanity test for initial state
|
319 | 357 |
|
|
0 commit comments