package org.javacore.time;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.fail;
public class DurationTest {
@Test
public void testCombineTimeUtil() throws Exception {
Assert.assertEquals(Duration.days(1).toMilliseconds(), 24 * 3600 * 1000);
Assert.assertEquals(24 * 3600 * 1000 * 3, Duration.days(3).toMilliseconds());
Assert.assertEquals(7 * 24 * 3600 * 1000 / 1000, Duration.days(7).toSeconds());
}
@Test
public void testValidDurationStrings() throws Exception {
Assert.assertEquals(Duration.of("5ns"), Duration.nanoseconds(5));
Assert.assertEquals(Duration.of("5microsecond"), Duration.microseconds(5));
Assert.assertEquals(Duration.of("5milliseconds"), Duration.millis(5));
Assert.assertEquals(Duration.of("5 seconds"), Duration.seconds(5));
Assert.assertEquals(Duration.of("5 minutes"), Duration.mins(5));
Assert.assertEquals(Duration.of("5 hours"), Duration.hours(5));
Assert.assertEquals(Duration.of("5 days"), Duration.days(5));
Assert.assertEquals(Duration.of("inf"), Duration.inf());
Assert.assertEquals(Duration.of("infinite"), Duration.inf());
Assert.assertEquals(Duration.of("∞"), Duration.infinite());
// Interesting value but legal nevertheless
Assert.assertEquals(Duration.of("0s"), Duration.seconds(0));
}
private void testInvalidDurationString(String duration) {
try {
Duration.of(duration);
fail("Duration string '" + duration + "' should not parse correctly.");
} catch (IllegalArgumentException iae) {
// Expected
}
}
@Test
public void testInvalidDurationStrings() {
testInvalidDurationString("foobar");
testInvalidDurationString("ms3");
testInvalidDurationString("34 lightyears");
testInvalidDurationString("34 seconds a day");
testInvalidDurationString("5 days a week");
testInvalidDurationString("");
testInvalidDurationString("2");
testInvalidDurationString("ns");
}
@Test
public void testReplaceOldTimeUtils() {
final int HOUR = 1000 * 60 * 60;
long randomTimestamp = (long) (Math.random() * 400000000L) + 100000;
Assert.assertEquals(randomTimestamp / HOUR, Duration.millis(randomTimestamp).toHours());
Assert.assertEquals(randomTimestamp / 1000, Duration.millis(randomTimestamp).toSeconds());
}
}