You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridNullValueSort.java 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.server.SerializableComparator;
  3. import com.vaadin.server.VaadinSession;
  4. import com.vaadin.shared.data.sort.SortDirection;
  5. import com.vaadin.ui.Grid;
  6. import com.vaadin.ui.renderers.AbstractRenderer;
  7. import com.vaadin.ui.renderers.NumberRenderer;
  8. import org.junit.Assert;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11. import java.util.ArrayList;
  12. import java.util.Arrays;
  13. import java.util.List;
  14. public class GridNullValueSort {
  15. private static AbstractRenderer<Integer, Boolean> booleanRenderer() {
  16. return new AbstractRenderer<Integer, Boolean>(Boolean.class) {
  17. };
  18. }
  19. private static class TestGrid extends Grid<Integer> {
  20. @Override
  21. public SerializableComparator<Integer> createSortingComparator() {
  22. return super.createSortingComparator();
  23. }
  24. }
  25. private TestGrid grid;
  26. @Before
  27. public void setup() {
  28. VaadinSession.setCurrent(null);
  29. grid = new TestGrid();
  30. grid.addColumn(i -> i, new NumberRenderer()).setId("int")
  31. .setSortable(true);
  32. grid.addColumn(i -> i == null ? null : String.valueOf(i))
  33. .setId("String").setSortable(true);
  34. grid.addColumn(i -> i == null ? null : i != 1, booleanRenderer())
  35. .setId("Boolean").setSortable(true);
  36. }
  37. @Test
  38. public void testNumbersNotNulls() {
  39. grid.sort(grid.getColumn("int"), SortDirection.ASCENDING);
  40. performSort(Arrays.asList(2, 1, 3), Arrays.asList(1, 2, 3));
  41. }
  42. @Test
  43. public void testNumbers() {
  44. grid.sort(grid.getColumn("int"), SortDirection.ASCENDING);
  45. performSort(Arrays.asList(1, 2, null, 3, null, null),
  46. Arrays.asList(1, 2, 3, null, null, null));
  47. }
  48. @Test
  49. public void testNumbersNotNullsDescending() {
  50. grid.sort(grid.getColumn("int"), SortDirection.DESCENDING);
  51. performSort(Arrays.asList(1, 2, 3), Arrays.asList(3, 2, 1));
  52. }
  53. @Test
  54. public void testNumbersDescending() {
  55. grid.sort(grid.getColumn("int"), SortDirection.DESCENDING);
  56. performSort(Arrays.asList(1, 3, null, null, null, 2),
  57. Arrays.asList(null, null, null, 3, 2, 1));
  58. }
  59. @Test
  60. public void testStringsNotNulls() {
  61. grid.sort(grid.getColumn("String"), SortDirection.ASCENDING);
  62. performSort(Arrays.asList(2, 1, 3), Arrays.asList(1, 2, 3));
  63. }
  64. @Test
  65. public void testStrings() {
  66. grid.sort(grid.getColumn("String"), SortDirection.ASCENDING);
  67. performSort(Arrays.asList(1, 2, null, 3, null, null),
  68. Arrays.asList(1, 2, 3, null, null, null));
  69. }
  70. @Test
  71. public void testStringsNotNullsDescending() {
  72. grid.sort(grid.getColumn("String"), SortDirection.DESCENDING);
  73. performSort(Arrays.asList(1, 2, 3), Arrays.asList(3, 2, 1));
  74. }
  75. @Test
  76. public void testStringsDescending() {
  77. grid.sort(grid.getColumn("String"), SortDirection.DESCENDING);
  78. performSort(Arrays.asList(1, 3, null, null, null, 2),
  79. Arrays.asList(null, null, null, 3, 2, 1));
  80. }
  81. @Test
  82. public void testBooleansNotNulls() {
  83. grid.sort(grid.getColumn("Boolean"), SortDirection.ASCENDING);
  84. performSort(Arrays.asList(2, 1), Arrays.asList(1, 2));
  85. }
  86. @Test
  87. public void testBooleans() {
  88. grid.sort(grid.getColumn("Boolean"), SortDirection.ASCENDING);
  89. performSort(Arrays.asList(1, null, 2, null, null),
  90. Arrays.asList(1, 2, null, null, null));
  91. }
  92. @Test
  93. public void testBooleansNotNullsDescending() {
  94. grid.sort(grid.getColumn("Boolean"), SortDirection.DESCENDING);
  95. performSort(Arrays.asList(1, 2), Arrays.asList(2, 1));
  96. }
  97. @Test
  98. public void testBooleansDescending() {
  99. grid.sort(grid.getColumn("Boolean"), SortDirection.DESCENDING);
  100. performSort(Arrays.asList(1, null, null, null, 2),
  101. Arrays.asList(null, null, null, 2, 1));
  102. }
  103. private void performSort(List<Integer> source, List<Integer> expected) {
  104. SerializableComparator<Integer> sortingComparator = grid
  105. .createSortingComparator();
  106. List<Integer> data = new ArrayList<>(source);
  107. data.sort(sortingComparator);
  108. Assert.assertEquals(expected, data);
  109. }
  110. }