From d2ecf8dd4f1a45885e998ef567fd6c21f31881bb Mon Sep 17 00:00:00 2001 From: mukham12 Date: Sat, 9 Dec 2023 08:41:54 -0500 Subject: [PATCH] Add a test method for #118 --- .../jackson/datatype/guava/TestRange.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/guava/src/test/java/com/fasterxml/jackson/datatype/guava/TestRange.java b/guava/src/test/java/com/fasterxml/jackson/datatype/guava/TestRange.java index 62debff6..975ea152 100644 --- a/guava/src/test/java/com/fasterxml/jackson/datatype/guava/TestRange.java +++ b/guava/src/test/java/com/fasterxml/jackson/datatype/guava/TestRange.java @@ -1,7 +1,10 @@ package com.fasterxml.jackson.datatype.guava; import java.io.IOException; +import java.time.Duration; +import java.time.LocalDate; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.type.TypeReference; @@ -39,6 +42,23 @@ static class Wrapped { public Wrapped() { } public Wrapped(Range r) { this.r = r; } } + + static class Stringified { + + @JsonFormat(shape = JsonFormat.Shape.STRING) + public Range r; + + public Stringified() { + } + + public Stringified(Range r) { + this.r = r; + } + + public Range toRange() { + return r; + } + } /** * This test is present so that we know if either Jackson's handling of Range @@ -316,4 +336,43 @@ public void testRangeWithDefaultTyping() throws Exception assertEquals(BoundType.CLOSED, result.lowerBoundType()); assertEquals(BoundType.CLOSED, result.upperBoundType()); } + + public void testSerializationToString() throws Exception + { + // Test open range serialization + Range openRange = RangeFactory.open(1, 10); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(openRange)), "{\"r\":\"(1..10)\"}"); + + // Test closed range serialization + Range closedRange = RangeFactory.closed(5, 15); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(closedRange)), "{\"r\":\"[5..15]\"}"); + + // Test open-closed range serialization + Range openClosedRange = RangeFactory.openClosed(10, 20); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(openClosedRange)), "{\"r\":\"(10..20]\"}"); + + // Test closed-open range serialization + Range closedOpenRange = RangeFactory.closedOpen(25, 30); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(closedOpenRange)), "{\"r\":\"[25..30)\"}"); + + // Test single point range serialization + Range singletonRange = RangeFactory.singleton(42); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(singletonRange)), "{\"r\":\"[42..42]\"}"); + + // Test unbounded range serialization + Range unboundedRange = RangeFactory.all(); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(unboundedRange)), "{\"r\":\"(-∞..+∞)\"}"); + + // Test open range serialization with Duration + Range openDurationRange = RangeFactory.open(Duration.ofMinutes(30), Duration.ofMinutes(60)); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(openDurationRange)), "{\"r\":\"(PT30M..PT1H)\"}"); + + // Test closed range serialization with LocalDate + Range closedDateRange = RangeFactory.closed(LocalDate.parse("2023-01-01"), LocalDate.parse("2023-01-31")); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(closedDateRange)), "{\"r\":\"[2023-01-01..2023-01-31]\"}"); + + // Test open-closed range serialization with String + Range openClosedStringRange = RangeFactory.openClosed("abc", "def"); + assertEquals(MAPPER.writeValueAsString(new Stringified<>(openClosedStringRange)), "{\"r\":\"(abc..def]\"}"); + } }