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.

AnyEnumToStringConverterTest.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.vaadin.v7.tests.data.converter;
  2. import static org.junit.Assert.assertEquals;
  3. import java.util.Locale;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6. import com.vaadin.tests.data.bean.AnotherTestEnum;
  7. import com.vaadin.tests.data.bean.TestEnum;
  8. import com.vaadin.v7.data.util.ObjectProperty;
  9. import com.vaadin.v7.data.util.converter.Converter;
  10. import com.vaadin.v7.data.util.converter.ReverseConverter;
  11. import com.vaadin.v7.ui.TextField;
  12. public class AnyEnumToStringConverterTest {
  13. public class AnyEnumToStringConverter implements Converter<Enum, String> {
  14. public AnyEnumToStringConverter() {
  15. }
  16. @Override
  17. public String convertToModel(Enum value,
  18. Class<? extends String> targetType, Locale locale)
  19. throws ConversionException {
  20. if (value == null) {
  21. return null;
  22. }
  23. return value.toString();
  24. }
  25. @Override
  26. public Enum convertToPresentation(String value,
  27. Class<? extends Enum> targetType, Locale locale)
  28. throws ConversionException {
  29. if (value == null) {
  30. return null;
  31. }
  32. for (Enum e : targetType.getEnumConstants()) {
  33. if (e.toString().equals(value)) {
  34. return e;
  35. }
  36. }
  37. return null;
  38. }
  39. @Override
  40. public Class<String> getModelType() {
  41. return String.class;
  42. }
  43. @Override
  44. public Class<Enum> getPresentationType() {
  45. return Enum.class;
  46. }
  47. }
  48. private AnyEnumToStringConverter converter;
  49. @Before
  50. public void setup() {
  51. converter = new AnyEnumToStringConverter();
  52. }
  53. @Test
  54. public void nullConversion() {
  55. assertEquals(null, converter.convertToModel(null, null, null));
  56. }
  57. @Test
  58. public void enumToStringConversion() {
  59. assertEquals(TestEnum.TWO.toString(),
  60. converter.convertToModel(TestEnum.TWO, String.class, null));
  61. assertEquals(AnotherTestEnum.TWO.toString(), converter
  62. .convertToModel(AnotherTestEnum.TWO, String.class, null));
  63. }
  64. @Test
  65. public void stringToEnumConversion() {
  66. assertEquals(TestEnum.TWO, converter.convertToPresentation(
  67. TestEnum.TWO.toString(), TestEnum.class, null));
  68. assertEquals(AnotherTestEnum.TWO, converter.convertToPresentation(
  69. AnotherTestEnum.TWO.toString(), AnotherTestEnum.class, null));
  70. }
  71. @Test
  72. public void stringToEnumWithField() {
  73. TextField tf = new TextField();
  74. tf.setConverter(new ReverseConverter(converter));
  75. tf.setPropertyDataSource(new ObjectProperty(AnotherTestEnum.TWO));
  76. assertEquals(AnotherTestEnum.TWO.toString(), tf.getValue());
  77. tf.setValue(AnotherTestEnum.ONE.toString());
  78. assertEquals(AnotherTestEnum.ONE.toString(), tf.getValue());
  79. assertEquals(AnotherTestEnum.ONE, tf.getConvertedValue());
  80. assertEquals(AnotherTestEnum.ONE,
  81. tf.getPropertyDataSource().getValue());
  82. tf.setPropertyDataSource(new ObjectProperty(TestEnum.TWO));
  83. assertEquals(TestEnum.TWO.toString(), tf.getValue());
  84. tf.setValue(TestEnum.ONE.toString());
  85. assertEquals(TestEnum.ONE.toString(), tf.getValue());
  86. assertEquals(TestEnum.ONE, tf.getConvertedValue());
  87. assertEquals(TestEnum.ONE, tf.getPropertyDataSource().getValue());
  88. }
  89. }