package io.ebeaninternal.server.type; import io.ebean.text.TextException; import org.junit.Test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.math.BigDecimal; import java.time.Duration; import static org.junit.Assert.*; public class ScalarTypeDurationWithNanosTest { ScalarTypeDurationWithNanos type = new ScalarTypeDurationWithNanos(); @Test public void testReadData() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); ByteArrayOutputStream os = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(os); type.writeData(out, duration); type.writeData(out, null); out.flush(); out.close(); ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); ObjectInputStream in = new ObjectInputStream(is); Duration val1 = type.readData(in); Duration val2 = type.readData(in); assertEquals(duration, val1); assertNull(val2); } @Test public void testToJdbcType() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); BigDecimal bigDecimal = DecimalUtils.toDecimal(duration); Object val1 = type.toJdbcType(duration); Object val2 = type.toJdbcType(bigDecimal); assertEquals(bigDecimal, val1); assertEquals(bigDecimal, val2); } @Test public void testToBeanType() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); BigDecimal bigDecimal = DecimalUtils.toDecimal(duration); Duration val1 = type.toBeanType(duration); Duration val2 = type.toBeanType(bigDecimal); assertEquals(duration, val1); assertEquals(duration, val2); } @Test public void testFormatValue() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); String formatValue = type.formatValue(duration); assertEquals("PT5M23.0015S", formatValue); } @Test public void testParse() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); Duration val1 = type.parse("PT5M23.0015S"); assertEquals(duration, val1); } @Test public void testIsDateTimeCapable() throws Exception { assertFalse(type.isDateTimeCapable()); } @Test(expected = TextException.class) public void testConvertFromMillis() throws Exception { type.convertFromMillis(1000); } @Test public void testJsonRead() throws Exception { Duration duration = Duration.ofSeconds(323, 1500000); JsonTester jsonTester = new JsonTester(type); jsonTester.test(duration); } }