package com.supaham.commons;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import com.supaham.commons.exceptions.DurationParseException;
import com.supaham.commons.utils.TimeUtils;
import org.junit.Assert;
import org.junit.Test;
import java.time.LocalTime;
/**
* Created by Ali on 09/02/2015.
*/
public class TimeUtilsTest {
@Test
public void testElapsed() throws Exception {
assertFalse(TimeUtils.elapsed(System.currentTimeMillis(), 400));
assertTrue(TimeUtils.elapsed(System.currentTimeMillis() - 1001, 1000));
}
@Test
public void testParse() throws Exception {
long duration = TimeUtils.parseDuration("1h");
Assert.assertEquals(3600, duration);
duration = TimeUtils.parseDuration("1d1h1m1s");
Assert.assertEquals(86400 + 3600 + 60 + 1, duration);
}
@Test
public void testParseMs() throws Exception {
long duration = TimeUtils.parseDurationMs("1h");
Assert.assertEquals(3600 * 1000, duration);
duration = TimeUtils.parseDurationMs("1d1h1m1s3ms");
Assert.assertEquals((86400 + 3600 + 60 + 1) * 1000 + 3, duration);
duration = TimeUtils.parseDurationMs("0.5s");
Assert.assertEquals((0.5) * 1000, duration, 0.000001);
}
@Test(expected = DurationParseException.class)
public void testParseMsError() throws Exception {
long duration = TimeUtils.parseDurationMs("1x");
}
@Test
public void testTime() throws Exception {
Assert.assertEquals(LocalTime.MIDNIGHT, TimeUtils.parseTime("0"));
Assert.assertEquals(LocalTime.of(1, 0), TimeUtils.parseTime("1"));
Assert.assertEquals(LocalTime.of(1, 0), TimeUtils.parseTime("1AM"));
Assert.assertEquals(LocalTime.of(13, 0), TimeUtils.parseTime("1PM"));
// AM parsing
Assert.assertEquals(LocalTime.of(0, 0), TimeUtils.parseTime("12AM"));
Assert.assertEquals(LocalTime.of(0, 0), TimeUtils.parseTime("12:00AM"));
Assert.assertEquals(LocalTime.of(0, 0), TimeUtils.parseTime("12:00:00AM"));
Assert.assertEquals(LocalTime.of(0, 34), TimeUtils.parseTime("12:34AM"));
Assert.assertEquals(LocalTime.of(0, 34, 56), TimeUtils.parseTime("12:34:56AM"));
Assert.assertEquals(LocalTime.of(0, 0, 30), TimeUtils.parseTime("12:00:30AM"));
// PM parsing
Assert.assertEquals(LocalTime.of(12, 0), TimeUtils.parseTime("12PM"));
Assert.assertEquals(LocalTime.of(12, 0), TimeUtils.parseTime("12:00PM"));
Assert.assertEquals(LocalTime.of(12, 0), TimeUtils.parseTime("12:00:00PM"));
Assert.assertEquals(LocalTime.of(12, 34), TimeUtils.parseTime("12:34PM"));
Assert.assertEquals(LocalTime.of(12, 34, 56), TimeUtils.parseTime("12:34:56PM"));
Assert.assertEquals(LocalTime.of(12, 0, 30), TimeUtils.parseTime("12:00:30PM"));
// Insensitive letter casing
Assert.assertEquals(LocalTime.of(0, 0, 30), TimeUtils.parseTime("12:00:30A.M."));
Assert.assertEquals(LocalTime.of(0, 0, 30), TimeUtils.parseTime("12:00:30a.m."));
Assert.assertEquals(LocalTime.of(0, 0, 30), TimeUtils.parseTime("12:00:30A.m."));
Assert.assertEquals(LocalTime.of(0, 0, 30), TimeUtils.parseTime("12:00:30a.M."));
Assert.assertEquals(LocalTime.of(12, 0, 30), TimeUtils.parseTime("12:00:30P.M."));
Assert.assertEquals(LocalTime.of(12, 0, 30), TimeUtils.parseTime("12:00:30p.m."));
Assert.assertEquals(LocalTime.of(12, 0, 30), TimeUtils.parseTime("12:00:30P.m."));
Assert.assertEquals(LocalTime.of(12, 0, 30), TimeUtils.parseTime("12:00:30p.M."));
}
}