Skip to content

Commit c5fa04e

Browse files
committed
Add (failing) test cases for #2352
1 parent 25bf4ff commit c5fa04e

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.fasterxml.jackson.failing;
2+
3+
import com.fasterxml.jackson.annotation.JsonAlias;
4+
import com.fasterxml.jackson.annotation.JsonEnumDefaultValue;
5+
6+
import com.fasterxml.jackson.databind.*;
7+
8+
public class EnumAliasDeser2352Test extends BaseMapTest
9+
{
10+
// for [databind#2352]: Support aliases on enum values
11+
enum MyEnum2352_1 {
12+
A,
13+
@JsonAlias({"singleAlias"})
14+
B,
15+
@JsonAlias({"multipleAliases1", "multipleAliases2"})
16+
C
17+
}
18+
// for [databind#2352]: Support aliases on enum values
19+
enum MyEnum2352_2 {
20+
A,
21+
@JsonAlias({"singleAlias"})
22+
B,
23+
@JsonAlias({"multipleAliases1", "multipleAliases2"})
24+
C;
25+
26+
@Override
27+
public String toString() {
28+
return name().toLowerCase();
29+
}
30+
}
31+
// for [databind#2352]: Support aliases on enum values
32+
enum MyEnum2352_3 {
33+
A,
34+
@JsonEnumDefaultValue
35+
@JsonAlias({"singleAlias"})
36+
B,
37+
@JsonAlias({"multipleAliases1", "multipleAliases2"})
38+
C
39+
}
40+
41+
/*
42+
/**********************************************************************
43+
/* Test methods
44+
/**********************************************************************
45+
*/
46+
47+
protected final ObjectMapper MAPPER = newJsonMapper();
48+
49+
// for [databind#2352]
50+
public void testEnumWithAlias() throws Exception {
51+
ObjectReader reader = MAPPER.readerFor(MyEnum2352_1.class);
52+
MyEnum2352_1 nonAliased = reader.readValue(quote("A"));
53+
assertEquals(MyEnum2352_1.A, nonAliased);
54+
MyEnum2352_1 singleAlias = reader.readValue(quote("singleAlias"));
55+
assertEquals(MyEnum2352_1.B, singleAlias);
56+
MyEnum2352_1 multipleAliases1 = reader.readValue(quote("multipleAliases1"));
57+
assertEquals(MyEnum2352_1.C, multipleAliases1);
58+
MyEnum2352_1 multipleAliases2 = reader.readValue(quote("multipleAliases2"));
59+
assertEquals(MyEnum2352_1.C, multipleAliases2);
60+
}
61+
62+
// for [databind#2352]
63+
public void testEnumWithAliasAndToStringSupported() throws Exception {
64+
ObjectReader reader = MAPPER.readerFor(MyEnum2352_2.class)
65+
.with(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
66+
MyEnum2352_2 nonAliased = reader.readValue(quote("a"));
67+
assertEquals(MyEnum2352_2.A, nonAliased);
68+
MyEnum2352_2 singleAlias = reader.readValue(quote("singleAlias"));
69+
assertEquals(MyEnum2352_2.B, singleAlias);
70+
MyEnum2352_2 multipleAliases1 = reader.readValue(quote("multipleAliases1"));
71+
assertEquals(MyEnum2352_2.C, multipleAliases1);
72+
MyEnum2352_2 multipleAliases2 = reader.readValue(quote("multipleAliases2"));
73+
assertEquals(MyEnum2352_2.C, multipleAliases2);
74+
}
75+
76+
// for [databind#2352]
77+
public void testEnumWithAliasAndDefaultForUnknownValueEnabled() throws Exception {
78+
ObjectReader reader = MAPPER.readerFor(MyEnum2352_3.class)
79+
.with(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE);
80+
MyEnum2352_3 nonAliased = reader.readValue(quote("A"));
81+
assertEquals(MyEnum2352_3.A, nonAliased);
82+
MyEnum2352_3 singleAlias = reader.readValue(quote("singleAlias"));
83+
assertEquals(MyEnum2352_3.B, singleAlias);
84+
MyEnum2352_3 defaulted = reader.readValue(quote("unknownValue"));
85+
assertEquals(MyEnum2352_3.B, defaulted);
86+
MyEnum2352_3 multipleAliases1 = reader.readValue(quote("multipleAliases1"));
87+
assertEquals(MyEnum2352_3.C, multipleAliases1);
88+
MyEnum2352_3 multipleAliases2 = reader.readValue(quote("multipleAliases2"));
89+
assertEquals(MyEnum2352_3.C, multipleAliases2);
90+
}
91+
}

0 commit comments

Comments
 (0)