diff options
Diffstat (limited to 'src/test/java/com/fasterxml')
-rw-r--r-- | src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java | 87 | ||||
-rw-r--r-- | src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java | 3 |
2 files changed, 87 insertions, 3 deletions
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java b/src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java index 1b1e7ecf4..0aa1d0af6 100644 --- a/src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java @@ -3,6 +3,8 @@ package com.fasterxml.jackson.databind.deser.jdk; import java.io.IOException; import java.util.EnumSet; +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.BaseMapTest; @@ -33,7 +35,39 @@ public class EnumAltIdTest extends BaseMapTest @JsonFormat(without={ JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES }) public TestEnum value; } - + + + // for [databind#2352]: Support aliases on enum values + enum MyEnum2352_1 { + A, + @JsonAlias({"singleAlias"}) + B, + @JsonAlias({"multipleAliases1", "multipleAliases2"}) + C + } + // for [databind#2352]: Support aliases on enum values + enum MyEnum2352_2 { + A, + @JsonAlias({"singleAlias"}) + B, + @JsonAlias({"multipleAliases1", "multipleAliases2"}) + C; + + @Override + public String toString() { + return name().toLowerCase(); + } + } + // for [databind#2352]: Support aliases on enum values + enum MyEnum2352_3 { + A, + @JsonEnumDefaultValue + @JsonAlias({"singleAlias"}) + B, + @JsonAlias({"multipleAliases1", "multipleAliases2"}) + C; + } + /* /********************************************************** /* Test methods, basic @@ -59,7 +93,7 @@ public class EnumAltIdTest extends BaseMapTest verifyException(e, "[JACKSON, OK, RULES]"); } } - + public void testFailWhenCaseSensitiveAndToStringIsUpperCase() throws IOException { ObjectReader r = READER_DEFAULT.forType(LowerCaseEnum.class) .with(DeserializationFeature.READ_ENUMS_USING_TO_STRING); @@ -130,4 +164,53 @@ public class EnumAltIdTest extends BaseMapTest verifyException(e, "[JACKSON, OK, RULES]"); } } + + /* + /********************************************************** + /* Test methods, Enum Aliases [databind#2352] + /********************************************************** + */ + + // for [databind#2352] + public void testEnumWithAlias() throws Exception { + ObjectReader reader = MAPPER.readerFor(MyEnum2352_1.class); + MyEnum2352_1 nonAliased = reader.readValue(quote("A")); + assertEquals(MyEnum2352_1.A, nonAliased); + MyEnum2352_1 singleAlias = reader.readValue(quote("singleAlias")); + assertEquals(MyEnum2352_1.B, singleAlias); + MyEnum2352_1 multipleAliases1 = reader.readValue(quote("multipleAliases1")); + assertEquals(MyEnum2352_1.C, multipleAliases1); + MyEnum2352_1 multipleAliases2 = reader.readValue(quote("multipleAliases2")); + assertEquals(MyEnum2352_1.C, multipleAliases2); + } + + // for [databind#2352] + public void testEnumWithAliasAndToStringSupported() throws Exception { + ObjectReader reader = MAPPER.readerFor(MyEnum2352_2.class) + .with(DeserializationFeature.READ_ENUMS_USING_TO_STRING); + MyEnum2352_2 nonAliased = reader.readValue(quote("a")); + assertEquals(MyEnum2352_2.A, nonAliased); + MyEnum2352_2 singleAlias = reader.readValue(quote("singleAlias")); + assertEquals(MyEnum2352_2.B, singleAlias); + MyEnum2352_2 multipleAliases1 = reader.readValue(quote("multipleAliases1")); + assertEquals(MyEnum2352_2.C, multipleAliases1); + MyEnum2352_2 multipleAliases2 = reader.readValue(quote("multipleAliases2")); + assertEquals(MyEnum2352_2.C, multipleAliases2); + } + + // for [databind#2352] + public void testEnumWithAliasAndDefaultForUnknownValueEnabled() throws Exception { + ObjectReader reader = MAPPER.readerFor(MyEnum2352_3.class) + .with(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE); + MyEnum2352_3 nonAliased = reader.readValue(quote("A")); + assertEquals(MyEnum2352_3.A, nonAliased); + MyEnum2352_3 singleAlias = reader.readValue(quote("singleAlias")); + assertEquals(MyEnum2352_3.B, singleAlias); + MyEnum2352_3 defaulted = reader.readValue(quote("unknownValue")); + assertEquals(MyEnum2352_3.B, defaulted); + MyEnum2352_3 multipleAliases1 = reader.readValue(quote("multipleAliases1")); + assertEquals(MyEnum2352_3.C, multipleAliases1); + MyEnum2352_3 multipleAliases2 = reader.readValue(quote("multipleAliases2")); + assertEquals(MyEnum2352_3.C, multipleAliases2); + } } diff --git a/src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java b/src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java index ccc3ea263..d5548b7d4 100644 --- a/src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java @@ -52,7 +52,8 @@ public class EnumValuesTest extends BaseMapTest public void testEnumResolver() { - EnumResolver enumRes = EnumResolver.constructUnsafeUsingToString(ABC.class, null); + EnumResolver enumRes = EnumResolver.constructUnsafeUsingToString(ABC.class, + MAPPER.getSerializationConfig().getAnnotationIntrospector()); assertEquals(ABC.B, enumRes.getEnum(1)); assertNull(enumRes.getEnum(-1)); assertNull(enumRes.getEnum(3)); |