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.

ListDataProviderTest.java 3.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package com.vaadin.server.data.provider;
  2. import java.util.Comparator;
  3. import java.util.List;
  4. import org.junit.Assert;
  5. import org.junit.Test;
  6. import com.vaadin.server.SerializablePredicate;
  7. import com.vaadin.server.data.DataProvider;
  8. import com.vaadin.server.data.ListDataProvider;
  9. import com.vaadin.server.data.Query;
  10. import com.vaadin.server.data.SortOrder;
  11. public class ListDataProviderTest
  12. extends DataProviderTestBase<ListDataProvider<StrBean>> {
  13. @Override
  14. protected ListDataProvider<StrBean> createDataProvider() {
  15. return DataProvider.create(data);
  16. }
  17. @Test
  18. public void filteringListDataProvider_appliedFilters() {
  19. Assert.assertEquals("Filtering result differ",
  20. data.stream().filter(fooFilter).count(),
  21. dataProvider.applyFilter(fooFilter).size(new Query<>()));
  22. Assert.assertEquals("Chained filtering result differ",
  23. data.stream().filter(fooFilter.and(gt5Filter)).count(),
  24. dataProvider.applyFilter(fooFilter)
  25. .size(new Query<>(gt5Filter)));
  26. }
  27. @Test
  28. public void filteringListDataProvider_chainedFilters() {
  29. Assert.assertEquals("Chained filtering result differ",
  30. data.stream().filter(fooFilter.and(gt5Filter)).count(),
  31. dataProvider.applyFilter(fooFilter).applyFilter(gt5Filter)
  32. .size(new Query<>()));
  33. }
  34. @Test
  35. public void filteringListDataProvider_chainedFiltersWithOrInsteadOfAnd() {
  36. ListDataProvider<StrBean> orFilteredDataProvider = new ListDataProvider<StrBean>(
  37. data) {
  38. @Override
  39. public SerializablePredicate<StrBean> combineFilters(
  40. SerializablePredicate<StrBean> filter1,
  41. SerializablePredicate<StrBean> filter2) {
  42. return t -> filter1.test(t) || filter2.test(t);
  43. }
  44. };
  45. Assert.assertEquals("Chained filtering result differ",
  46. data.stream().filter(fooFilter.or(gt5Filter)).count(),
  47. orFilteredDataProvider.applyFilter(fooFilter)
  48. .applyFilter(gt5Filter).size(new Query<>()));
  49. }
  50. @Test
  51. public void filteringListDataProvider_appliedFilterAndConverter() {
  52. Assert.assertEquals("Filtering result differ with 'Foo'",
  53. data.stream().filter(gt5Filter.and(fooFilter)).count(),
  54. dataProvider.applyFilter(gt5Filter).convertFilter(
  55. text -> strBean -> strBean.getValue().equals(text))
  56. .size(new Query<>("Foo")));
  57. Assert.assertEquals("Filtering result differ with 'Xyz'", data.stream()
  58. .filter(gt5Filter.and(s -> s.getValue().equals("Xyz"))).count(),
  59. dataProvider.applyFilter(gt5Filter).convertFilter(
  60. text -> strBean -> strBean.getValue().equals(text))
  61. .size(new Query<>("Xyz")));
  62. Assert.assertEquals("No results should've been found", 0,
  63. dataProvider.applyFilter(gt5Filter).convertFilter(
  64. text -> strBean -> strBean.getValue().equals(text))
  65. .size(new Query<>("Zyx")));
  66. }
  67. @Override
  68. protected ListDataProvider<StrBean> sortingBy(
  69. List<SortOrder<String>> sortOrder, Comparator<StrBean> comp) {
  70. return getDataProvider().sortingBy(comp);
  71. }
  72. }