package net.time4j.sql;
import net.time4j.ClockUnit;
import net.time4j.Moment;
import net.time4j.PlainDate;
import net.time4j.PlainTime;
import net.time4j.PlainTimestamp;
import net.time4j.scale.TimeScale;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class JDBCAdapterTest {
static {
System.setProperty("net.time4j.sql.utc.conversion", "true");
}
@Test
public void sqlDateToTime4J() {
assertThat(
JDBCAdapter.SQL_DATE.translate(new java.sql.Date(86400 * 1000L)),
is(PlainDate.of(1970, 1, 2)));
}
@Test
public void sqlDateFromTime4J() {
assertThat(
JDBCAdapter.SQL_DATE.from(PlainDate.of(1970, 1, 2)),
is(new java.sql.Date(86400 * 1000L)));
}
@Test
public void sqlTimeToTime4J() {
assertThat(
JDBCAdapter.SQL_TIME.translate(
new java.sql.Time(86400 * 1000L - 1)),
is(PlainTime.of(23, 59, 59, 999000000)));
}
@Test
public void sqlTimeFromTime4J() {
assertThat(
JDBCAdapter.SQL_TIME.from(
PlainTime.of(23, 59, 59, 999000000)),
is(new java.sql.Time(86400 * 1000L - 1)));
}
@Test
public void sqlTimestampToTime4J() {
java.sql.Timestamp ts =
new java.sql.Timestamp(1341100800L * 1000);
ts.setNanos(210);
assertThat(
JDBCAdapter.SQL_TIMESTAMP.translate(ts),
is(
PlainTimestamp.of(2012, 7, 1, 0, 0, 0)
.plus(210, ClockUnit.NANOS)));
}
@Test
public void sqlTimestampFromTime4J() {
java.sql.Timestamp ts =
new java.sql.Timestamp(1341100800L * 1000);
ts.setNanos(210);
assertThat(
JDBCAdapter.SQL_TIMESTAMP.from(
PlainTimestamp.of(2012, 7, 1, 0, 0, 0)
.plus(210, ClockUnit.NANOS)),
is(ts));
}
@Test
public void sqlTimestampWithZoneToTime4J() {
java.sql.Timestamp ts =
new java.sql.Timestamp(1341100800L * 1000);
ts.setNanos(210);
assertThat(
JDBCAdapter.SQL_TIMESTAMP_WITH_ZONE.translate(ts),
is(Moment.of(1341100800L, 210, TimeScale.POSIX)));
}
@Test
public void sqlTimestampWithZoneFromTime4J() {
java.sql.Timestamp ts =
new java.sql.Timestamp(1341100800L * 1000);
ts.setNanos(210);
assertThat(
JDBCAdapter.SQL_TIMESTAMP_WITH_ZONE.from(Moment.of(1341100800L, 210, TimeScale.POSIX)),
is(ts));
}
}