aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2019-11-24 15:20:15 -0800
committerTatu Saloranta <tatu.saloranta@iki.fi>2019-11-24 15:20:15 -0800
commitdd5f6dee81423b29a8b38baa2320143b5bb34769 (patch)
tree71089255aa6063d73d04efbcc72dc68fa97b2c4f /src/test
parent9c14c46a66cff15d8d90266f40e641271e312c78 (diff)
downloadjackson-databind-dd5f6dee81423b29a8b38baa2320143b5bb34769.tar.gz
Fix #2352
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/fasterxml/jackson/databind/deser/jdk/EnumAltIdTest.java87
-rw-r--r--src/test/java/com/fasterxml/jackson/databind/util/EnumValuesTest.java3
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));