diff --git a/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java b/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java index b17dda304d..354793a940 100644 --- a/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java +++ b/src/test/java/com/fasterxml/jackson/databind/node/TestConversions.java @@ -8,6 +8,7 @@ import org.junit.Assert; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -69,7 +70,16 @@ static class Issue467TmpBean { public Issue467TmpBean(int i) { x = i; } } - + + static class Issue709Bean { + public byte[] data; + } + + @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="_class") + static class LongContainer1940 { + public Long longObj; + } + /* /********************************************************** /* Unit tests @@ -172,10 +182,6 @@ public void testBase64Text() throws Exception } } - static class Issue709Bean { - public byte[] data; - } - /** * Simple test to verify that byte[] values can be handled properly when * converting, as long as there is metadata (from POJO definitions). @@ -285,5 +291,12 @@ public void testConversionOfTrees() throws Exception assertTrue("Expected Object, got "+tree.getNodeType(), tree.isBoolean()); assertEquals(EXP, MAPPER.writeValueAsString(tree)); } -} + // [databind#1940]: losing of precision due to coercion + public void testBufferedLongViaCoercion() throws Exception { + long EXP = 1519348261000L; + JsonNode tree = MAPPER.readTree("{\"longObj\": "+EXP+".0, \"_class\": \""+LongContainer1940.class.getName()+"\"}"); + LongContainer1940 obj = MAPPER.treeToValue(tree, LongContainer1940.class); + assertEquals(Long.valueOf(EXP), obj.longObj); + } +}