package de.invesdwin.util.time.duration; import javax.annotation.concurrent.Immutable; import org.junit.Test; import de.invesdwin.util.assertions.Assertions; import de.invesdwin.util.time.Instant; import de.invesdwin.util.time.fdate.FDate; import de.invesdwin.util.time.fdate.FTimeUnit; @Immutable public class DurationTest { @Test public void testDuration() { final Instant now = new Instant(); Assertions.assertThat(new Duration(now, now, FTimeUnit.NANOSECONDS).intValue()).isZero(); final Instant earlier = new Instant(0, FTimeUnit.NANOSECONDS); final Instant later = new Instant(1, FTimeUnit.NANOSECONDS); Assertions.assertThat(new Duration(earlier, later, FTimeUnit.NANOSECONDS).intValue()).isEqualTo(1); Assertions.assertThat(new Duration(later, earlier, FTimeUnit.NANOSECONDS).intValue()).isEqualTo(-1); } @Test public void testIsGreaterThan() throws InterruptedException { final Instant start = new Instant(); start.sleepRelative(10, FTimeUnit.MILLISECONDS); Assertions.assertThat(new Duration(start).isGreaterThan(5, FTimeUnit.MILLISECONDS)).isTrue(); Assertions.assertThat( new Duration(start, new Instant(0, FTimeUnit.MILLISECONDS)).isGreaterThan(5, FTimeUnit.MILLISECONDS)) .isFalse(); } @Test public void testIsGreaterThanFDate() throws InterruptedException { final FDate start = new FDate().addMinutes(-1); Assertions.assertThat(new Duration(start).isGreaterThan(55, FTimeUnit.SECONDS)).isTrue(); Assertions.assertThat(new Duration(start).isGreaterThan(65, FTimeUnit.SECONDS)).isFalse(); } @Test public void testEquals() { new Duration(1, FTimeUnit.DAYS).equals(new Duration(1, FTimeUnit.DAYS)); } @Test public void testToString() { Assertions.assertThat(new Duration(0, FTimeUnit.DAYS).toString()).isEqualTo("P0"); final FDate date = new FDate(); Assertions.assertThat(new Duration(date, date.addDays(1)).toString()).isEqualTo("P1D"); Assertions.assertThat(new Duration(date.addDays(1), date).toString()).isEqualTo("-P1D"); Assertions.assertThat(new Duration(66, FTimeUnit.MINUTES).toString(FTimeUnit.HOURS)).isEqualTo("PT1H"); Assertions.assertThat(new Duration(-66, FTimeUnit.MINUTES).toString(FTimeUnit.HOURS)).isEqualTo("-PT1H"); Assertions.assertThat(new Duration(-66, FTimeUnit.MINUTES).toString(FTimeUnit.DAYS)).isEqualTo("P0"); Assertions.assertThat(new Duration(10, FTimeUnit.MINUTES).toString()).isEqualTo("PT10M"); } }