package sample.util;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
import org.junit.Test;
public class DateUtilsTest {
private final LocalDateTime targetDate = LocalDateTime.of(2015, 8, 29, 1, 23, 31);
private final LocalDate targetDay = LocalDate.of(2015, 8, 29);
@Test
public void 初期化検証() {
assertThat(DateUtils.day("2015-08-29"), is(targetDay));
assertThat(
DateUtils.date("2015-08-29T01:23:31", DateTimeFormatter.ISO_LOCAL_DATE_TIME),
is(targetDate));
assertThat(
DateUtils.dateOpt("2015-08-29T01:23:31", DateTimeFormatter.ISO_LOCAL_DATE_TIME),
is(Optional.of(targetDate)));
assertThat(DateUtils.dateOpt(null, DateTimeFormatter.ISO_LOCAL_DATE_TIME), is(Optional.empty()));
assertThat(DateUtils.date("20150829012331", "yyyyMMddHHmmss"), is(targetDate));
assertThat(DateUtils.dateByDay(targetDay), is(LocalDateTime.of(2015, 8, 29, 0, 0, 0)));
assertThat(DateUtils.dateTo(targetDay), is(LocalDateTime.of(2015, 8, 29, 23, 59, 59)));
}
@Test
public void フォーマット検証() {
assertThat(
DateUtils.dateFormat(targetDate, DateTimeFormatter.ISO_LOCAL_TIME), is("01:23:31"));
assertThat(DateUtils.dateFormat(targetDate, "MM/dd HH:mm"), is("08/29 01:23"));
}
@Test
public void サポートユーティリティ検証() {
LocalDate startDay = LocalDate.of(2015, 8, 1);
LocalDate endDay = LocalDate.of(2015, 8, 31);
assertTrue(DateUtils.between(startDay, endDay).isPresent());
assertFalse(DateUtils.between(startDay, null).isPresent());
assertFalse(DateUtils.between(null, endDay).isPresent());
assertThat(DateUtils.between(startDay, endDay).get().getDays(), is(30)); // 31でない点に注意
LocalDateTime startDate = LocalDateTime.of(2015, 8, 1, 01, 23, 31);
LocalDateTime endDate = LocalDateTime.of(2015, 8, 31, 00, 23, 31);
assertTrue(DateUtils.between(startDate, endDate).isPresent());
assertFalse(DateUtils.between(startDate, null).isPresent());
assertFalse(DateUtils.between(null, endDate).isPresent());
assertThat(DateUtils.between(startDate, endDate).get().toDays(), is(29L)); // 30でない点に注意
assertTrue(DateUtils.isWeekend(LocalDate.of(2015, 8, 29)));
assertFalse(DateUtils.isWeekend(LocalDate.of(2015, 8, 28)));
}
}