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.

SpecificEnumToStringConverterTest.java 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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 SpecificEnumToStringConverterTest {
  13. public class SpecificEnumToStringConverter
  14. implements Converter<Enum, String> {
  15. private Class<? extends Enum> enumClass;
  16. public SpecificEnumToStringConverter(Class<? extends Enum> enumClass) {
  17. this.enumClass = enumClass;
  18. }
  19. @Override
  20. public String convertToModel(Enum value,
  21. Class<? extends String> targetType, Locale locale)
  22. throws ConversionException {
  23. if (value == null) {
  24. return null;
  25. }
  26. return value.toString();
  27. }
  28. @Override
  29. public Enum convertToPresentation(String value,
  30. Class<? extends Enum> targetType, Locale locale)
  31. throws ConversionException {
  32. if (value == null) {
  33. return null;
  34. }
  35. for (Enum e : enumClass.getEnumConstants()) {
  36. if (e.toString().equals(value)) {
  37. return e;
  38. }
  39. }
  40. return null;
  41. }
  42. @Override
  43. public Class<String> getModelType() {
  44. return String.class;
  45. }
  46. @Override
  47. public Class<Enum> getPresentationType() {
  48. return (Class<Enum>) enumClass;
  49. }
  50. }
  51. SpecificEnumToStringConverter testEnumConverter;
  52. SpecificEnumToStringConverter anotherTestEnumConverter;
  53. @Before
  54. public void setup() {
  55. testEnumConverter = new SpecificEnumToStringConverter(TestEnum.class);
  56. anotherTestEnumConverter = new SpecificEnumToStringConverter(
  57. AnotherTestEnum.class);
  58. }
  59. @Test
  60. public void nullConversion() {
  61. assertEquals(null, testEnumConverter.convertToModel(null, null, null));
  62. }
  63. @Test
  64. public void enumToStringConversion() {
  65. assertEquals(TestEnum.TWO.toString(), testEnumConverter
  66. .convertToModel(TestEnum.TWO, String.class, null));
  67. }
  68. @Test
  69. public void stringToEnumConversion() {
  70. assertEquals(TestEnum.TWO, testEnumConverter.convertToPresentation(
  71. TestEnum.TWO.toString(), TestEnum.class, null));
  72. }
  73. @Test
  74. public void stringToEnumWithField() {
  75. TextField tf = new TextField();
  76. tf.setConverter(new ReverseConverter(anotherTestEnumConverter));
  77. tf.setPropertyDataSource(new ObjectProperty(AnotherTestEnum.TWO));
  78. assertEquals(AnotherTestEnum.TWO.toString(), tf.getValue());
  79. tf.setValue(AnotherTestEnum.ONE.toString());
  80. assertEquals(AnotherTestEnum.ONE.toString(), tf.getValue());
  81. assertEquals(AnotherTestEnum.ONE, tf.getConvertedValue());
  82. assertEquals(AnotherTestEnum.ONE,
  83. tf.getPropertyDataSource().getValue());
  84. }
  85. }