InstantDeser291Test.java
package tools.jackson.databind.ext.javatime.deser;
import java.time.Instant;
import java.util.Locale;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.ObjectReader;
import tools.jackson.databind.cfg.DateTimeFeature;
import tools.jackson.databind.ext.javatime.DateTimeTestBase;
import tools.jackson.databind.json.JsonMapper;
import static org.junit.jupiter.api.Assertions.*;
// [modules-java8#291] InstantDeserializer fails to parse negative numeric timestamp strings for
// pre-1970 values.
public class InstantDeser291Test
extends DateTimeTestBase
{
private final JsonMapper MAPPER = JsonMapper.builder()
.defaultLocale(Locale.ENGLISH)
.enable(DateTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS)
.build();
private final ObjectReader READER = MAPPER.readerFor(Instant.class);
private static final Instant INSTANT_3_SEC_AFTER_EPOC = Instant.ofEpochSecond(3);
private static final Instant INSTANT_3_SEC_BEFORE_EPOC = Instant.ofEpochSecond(-3);
private static final String STR_3_SEC = "\"3.000000000\"";
private static final String STR_POSITIVE_3 = "\"+3.000000000\"";
private static final String STR_NEGATIVE_3 = "\"-3.000000000\"";
/**
* Baseline that always succeeds, even before resolution of issue 291
* @throws Exception
*/
@Test
public void testNormalNumericalString() throws Exception {
assertEquals(INSTANT_3_SEC_AFTER_EPOC, READER.readValue(STR_3_SEC));
}
@Test
public void testNegativeNumericalString() throws Exception {
assertEquals(INSTANT_3_SEC_BEFORE_EPOC, READER.readValue(STR_NEGATIVE_3));
}
@Test
public void testAllowedPlusSignNumericalString() throws Exception {
assertEquals(INSTANT_3_SEC_AFTER_EPOC, READER.readValue(STR_POSITIVE_3));
}
}