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.

HasItemsTest.java 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.vaadin.data;
  2. import java.lang.reflect.Modifier;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Set;
  6. import java.util.stream.Collectors;
  7. import java.util.stream.Stream;
  8. import org.junit.Assert;
  9. import org.junit.Test;
  10. import org.reflections.Reflections;
  11. import com.vaadin.data.provider.DataProvider;
  12. import com.vaadin.data.provider.ListDataProvider;
  13. import com.vaadin.ui.Tree;
  14. import com.vaadin.ui.TreeGrid;
  15. public class HasItemsTest {
  16. private static ArrayList<Class<?>> whiteList = new ArrayList<>();
  17. {
  18. // these create a hierarchical data provider, which is not using
  19. // ArrayList or Arrays.ArrayList in the end
  20. whiteList.add(TreeGrid.class);
  21. whiteList.add(Tree.class);
  22. }
  23. @Test
  24. public void setItemsVarargsConstructor_createsListDataProvider_itIsEditable()
  25. throws InstantiationException, IllegalAccessException {
  26. Set<Class<? extends HasItems>> subTypesOf = new Reflections(
  27. "com.vaadin.ui").getSubTypesOf(HasItems.class).stream().filter(
  28. clazz -> !Modifier.isAbstract(clazz.getModifiers()))
  29. .filter(clazz -> Stream.of(clazz.getConstructors())
  30. .anyMatch(constuctor -> constuctor
  31. .getParameterCount() == 0))
  32. .filter(clazz -> !whiteList.contains(clazz))
  33. .collect(Collectors.toSet());
  34. for (Class<? extends HasItems> hasItemsType : subTypesOf) {
  35. HasItems hasItems = hasItemsType.newInstance();
  36. hasItems.setItems("0", "1");
  37. DataProvider dataProvider = hasItems.getDataProvider();
  38. Assert.assertTrue(
  39. hasItemsType.getSimpleName()
  40. + " setItems method with varargs parameters of does not create a list data provider",
  41. dataProvider instanceof ListDataProvider);
  42. ListDataProvider listDataProvider = (ListDataProvider) dataProvider;
  43. Assert.assertTrue(
  44. hasItemsType.getSimpleName()
  45. + " does not have setItems method with varargs parameters of does not create an ArrayList backed list data provider",
  46. listDataProvider.getItems() instanceof ArrayList);
  47. List list = (List) listDataProvider.getItems();
  48. // previously the following would explode since Arrays.ArrayList
  49. // does not support it
  50. list.add(0, "2");
  51. }
  52. }
  53. }