From 371cf93a6e0ac29686a46c5d2a56af153a686ab6 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Thu, 15 Aug 2024 15:29:34 -0700 Subject: [PATCH] Add failing test for #307 --- .../failing/InstanceViaBigDecimal307Test.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/InstanceViaBigDecimal307Test.java diff --git a/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/InstanceViaBigDecimal307Test.java b/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/InstanceViaBigDecimal307Test.java new file mode 100644 index 00000000..5f27f033 --- /dev/null +++ b/datetime/src/test/java/com/fasterxml/jackson/datatype/jsr310/failing/InstanceViaBigDecimal307Test.java @@ -0,0 +1,42 @@ +package com.fasterxml.jackson.datatype.jsr310.failing; + +import java.time.Instant; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.ModuleTestBase; + +import static org.junit.Assert.assertEquals; + +// [modules-java8#307]: Loss of precision via JsonNode for BigDecimal-valued +// things (like Instant) +public class InstanceViaBigDecimal307Test extends ModuleTestBase +{ + static class Wrapper307 { + public Instant value; + + public Wrapper307(Instant v) { value = v; } + protected Wrapper307() { } + } + + private final Instant ISSUED_AT = Instant.ofEpochSecond(1234567890).plusNanos(123456789); + + private ObjectMapper MAPPER = newMapper(); + + @Test + public void instantViaReadValue() throws Exception { + String serialized = MAPPER.writeValueAsString(new Wrapper307(ISSUED_AT)); + Wrapper307 deserialized = MAPPER.readValue(serialized, Wrapper307.class); + assertEquals(ISSUED_AT, deserialized.value); + } + + @Test + public void instantViaReadTree() throws Exception { + String serialized = MAPPER.writeValueAsString(new Wrapper307(ISSUED_AT)); + JsonNode tree = MAPPER.readTree(serialized); + Wrapper307 deserialized = MAPPER.treeToValue(tree, Wrapper307.class); + assertEquals(ISSUED_AT, deserialized.value); + } +}