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.

StringToCollectionConverterTest.java 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.vaadin.v7.tests.data.converter;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertFalse;
  4. import static org.junit.Assert.assertNull;
  5. import static org.junit.Assert.assertTrue;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.Collection;
  9. import java.util.EnumSet;
  10. import java.util.HashSet;
  11. import java.util.Iterator;
  12. import java.util.List;
  13. import java.util.Locale;
  14. import java.util.Set;
  15. import java.util.Vector;
  16. import org.junit.Test;
  17. import com.vaadin.v7.data.util.converter.StringToCollectionConverter;
  18. import com.vaadin.v7.data.util.converter.StringToCollectionConverter.CollectionFactory;
  19. import com.vaadin.v7.data.util.converter.StringToEnumConverter;
  20. import com.vaadin.v7.data.util.converter.StringToIntegerConverter;
  21. /**
  22. * Tests for {@link StringToCollectionConverter}.
  23. *
  24. * @author Vaadin Ltd
  25. */
  26. public class StringToCollectionConverterTest {
  27. @Test
  28. public void convertToModel_defaultCtor() {
  29. StringToCollectionConverter converter = new StringToCollectionConverter();
  30. Collection<?> model = converter.convertToModel("a, b, c", List.class,
  31. null);
  32. assertTrue("Unexpected model class", model instanceof ArrayList);
  33. Iterator<?> iterator = model.iterator();
  34. assertEquals("Incorrect fist token", "a", iterator.next());
  35. assertEquals("Incorrect second token", "b", iterator.next());
  36. assertEquals("Incorrect third token", "c", iterator.next());
  37. }
  38. @Test
  39. public void convertToModel_customDelimiter() {
  40. StringToCollectionConverter converter = new StringToCollectionConverter(
  41. "x");
  42. Collection<?> model = converter.convertToModel("axbxc", List.class,
  43. null);
  44. assertTrue("Unexpected model class", model instanceof ArrayList);
  45. Iterator<?> iterator = model.iterator();
  46. assertEquals("Incorrect fist token", "a", iterator.next());
  47. assertEquals("Incorrect second token", "b", iterator.next());
  48. assertEquals("Incorrect third token", "c", iterator.next());
  49. }
  50. @Test
  51. public void convertToModel_customConverter() {
  52. StringToCollectionConverter converter = new StringToCollectionConverter(
  53. ",", new StringToIntegerConverter(), Integer.class);
  54. Collection<?> model = converter.convertToModel("6,2,5", List.class,
  55. null);
  56. assertTrue("Unexpected model class", model instanceof ArrayList);
  57. Iterator<?> iterator = model.iterator();
  58. assertEquals("Incorrect fist token", 6, iterator.next());
  59. assertEquals("Incorrect second token", 2, iterator.next());
  60. assertEquals("Incorrect third token", 5, iterator.next());
  61. }
  62. @Test
  63. public void convertToModel_setAsCollection() {
  64. StringToCollectionConverter converter = new StringToCollectionConverter(
  65. " ", new StringToEnumConverter(), TestEnum.class);
  66. Collection<?> model = converter.convertToModel("Z X Y", Set.class,
  67. null);
  68. assertTrue("Unexpected model class", model instanceof HashSet);
  69. EnumSet<TestEnum> set = EnumSet.allOf(TestEnum.class);
  70. set.removeAll(model);
  71. assertTrue("Some values are not in resutling collection",
  72. set.isEmpty());
  73. }
  74. @Test
  75. public void convertToModel_customFactory() {
  76. CollectionFactory factory = new CollectionFactory() {
  77. @Override
  78. public Collection<?> createCollection(
  79. Class<? extends Collection> type) {
  80. return new Vector();
  81. }
  82. };
  83. StringToCollectionConverter converter = new StringToCollectionConverter(
  84. ", ", null, String.class, factory);
  85. Collection<?> model = converter.convertToModel("a, b, c",
  86. Collection.class, null);
  87. assertTrue("Unexpected model class", model instanceof Vector);
  88. Iterator<?> iterator = model.iterator();
  89. assertEquals("Incorrect fist token", "a", iterator.next());
  90. assertEquals("Incorrect second token", "b", iterator.next());
  91. assertEquals("Incorrect third token", "c", iterator.next());
  92. }
  93. @Test
  94. public void convertToPresentation_default() {
  95. StringToCollectionConverter converter = new StringToCollectionConverter();
  96. String presentation = converter.convertToPresentation(
  97. Arrays.asList("a", "b", "c"), String.class, null);
  98. assertEquals("a, b, c", presentation);
  99. }
  100. @Test
  101. public void convertToPresentation_customDelimiter() {
  102. StringToCollectionConverter converter = new StringToCollectionConverter(
  103. "x");
  104. String presentation = converter.convertToPresentation(
  105. Arrays.asList("a", "b", "c"), String.class, null);
  106. assertEquals("axbxc", presentation);
  107. }
  108. @Test
  109. public void convertToPresentation_customConverter() {
  110. StringToCollectionConverter converter = new StringToCollectionConverter(
  111. ",", new StringToEnumConverter(), TestEnum.class);
  112. String presentation = converter.convertToPresentation(
  113. Arrays.asList(TestEnum.Z, TestEnum.Y), String.class, null);
  114. assertEquals("Z,Y", presentation);
  115. }
  116. @Test
  117. public void convertToModel_singleItem() {
  118. StringToCollectionConverter converter = new StringToCollectionConverter();
  119. Collection<?> model = converter.convertToModel("a", List.class, null);
  120. Iterator<?> iterator = model.iterator();
  121. assertEquals("Incorrect fist token", "a", iterator.next());
  122. assertFalse("More than one item detected after conversation",
  123. iterator.hasNext());
  124. }
  125. @Test
  126. public void convertToModel_null() {
  127. StringToCollectionConverter converter = new StringToCollectionConverter();
  128. assertNull(converter.convertToModel(null, ArrayList.class,
  129. Locale.ENGLISH));
  130. }
  131. @Test
  132. public void convertToPresentation_null() {
  133. StringToCollectionConverter converter = new StringToCollectionConverter();
  134. assertNull(converter.convertToPresentation(null, String.class,
  135. Locale.ENGLISH));
  136. }
  137. public enum TestEnum {
  138. X, Y, Z;
  139. }
  140. }