//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.helpers;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.time.DayOfWeek;
import java.time.Month;
import java.time.Year;
import org.junit.Test;
import uk.gov.dstl.baleen.annotators.helpers.DateTimeUtils;
public class DateTimeUtilsTest {
@Test
public void testAsDay() {
assertDayOfWeek(DayOfWeek.MONDAY, "mon", "Mon", "Monday");
assertDayOfWeek(DayOfWeek.TUESDAY, "tue", "TuES", "Tuesday");
assertDayOfWeek(DayOfWeek.WEDNESDAY, "Wed", "Wednesday");
assertDayOfWeek(DayOfWeek.THURSDAY, "Thur", "THUrs", "Thursday");
assertDayOfWeek(DayOfWeek.FRIDAY, "Fri", "FRIday", "Friday");
assertDayOfWeek(DayOfWeek.SATURDAY, "sAt", "Sat", "Saturday");
assertDayOfWeek(DayOfWeek.SUNDAY, "sun", "SUN", "Sunday");
assertDayOfWeek(null, "m", "t", "w", "tuesnesday");
}
private void assertDayOfWeek(DayOfWeek expected, String... strings) {
for(String s: strings) {
assertEquals(expected, DateTimeUtils.asDay(s));
}
}
private void assertMonth(Month expected, String... strings) {
for(String s: strings) {
assertEquals(expected, DateTimeUtils.asMonth(s));
}
}
@Test
public void testAsMonth() {
assertMonth(Month.JANUARY,"Jan","January","1","01");
assertMonth(Month.FEBRUARY,"Feb", "FebUARy","2","02", "FEBRUARY");
assertMonth(Month.MARCH,"Mar", "March","3","03");
assertMonth(Month.APRIL,"Apr", "AprIL","4","04");
assertMonth(Month.MAY,"May","5","05");
assertMonth(Month.JUNE,"Jun","June","6","06");
assertMonth(Month.JULY,"Jul", "July","7","07");
assertMonth(Month.AUGUST,"Aug", "AugUST","8","08");
assertMonth(Month.SEPTEMBER,"Sep", "SePT", "September","9","09");
assertMonth(Month.OCTOBER,"oct", "October","10");
assertMonth(Month.NOVEMBER,"NoV", "November","11");
assertMonth(Month.DECEMBER,"dec", "December", "Christmas","12");
assertMonth(null,"ma","j","movember","0","13");
}
@Test
public void testAsYear(){
assertEquals(Year.of(2006), DateTimeUtils.asYear("2006"));
assertEquals(Year.of(2006), DateTimeUtils.asYear("06"));
assertEquals(Year.of(1984), DateTimeUtils.asYear("'84"));
assertNull(DateTimeUtils.asYear("last year"));
}
@Test
public void testSuffixCorrect(){
assertTrue(DateTimeUtils.suffixCorrect(3, ""));
assertTrue(DateTimeUtils.suffixCorrect(3, null));
assertTrue(DateTimeUtils.suffixCorrect(1, "st"));
assertTrue(DateTimeUtils.suffixCorrect(21, "st"));
assertTrue(DateTimeUtils.suffixCorrect(2, "nd"));
assertTrue(DateTimeUtils.suffixCorrect(22, "nd"));
assertTrue(DateTimeUtils.suffixCorrect(3, "rd"));
assertTrue(DateTimeUtils.suffixCorrect(23, "rd"));
assertTrue(DateTimeUtils.suffixCorrect(1642341, "st"));
assertTrue(DateTimeUtils.suffixCorrect(11, "th"));
assertTrue(DateTimeUtils.suffixCorrect(2011, "th"));
assertFalse(DateTimeUtils.suffixCorrect(1, "th"));
assertFalse(DateTimeUtils.suffixCorrect(2, "rd"));
assertFalse(DateTimeUtils.suffixCorrect(3, "st"));
assertFalse(DateTimeUtils.suffixCorrect(4, "nd"));
assertFalse(DateTimeUtils.suffixCorrect(11, "st"));
assertFalse(DateTimeUtils.suffixCorrect(12, "nd"));
assertFalse(DateTimeUtils.suffixCorrect(13, "rd"));
assertFalse(DateTimeUtils.suffixCorrect(2011, "st"));
assertFalse(DateTimeUtils.suffixCorrect(2012, "nd"));
assertFalse(DateTimeUtils.suffixCorrect(2013, "rd"));
}
}