< prev index next >

modules/controls/src/test/java/javafx/scene/control/TreeTableViewTest.java

Print this page
rev 8906 : RT-46083: TimelineClipCore exceptions handling improvent


  66 import javafx.scene.Group;
  67 import javafx.scene.Node;
  68 import javafx.scene.Scene;
  69 import javafx.scene.control.TreeTableView.TreeTableViewFocusModel;
  70 import javafx.scene.control.cell.*;
  71 import javafx.scene.image.ImageView;
  72 import javafx.scene.input.KeyCode;
  73 import javafx.scene.layout.StackPane;
  74 import javafx.scene.layout.VBox;
  75 import javafx.scene.paint.Color;
  76 import javafx.scene.shape.Circle;
  77 import javafx.scene.shape.Rectangle;
  78 import javafx.stage.Stage;
  79 import javafx.util.Callback;
  80 
  81 import org.junit.Before;
  82 import org.junit.Ignore;
  83 import org.junit.Test;
  84 
  85 import com.sun.javafx.scene.control.TableColumnComparatorBase.TreeTableColumnComparator;

  86 import com.sun.javafx.scene.control.infrastructure.StageLoader;
  87 import com.sun.javafx.scene.control.infrastructure.VirtualFlowTestUtils;
  88 import com.sun.javafx.scene.control.skin.VirtualScrollBar;
  89 import com.sun.javafx.scene.control.test.Person;
  90 import com.sun.javafx.scene.control.test.RT_22463_Person;
  91 import com.sun.javafx.tk.Toolkit;
  92 
  93 public class TreeTableViewTest {
  94     private TreeTableView<String> treeTableView;
  95     private TreeTableView.TreeTableViewSelectionModel sm;
  96     private TreeTableViewFocusModel<String> fm;
  97     
  98     
  99     // sample data #1
 100     private TreeItem<String> root;
 101     private TreeItem<String> child1;
 102     private TreeItem<String> child2;
 103     private TreeItem<String> child3;
 104     
 105     // sample data #1


3599         assertEquals(1, rt_37395_index_permutationCount);
3600         assertEquals(0, rt_37395_item_removeCount);
3601         assertEquals(1, rt_37395_item_addCount);
3602         assertEquals(0, rt_37395_item_permutationCount);
3603 
3604         // step three: collapse item 'two'
3605         // Same argument as in step two above: no addition or removal, just a
3606         // permutation on the index
3607         two.setExpanded(false);
3608         assertEquals(0, rt_37395_index_removeCount);
3609         assertEquals(1, rt_37395_index_addCount);
3610         assertEquals(2, rt_37395_index_permutationCount);
3611         assertEquals(0, rt_37395_item_removeCount);
3612         assertEquals(1, rt_37395_item_addCount);
3613         assertEquals(0, rt_37395_item_permutationCount);
3614 
3615         sl.dispose();
3616     }
3617 
3618     @Test public void test_rt_37429() {
3619         // get the current exception handler before replacing with our own,
3620         // as ListListenerHelp intercepts the exception otherwise
3621         final Thread.UncaughtExceptionHandler exceptionHandler = Thread.currentThread().getUncaughtExceptionHandler();
3622         Thread.currentThread().setUncaughtExceptionHandler((t, e) -> {
3623             e.printStackTrace();
3624             fail("We don't expect any exceptions in this test!");
3625         });
3626 
3627         // table items - 3 items, 2nd item has 2 children
3628         TreeItem<String> root = new TreeItem<>();
3629 
3630         TreeItem<String> two = new TreeItem<>("two");
3631         two.getChildren().add(new TreeItem<>("childOne"));
3632         two.getChildren().add(new TreeItem<>("childTwo"));
3633         two.setExpanded(true);
3634 
3635         root.getChildren().add(new TreeItem<>("one"));
3636         root.getChildren().add(two);
3637         root.getChildren().add(new TreeItem<>("three"));
3638 
3639         // table columns - 1 column; name
3640         TreeTableColumn<String, String> nameColumn = new TreeTableColumn<>("name");
3641         nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue().getValue()));
3642         nameColumn.setPrefWidth(200);
3643 
3644         // table
3645         TreeTableView<String> table = new TreeTableView<>();
3646         table.setShowRoot(false);
3647         table.setRoot(root);
3648         table.getColumns().addAll(nameColumn);
3649 
3650         table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<TreeItem<String>>) c -> {
3651             while (c.next()) {
3652                 if(c.wasRemoved()) {
3653                     // The removed list of items must be iterated or the AIOOBE will
3654                     // not be thrown when getAddedSubList is called.
3655                     c.getRemoved().forEach(item -> {});
3656                 }
3657 
3658                 if (c.wasAdded()) {
3659                     c.getAddedSubList();
3660                 }
3661             }
3662         });
3663 

3664         StageLoader sl = new StageLoader(table);
3665 

3666         table.getSelectionModel().select(0);
3667         table.getSortOrder().add(nameColumn);
3668 
3669         sl.dispose();
3670 
3671         // reset the exception handler
3672         Thread.currentThread().setUncaughtExceptionHandler(exceptionHandler);
3673     }
3674 
3675     private int rt_37429_items_change_count = 0;
3676     private int rt_37429_cells_change_count = 0;
3677     @Test public void test_rt_37429_sortEventsShouldNotFireExtraChangeEvents() {
3678         // table items - 3 items, 2nd item has 2 children
3679         TreeItem<String> root = new TreeItem<>();
3680 
3681         root.getChildren().add(new TreeItem<>("a"));
3682         root.getChildren().add(new TreeItem<>("c"));
3683         root.getChildren().add(new TreeItem<>("b"));
3684 
3685         // table columns - 1 column; name
3686         TreeTableColumn<String, String> nameColumn = new TreeTableColumn<>("name");
3687         nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue().getValue()));
3688         nameColumn.setPrefWidth(200);
3689 
3690         // table
3691         TreeTableView<String> table = new TreeTableView<>();
3692         table.setShowRoot(false);




  66 import javafx.scene.Group;
  67 import javafx.scene.Node;
  68 import javafx.scene.Scene;
  69 import javafx.scene.control.TreeTableView.TreeTableViewFocusModel;
  70 import javafx.scene.control.cell.*;
  71 import javafx.scene.image.ImageView;
  72 import javafx.scene.input.KeyCode;
  73 import javafx.scene.layout.StackPane;
  74 import javafx.scene.layout.VBox;
  75 import javafx.scene.paint.Color;
  76 import javafx.scene.shape.Circle;
  77 import javafx.scene.shape.Rectangle;
  78 import javafx.stage.Stage;
  79 import javafx.util.Callback;
  80 
  81 import org.junit.Before;
  82 import org.junit.Ignore;
  83 import org.junit.Test;
  84 
  85 import com.sun.javafx.scene.control.TableColumnComparatorBase.TreeTableColumnComparator;
  86 import com.sun.javafx.scene.control.infrastructure.ControlTestUtils;
  87 import com.sun.javafx.scene.control.infrastructure.StageLoader;
  88 import com.sun.javafx.scene.control.infrastructure.VirtualFlowTestUtils;
  89 import com.sun.javafx.scene.control.skin.VirtualScrollBar;
  90 import com.sun.javafx.scene.control.test.Person;
  91 import com.sun.javafx.scene.control.test.RT_22463_Person;
  92 import com.sun.javafx.tk.Toolkit;
  93 
  94 public class TreeTableViewTest {
  95     private TreeTableView<String> treeTableView;
  96     private TreeTableView.TreeTableViewSelectionModel sm;
  97     private TreeTableViewFocusModel<String> fm;
  98     
  99     
 100     // sample data #1
 101     private TreeItem<String> root;
 102     private TreeItem<String> child1;
 103     private TreeItem<String> child2;
 104     private TreeItem<String> child3;
 105     
 106     // sample data #1


3600         assertEquals(1, rt_37395_index_permutationCount);
3601         assertEquals(0, rt_37395_item_removeCount);
3602         assertEquals(1, rt_37395_item_addCount);
3603         assertEquals(0, rt_37395_item_permutationCount);
3604 
3605         // step three: collapse item 'two'
3606         // Same argument as in step two above: no addition or removal, just a
3607         // permutation on the index
3608         two.setExpanded(false);
3609         assertEquals(0, rt_37395_index_removeCount);
3610         assertEquals(1, rt_37395_index_addCount);
3611         assertEquals(2, rt_37395_index_permutationCount);
3612         assertEquals(0, rt_37395_item_removeCount);
3613         assertEquals(1, rt_37395_item_addCount);
3614         assertEquals(0, rt_37395_item_permutationCount);
3615 
3616         sl.dispose();
3617     }
3618 
3619     @Test public void test_rt_37429() {








3620         // table items - 3 items, 2nd item has 2 children
3621         TreeItem<String> root = new TreeItem<>();
3622 
3623         TreeItem<String> two = new TreeItem<>("two");
3624         two.getChildren().add(new TreeItem<>("childOne"));
3625         two.getChildren().add(new TreeItem<>("childTwo"));
3626         two.setExpanded(true);
3627 
3628         root.getChildren().add(new TreeItem<>("one"));
3629         root.getChildren().add(two);
3630         root.getChildren().add(new TreeItem<>("three"));
3631 
3632         // table columns - 1 column; name
3633         TreeTableColumn<String, String> nameColumn = new TreeTableColumn<>("name");
3634         nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue().getValue()));
3635         nameColumn.setPrefWidth(200);
3636 
3637         // table
3638         TreeTableView<String> table = new TreeTableView<>();
3639         table.setShowRoot(false);
3640         table.setRoot(root);
3641         table.getColumns().addAll(nameColumn);
3642 
3643         table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<TreeItem<String>>) c -> {
3644             while (c.next()) {
3645                 if(c.wasRemoved()) {
3646                     // The removed list of items must be iterated or the AIOOBE will
3647                     // not be thrown when getAddedSubList is called.
3648                     c.getRemoved().forEach(item -> {});
3649                 }
3650 
3651                 if (c.wasAdded()) {
3652                     c.getAddedSubList();
3653                 }
3654             }
3655         });
3656 
3657         final Thread.UncaughtExceptionHandler exceptionHandler = ControlTestUtils.setHandler();
3658         StageLoader sl = new StageLoader(table);
3659 
3660         try {
3661             table.getSelectionModel().select(0);
3662             table.getSortOrder().add(nameColumn);
3663         } finally {
3664             sl.dispose();
3665             ControlTestUtils.resetHandler(exceptionHandler);
3666         }

3667     }
3668 
3669     private int rt_37429_items_change_count = 0;
3670     private int rt_37429_cells_change_count = 0;
3671     @Test public void test_rt_37429_sortEventsShouldNotFireExtraChangeEvents() {
3672         // table items - 3 items, 2nd item has 2 children
3673         TreeItem<String> root = new TreeItem<>();
3674 
3675         root.getChildren().add(new TreeItem<>("a"));
3676         root.getChildren().add(new TreeItem<>("c"));
3677         root.getChildren().add(new TreeItem<>("b"));
3678 
3679         // table columns - 1 column; name
3680         TreeTableColumn<String, String> nameColumn = new TreeTableColumn<>("name");
3681         nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue().getValue()));
3682         nameColumn.setPrefWidth(200);
3683 
3684         // table
3685         TreeTableView<String> table = new TreeTableView<>();
3686         table.setShowRoot(false);


< prev index next >