package com.spotify.heroic.common; import com.fasterxml.jackson.databind.ObjectMapper; import com.spotify.heroic.HeroicMappers; import com.spotify.heroic.grammar.QueryParser; import com.spotify.heroic.test.FakeModuleLoader; import org.junit.Test; import org.mockito.Mockito; import java.io.IOException; import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; public class DurationTest { private ObjectMapper mapper = FakeModuleLoader.builder().build().json(); @Test public void testShorthandDurationSerializer() throws IOException { assertEquals(Duration.of(1, TimeUnit.MILLISECONDS), mapper.readValue("\"1ms\"", Duration.class)); assertEquals(Duration.of(2, TimeUnit.MILLISECONDS), mapper.readValue("\"2ms\"", Duration.class)); assertEquals(Duration.of(1, TimeUnit.SECONDS), mapper.readValue("\"1s\"", Duration.class)); assertEquals(Duration.of(1, TimeUnit.MINUTES), mapper.readValue("\"1m\"", Duration.class)); assertEquals(Duration.of(1, TimeUnit.HOURS), mapper.readValue("\"1H\"", Duration.class)); assertEquals(Duration.of(14, TimeUnit.DAYS), mapper.readValue("\"2w\"", Duration.class)); assertEquals(Duration.of(3600, TimeUnit.MILLISECONDS), mapper.readValue("3600", Duration.class)); assertEquals(Duration.of(3600, TimeUnit.MILLISECONDS), mapper.readValue("\"3600\"", Duration.class)); } @Test public void testFallbackDurationSerializer() throws IOException { final Duration reference = Duration.of(1, TimeUnit.MICROSECONDS); final String value = mapper.writeValueAsString(reference); assertEquals(reference, mapper.readValue(value, Duration.class)); } }