From cbda007d6ca75d9a82ee61c251c2441402a37ebd Mon Sep 17 00:00:00 2001 From: Cowtowncoder Date: Wed, 8 Apr 2015 12:57:10 -0700 Subject: [PATCH] Add unit tests for #749; failure to dynamically use WRITE_ENUMS_USING_TO_STRING --- .../databind/ser/TestEnumSerialization.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java index 866cbfd4d3..fd4cf223f2 100644 --- a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java +++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java @@ -66,7 +66,7 @@ protected static interface ToStringMixin { @JsonValue public String toString(); } - protected enum SerializableEnum implements JsonSerializable + protected static enum SerializableEnum implements JsonSerializable { A, B, C; @@ -86,7 +86,7 @@ public void serialize(JsonGenerator jgen, SerializerProvider provider) throws IO } } - protected enum LowerCaseEnum { + protected static enum LowerCaseEnum { A, B, C; private LowerCaseEnum() { } @Override @@ -282,6 +282,11 @@ public void testToStringEnum() throws Exception ObjectMapper m = new ObjectMapper(); m.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true); assertEquals("\"b\"", m.writeValueAsString(LowerCaseEnum.B)); + + // [databind#749] but should also be able to dynamically disable + assertEquals("\"B\"", + m.writer().without(SerializationFeature.WRITE_ENUMS_USING_TO_STRING) + .writeValueAsString(LowerCaseEnum.B)); } // [JACKSON-212] @@ -371,6 +376,31 @@ public void testCustomEnumMapKeySerializer() throws Exception { String json = mapper.writeValueAsString(new MyBean661("abc")); assertEquals(aposToQuotes("{'X-FOO':'abc'}"), json); } + + // [databind#749] + + public void testEnumMapSerDefault() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + EnumMap m = new EnumMap(LowerCaseEnum.class); + m.put(LowerCaseEnum.A, "value"); + assertEquals("{\"A\":\"value\"}", mapper.writeValueAsString(m)); + } + + public void testEnumMapSerDisableToString() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + ObjectWriter w = mapper.writer().without(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + EnumMap m = new EnumMap(LowerCaseEnum.class); + m.put(LowerCaseEnum.A, "value"); + assertEquals("{\"A\":\"value\"}", w.writeValueAsString(m)); + } + + public void testEnumMapSerEnableToString() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + ObjectWriter w = mapper.writer().with(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + EnumMap m = new EnumMap(LowerCaseEnum.class); + m.put(LowerCaseEnum.A, "value"); + assertEquals("{\"a\":\"value\"}", w.writeValueAsString(m)); + } } // [JACKSON-757], non-inner enum