From 22dfc6231cce451d171a1e6204dd75e815423cad Mon Sep 17 00:00:00 2001 From: Leif Åstrand Date: Sat, 29 Aug 2015 15:53:20 +0300 Subject: Support custom Enum.toString in converter (#17301) Change-Id: Icd3c164fb252bd048ffcd953f967a9c7acdc4514 --- .../data/converter/StringToEnumConverterTest.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'server/tests') diff --git a/server/tests/src/com/vaadin/tests/data/converter/StringToEnumConverterTest.java b/server/tests/src/com/vaadin/tests/data/converter/StringToEnumConverterTest.java index 59c1ed133a..6660ecc9d5 100644 --- a/server/tests/src/com/vaadin/tests/data/converter/StringToEnumConverterTest.java +++ b/server/tests/src/com/vaadin/tests/data/converter/StringToEnumConverterTest.java @@ -14,10 +14,36 @@ public class StringToEnumConverterTest { VALUE1, SOME_VALUE, FOO_BAR_BAZ, Bar, nonStandardCase, _HUGH; } + public static enum EnumWithCustomToString { + ONE, TWO, THREE; + + @Override + public String toString() { + return "case " + (ordinal() + 1); + } + } + + public static enum EnumWithAmbigousToString { + FOO, FOOBAR, FOO_BAR; + + @Override + public String toString() { + return name().replaceAll("_", ""); + } + } + StringToEnumConverter converter = new StringToEnumConverter(); Converter reverseConverter = new ReverseConverter( converter); + private String convertToString(Enum value) { + return converter.convertToPresentation(value, String.class, null); + } + + public Enum convertToEnum(String string, Class type) { + return converter.convertToModel(string, type, null); + } + @Test public void testEmptyStringConversion() { Assert.assertEquals(null, @@ -79,4 +105,31 @@ public class StringToEnumConverterTest { } + @Test + public void preserveFormattingWithCustomToString() { + for (EnumWithCustomToString e : EnumWithCustomToString.values()) { + Assert.assertEquals(e.toString(), convertToString(e)); + } + } + + @Test + public void findEnumWithCustomToString() { + for (EnumWithCustomToString e : EnumWithCustomToString.values()) { + Assert.assertSame(e, + convertToEnum(e.toString(), EnumWithCustomToString.class)); + Assert.assertSame(e, + convertToEnum(e.name(), EnumWithCustomToString.class)); + } + } + + @Test + public void unambigousValueInEnumWithAmbigous_succeed() { + Assert.assertSame(EnumWithAmbigousToString.FOO, + convertToEnum("foo", EnumWithAmbigousToString.class)); + } + + @Test(expected = ConversionException.class) + public void ambigousValue_throws() { + convertToEnum("foobar", EnumWithAmbigousToString.class); + } } -- cgit v1.2.3