/* * 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.timeranges; import kr.debop4j.timeperiod.TimeCalendar; import kr.debop4j.timeperiod.test.TimePeriodTestBase; import kr.debop4j.timeperiod.timerange.HourRange; import kr.debop4j.timeperiod.timerange.MinuteRange; 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 java.util.List; import static org.fest.assertions.Assertions.assertThat; /** * kr.debop4j.timeperiod.test.timeranges.MinuteRangeTest * * @author 배성혁 sunghyouk.bae@gmail.com * @since 13. 5. 25. 오후 9:43 */ @Slf4j public class MinuteRangeTest extends TimePeriodTestBase { @Test public void initValues() { DateTime now = Times.now(); DateTime firstMin = Times.trimToSecond(now); DateTime secondMin = firstMin.plusMinutes(1); MinuteRange minRange = new MinuteRange(now, TimeCalendar.getEmptyOffset()); assertThat(minRange.getStart().getYear()).isEqualTo(firstMin.getYear()); assertThat(minRange.getStart().getMonthOfYear()).isEqualTo(firstMin.getMonthOfYear()); assertThat(minRange.getStart().getDayOfMonth()).isEqualTo(firstMin.getDayOfMonth()); assertThat(minRange.getStart().getMinuteOfHour()).isEqualTo(firstMin.getMinuteOfHour()); assertThat(minRange.getStart().getSecondOfMinute()).isEqualTo(0); assertThat(minRange.getStart().getMillisOfSecond()).isEqualTo(0); assertThat(minRange.getEnd().getYear()).isEqualTo(secondMin.getYear()); assertThat(minRange.getEnd().getMonthOfYear()).isEqualTo(secondMin.getMonthOfYear()); assertThat(minRange.getEnd().getDayOfMonth()).isEqualTo(secondMin.getDayOfMonth()); assertThat(minRange.getEnd().getMinuteOfHour()).isEqualTo(secondMin.getMinuteOfHour()); assertThat(minRange.getEnd().getSecondOfMinute()).isEqualTo(0); assertThat(minRange.getEnd().getMillisOfSecond()).isEqualTo(0); } @Test public void defaultCalendar() { DateTime now = Times.now(); DateTime today = Times.today(); for (int m = 0; m < TimeSpec.MinutesPerHour; m++) { MinuteRange minRange = new MinuteRange(today.plusMinutes(m)); assertThat(minRange.getYear()).isEqualTo(today.getYear()); assertThat(minRange.getMonthOfYear()).isEqualTo(today.getMonthOfYear()); assertThat(minRange.getDayOfMonth()).isEqualTo(today.getDayOfMonth()); assertThat(minRange.getHourOfDay()).isEqualTo(today.getHourOfDay()); assertThat(minRange.getMinuteOfHour()).isEqualTo(m); assertThat(minRange.getStart()).isEqualTo(minRange.getTimeCalendar().mapStart(today.plusMinutes(m))); assertThat(minRange.getEnd()).isEqualTo(minRange.getTimeCalendar().mapEnd(today.plusMinutes(m + 1))); } } @Test public void constructorTest() { DateTime now = Times.now(); MinuteRange minRange = new MinuteRange(now); assertThat(minRange.getYear()).isEqualTo(now.getYear()); assertThat(minRange.getMonthOfYear()).isEqualTo(now.getMonthOfYear()); assertThat(minRange.getDayOfMonth()).isEqualTo(now.getDayOfMonth()); assertThat(minRange.getHourOfDay()).isEqualTo(now.getHourOfDay()); assertThat(minRange.getMinuteOfHour()).isEqualTo(now.getMinuteOfHour()); minRange = new MinuteRange(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), now.getHourOfDay(), now.getMinuteOfHour()); assertThat(minRange.getYear()).isEqualTo(now.getYear()); assertThat(minRange.getMonthOfYear()).isEqualTo(now.getMonthOfYear()); assertThat(minRange.getDayOfMonth()).isEqualTo(now.getDayOfMonth()); assertThat(minRange.getHourOfDay()).isEqualTo(now.getHourOfDay()); assertThat(minRange.getMinuteOfHour()).isEqualTo(now.getMinuteOfHour()); } @Test public void addHourTest() { MinuteRange minRange = new MinuteRange(); assertThat(minRange.previousMinute().getMinuteOfHour()).isEqualTo(minRange.getStart().plusMinutes(-1).getMinuteOfHour()); assertThat(minRange.nextMinute().getMinuteOfHour()).isEqualTo(minRange.getStart().plusMinutes(1).getMinuteOfHour()); minRange = new MinuteRange(TimeCalendar.getEmptyOffset()); assertThat(minRange.addMinutes(0)).isEqualTo(minRange); MinuteRange prevRange = minRange.previousMinute(); assertThat(minRange.addMinutes(-1).getYear()).isEqualTo(prevRange.getYear()); assertThat(minRange.addMinutes(-1).getMonthOfYear()).isEqualTo(prevRange.getMonthOfYear()); assertThat(minRange.addMinutes(-1).getDayOfMonth()).isEqualTo(prevRange.getDayOfMonth()); assertThat(minRange.addMinutes(-1).getHourOfDay()).isEqualTo(prevRange.getHourOfDay()); assertThat(minRange.addMinutes(-1).getMinuteOfHour()).isEqualTo(prevRange.getMinuteOfHour()); MinuteRange nextRange = minRange.nextMinute(); assertThat(minRange.addMinutes(1).getYear()).isEqualTo(nextRange.getYear()); assertThat(minRange.addMinutes(1).getMonthOfYear()).isEqualTo(nextRange.getMonthOfYear()); assertThat(minRange.addMinutes(1).getDayOfMonth()).isEqualTo(nextRange.getDayOfMonth()); assertThat(minRange.addMinutes(1).getHourOfDay()).isEqualTo(nextRange.getHourOfDay()); assertThat(minRange.addMinutes(1).getMinuteOfHour()).isEqualTo(nextRange.getMinuteOfHour()); for (int m = -100; m < 100; m += 5) { MinuteRange range = minRange.addMinutes(m); MinuteRange range2 = minRange.addMinutes(m); assertThat(range.getYear()).isEqualTo(range2.getYear()); assertThat(range.getMonthOfYear()).isEqualTo(range2.getMonthOfYear()); assertThat(range.getDayOfMonth()).isEqualTo(range2.getDayOfMonth()); assertThat(range.getHourOfDay()).isEqualTo(range2.getHourOfDay()); assertThat(range.getMinuteOfHour()).isEqualTo(range2.getMinuteOfHour()); } } @Test public void getMinutesTest() { HourRange hourRange = new HourRange(); List<MinuteRange> minutes = hourRange.getMinutes(); assertThat(minutes.size()).isEqualTo(TimeSpec.MinutesPerHour); for (int i = 0; i < TimeSpec.MinutesPerHour; i++) { MinuteRange minute = minutes.get(i); assertThat(minute.getStart()).isEqualTo(hourRange.getStart().plusMinutes(i)); assertThat(minute.getUnmappedStart()).isEqualTo(hourRange.getStart().plusMinutes(i)); assertThat(minute.getEnd()).isEqualTo(minute.getTimeCalendar().mapEnd(hourRange.getStart().plusMinutes(i + 1))); assertThat(minute.getUnmappedEnd()).isEqualTo(hourRange.getStart().plusMinutes(i + 1)); } } }