/*
* Copyright 2011-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package kr.debop4j.timeperiod.test.tools;
import kr.debop4j.timeperiod.YearAndWeek;
import kr.debop4j.timeperiod.test.TimePeriodTestBase;
import kr.debop4j.timeperiod.tools.TimeSpec;
import kr.debop4j.timeperiod.tools.Times;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.junit.Test;
import static kr.debop4j.timeperiod.tools.Times.*;
import static org.fest.assertions.Assertions.assertThat;
/**
* kr.debop4j.timeperiod.test.tools.TimesCompareTest
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 13. 5. 23. 오후 9:33
*/
@Slf4j
public class TimesCompareTest extends TimePeriodTestBase {
@Test
public void isSameYearTest() {
assertThat(isSameYear(testDate, testNow)).isFalse();
assertThat(isSameYear(asDate(2000, 4, 1), asDate(2000, 12, 31))).isTrue();
}
@Test
public void isSameHalfyearTest() {
assertThat(isSameHalfyear(asDate(2000, 1, 1), asDate(2000, 6, 30))).isTrue();
assertThat(isSameHalfyear(asDate(2000, 7, 1), asDate(2000, 12, 31))).isTrue();
assertThat(isSameHalfyear(asDate(2000, 1, 1), asDate(2000, 7, 1))).isFalse();
assertThat(isSameHalfyear(asDate(2000, 7, 1), asDate(2001, 1, 1))).isFalse();
}
@Test
public void isSameQuarterTest() {
assertThat(isSameQuarter(asDate(2000, 1, 1), asDate(2000, 3, 31))).isTrue();
assertThat(isSameQuarter(asDate(2000, 4, 1), asDate(2000, 6, 30))).isTrue();
assertThat(isSameQuarter(asDate(2000, 7, 1), asDate(2000, 9, 30))).isTrue();
assertThat(isSameQuarter(asDate(2000, 10, 1), asDate(2000, 12, 31))).isTrue();
assertThat(isSameQuarter(asDate(2000, 1, 1), asDate(2000, 4, 1))).isFalse();
assertThat(isSameQuarter(asDate(2000, 4, 1), asDate(2000, 7, 1))).isFalse();
assertThat(isSameQuarter(asDate(2000, 7, 1), asDate(2000, 10, 1))).isFalse();
assertThat(isSameQuarter(asDate(2000, 10, 1), asDate(2001, 1, 1))).isFalse();
}
@Test
public void isSameMonthTest() {
assertThat(isSameMonth(testDate, testDiffDate)).isFalse();
assertThat(isSameMonth(asDate(2000, 10, 1), asDate(2000, 10, 31))).isTrue();
assertThat(isSameMonth(asDate(2000, 10, 1), asDate(2000, 10, 1))).isTrue();
assertThat(isSameMonth(asDate(2000, 10, 1), asDate(2000, 11, 1))).isFalse();
assertThat(isSameMonth(asDate(2000, 10, 1), asDate(2000, 9, 30))).isFalse();
}
@Test
public void isSameWeekTest() {
DateTime prevWeek = testDate.minusDays(TimeSpec.DaysPerWeek + 1);
DateTime nextWeek = testDate.plusDays(TimeSpec.DaysPerWeek + 1);
YearAndWeek yw = Times.getWeekOfYear(testDate);
DateTime startOfWeek = Times.getStartOfYearWeek(yw.getYear(), yw.getWeekOfYear());
assertThat(isSameWeek(testDate, startOfWeek)).isTrue();
assertThat(isSameWeek(testDate, testDate)).isTrue();
assertThat(isSameWeek(testDiffDate, testDiffDate)).isTrue();
assertThat(isSameWeek(testDate, testDiffDate)).isFalse();
assertThat(isSameWeek(testDate, prevWeek)).isFalse();
assertThat(isSameWeek(testDate, nextWeek)).isFalse();
}
@Test
public void isSameDayTest() {
assertThat(isSameDay(testDate, testDiffDate)).isFalse();
assertThat(isSameDay(asDate(2000, 10, 19), asDate(2000, 10, 19))).isTrue();
assertThat(isSameDay(asDate(2000, 10, 19), endTimeOfDay(asDate(2000, 10, 19)))).isTrue();
assertThat(isSameDay(asDate(1999, 10, 19), asDate(2000, 10, 19))).isFalse();
assertThat(isSameDay(asDate(2000, 10, 18), asDate(2000, 10, 19))).isFalse();
assertThat(isSameDay(asDate(2000, 10, 19), asDate(2000, 10, 20))).isFalse();
}
@Test
public void isSameHourTest() {
assertThat(isSameHour(testDate, testDiffDate)).isFalse();
assertThat(isSameHour(new DateTime(2000, 10, 19, 18, 0, 0), new DateTime(2000, 10, 19, 18, 0, 0))).isTrue();
assertThat(isSameHour(new DateTime(2000, 10, 19, 18, 0, 0), new DateTime(2000, 10, 19, 18, 10, 10))).isTrue();
assertThat(isSameHour(new DateTime(2000, 10, 19, 18, 0, 0), new DateTime(2000, 10, 19, 1, 0, 0))).isFalse();
}
@Test
public void isSameMinuteTest() {
assertThat(isSameMinute(testDate, testDiffDate)).isFalse();
assertThat(isSameMinute(new DateTime(2000, 10, 19, 18, 5, 0), new DateTime(2000, 10, 19, 18, 5, 0))).isTrue();
assertThat(isSameMinute(new DateTime(2000, 10, 19, 18, 10, 0), new DateTime(2000, 10, 19, 18, 10, 10))).isTrue();
assertThat(isSameMinute(new DateTime(2000, 10, 19, 18, 10, 0), new DateTime(2000, 10, 19, 1, 10, 0))).isFalse();
}
@Test
public void isSameSecondTest() {
assertThat(isSameSecond(testDate, testDiffDate)).isFalse();
assertThat(isSameSecond(new DateTime(2000, 10, 19, 18, 5, 0), new DateTime(2000, 10, 19, 18, 5, 0))).isTrue();
assertThat(isSameSecond(new DateTime(2000, 10, 19, 18, 10, 0), new DateTime(2000, 10, 19, 18, 10, 10))).isFalse();
assertThat(isSameSecond(new DateTime(2000, 10, 19, 18, 10, 0), new DateTime(2000, 10, 19, 1, 10, 0))).isFalse();
}
}