DurationDeser337Test.java
package com.fasterxml.jackson.datatype.jsr310.deser;
import java.time.Duration;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.ModuleTestBase;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class DurationDeser337Test extends ModuleTestBase
{
@Test
public void test_default() throws Exception {
ObjectMapper mapper = newMapper();
Duration duration = Duration.parse("PT-43.636S");
String ser = mapper.writeValueAsString(duration);
assertEquals("-43.636000000", ser);
Duration deser = mapper.readValue(ser, Duration.class);
assertEquals(duration, deser);
assertEquals(deser.toString(), "PT-43.636S");
}
// Handling with WRITE_DURATIONS_AS_TIMESTAMPS enabled can't round-trip a value
@Test
public void test_with() throws Exception {
ObjectMapper mapper = mapperBuilder()
.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, true)
.build();
Duration duration = Duration.parse("PT-43.636S");
String ser = mapper.writeValueAsString(duration);
assertEquals("-43.636000000", ser);
Duration deser = mapper.readValue(ser, Duration.class);
assertEquals(duration, deser);
assertEquals(deser.toString(), "PT-43.636S");
}
// Handling with WRITE_DURATIONS_AS_TIMESTAMPS disabled works
@Test
public void test_without() throws Exception {
ObjectMapper mapper = mapperBuilder()
.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false)
.build();
Duration duration = Duration.parse("PT-43.636S");
String ser = mapper.writeValueAsString(duration);
assertEquals(q("PT-43.636S"), ser);
Duration deser = mapper.readValue(ser, Duration.class);
assertEquals(duration, deser);
}
}