package de.invesdwin.util.time; import javax.annotation.concurrent.Immutable; import org.junit.Test; import de.invesdwin.util.assertions.Assertions; import de.invesdwin.util.time.duration.Duration; import de.invesdwin.util.time.fdate.FTimeUnit; @Immutable public class InstantTest { @Test public void testSleepLoop() throws InterruptedException { final int sleep = 1; final int iterations = 1000; final Instant start = new Instant(); Instant lastIteration = new Instant(); for (int i = 0; i < iterations; i++) { FTimeUnit.MICROSECONDS.sleep(1); lastIteration.sleepRelative(sleep, FTimeUnit.MILLISECONDS); lastIteration = new Instant(); } final Instant ende = new Instant(); System.out.println(String.format("Duration in millis: " //SUPPRESS CHECKSTYLE single line + new Duration(start, ende).toString(FTimeUnit.MILLISECONDS))); Assertions.assertThat(new Duration(start, ende).isGreaterThan(iterations, FTimeUnit.MILLISECONDS)).isTrue(); Assertions.assertThat(new Duration(start, ende).isGreaterThan((iterations * 3), FTimeUnit.MILLISECONDS)) .isFalse(); } @Test public void testSleep() throws InterruptedException { final Instant start = new Instant(); FTimeUnit.SECONDS.sleep(1); final Duration dauer1 = new Duration(start, FTimeUnit.SECONDS); Assertions.assertThat(dauer1.intValue()).isEqualTo(1); Assertions.assertThat(dauer1.toString()).isEqualTo("PT1S"); start.sleepRelative(2, FTimeUnit.SECONDS); final Duration dauer2 = new Duration(start, FTimeUnit.SECONDS); Assertions.assertThat(dauer2.intValue()).isEqualTo(2); Assertions.assertThat(dauer2.toString()).isEqualTo("PT2S"); } }