package net.time4j.scale;
import net.time4j.ClockUnit;
import net.time4j.Moment;
import net.time4j.PlainDate;
import net.time4j.PlainTime;
import net.time4j.PlainTimestamp;
import net.time4j.SI;
import net.time4j.tz.Timezone;
import net.time4j.tz.ZonalOffset;
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 MomentCreationTest {
@Test
public void inStdTimezone() {
PlainTimestamp tsp = PlainTimestamp.of(
PlainDate.of(2015, 8, 31),
PlainTime.of(23, 59, 59, 123456789));
assertThat(
tsp.inStdTimezone(),
is(tsp.in(Timezone.ofSystem())));
}
@Test
public void leapsecond_2012_06_30() {
assertThat(
Moment.of(1278028824, TimeScale.UTC),
is(
PlainTimestamp.of(
PlainDate.of(2012, 6, 30),
PlainTime.of(23, 59, 59)
).inTimezone(ZonalOffset.UTC).plus(1, SI.SECONDS)));
}
@Test
public void leapsecond_2012_06_30_fraction() {
assertThat(
Moment.of(1278028824, 123456789, TimeScale.UTC),
is(
PlainTimestamp.of(
PlainDate.of(2012, 6, 30),
PlainTime.of(23, 59, 59, 123456789)
).inTimezone(ZonalOffset.UTC).plus(1, SI.SECONDS)));
}
@Test
public void midnightUTC_fraction_1() {
assertThat(
Moment.of(1277942424, 123456789, TimeScale.UTC),
is(
PlainDate.of(2012, 6, 30).atStartOfDay()
.plus(123456789, ClockUnit.NANOS).atUTC()));
}
@Test
public void midnightUTC_fraction_2() {
assertThat(
Moment.of(1277942424, 999999999, TimeScale.UTC),
is(
PlainDate.of(2012, 6, 30).atStartOfDay()
.plus(999999999, ClockUnit.NANOS).atUTC()));
}
@Test
public void epochPOSIX() {
assertThat(
Moment.of(1277942400 + 2 * 365 * 86400, TimeScale.POSIX),
is(PlainDate.of(2012, 6, 30).atStartOfDay().atUTC()));
assertThat(
Moment.of(0, TimeScale.POSIX),
is(PlainDate.of(1970, 1, 1).atStartOfDay().atUTC()));
}
@Test
public void epochUTC() {
assertThat(
Moment.of(1277942424, TimeScale.UTC),
is(PlainDate.of(2012, 6, 30).atStartOfDay().atUTC()));
assertThat(
Moment.of(0, TimeScale.UTC),
is(PlainDate.of(1972, 1, 1).atStartOfDay().atUTC()));
}
@Test
public void epochGPS() {
assertThat(
Moment.of(0, TimeScale.GPS),
is(PlainDate.of(1980, 1, 6).atStartOfDay().atUTC()));
}
@Test
public void epochTAI() {
assertThat(
Moment.of(10, TimeScale.TAI),
is(PlainDate.of(1972, 1, 1).atStartOfDay().atUTC()));
}
}