/*
* 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.Halfyear;
import kr.debop4j.timeperiod.test.TimePeriodTestBase;
import kr.debop4j.timeperiod.timerange.HalfyearRange;
import kr.debop4j.timeperiod.timerange.HalfyearRangeCollection;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.junit.Test;
import java.util.List;
import static kr.debop4j.timeperiod.tools.Times.asDate;
import static kr.debop4j.timeperiod.tools.Times.getYearOf;
import static org.fest.assertions.Assertions.assertThat;
/**
* kr.debop4j.timeperiod.test.timeranges.HalfyearRangeCollectionTest
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 13. 5. 25. 오후 4:42
*/
@Slf4j
public class HalfyearRangeCollectionTest extends TimePeriodTestBase {
@Test
public void yearBaseMonthTest() {
DateTime moment = asDate(2009, 2, 15);
int year = getYearOf(moment.getYear(), moment.getMonthOfYear());
HalfyearRangeCollection halfyears = new HalfyearRangeCollection(moment, 3);
assertThat(halfyears.getYearBaseMonth()).isEqualTo(1);
assertThat(halfyears.getStart()).isEqualTo(asDate(year, 1, 1));
}
@Test
public void singleHalfyearTest() {
final int startYear = 2004;
final Halfyear startHalfyear = Halfyear.Second;
HalfyearRangeCollection halfyears = new HalfyearRangeCollection(startYear, startHalfyear, 1);
assertThat(halfyears.getYearBaseMonth()).isEqualTo(1);
assertThat(halfyears.getHalfyearCount()).isEqualTo(1);
assertThat(halfyears.getBaseYear()).isEqualTo(startYear);
assertThat(halfyears.getStartHalfyear()).isEqualTo(startHalfyear);
assertThat(halfyears.getEndYear()).isEqualTo(startYear);
assertThat(halfyears.getEndHalfyear()).isEqualTo(startHalfyear);
List<HalfyearRange> halfyearList = halfyears.getHalfyears();
assertThat(halfyearList.size()).isEqualTo(1);
assertThat(halfyearList.get(0).isSamePeriod(new HalfyearRange(2004, Halfyear.Second))).isTrue();
}
@Test
public void firstCalendarHalfyears() {
final int startYear = 2004;
final Halfyear startHalfyear = Halfyear.First;
final int halfyearCount = 3;
HalfyearRangeCollection halfyears = new HalfyearRangeCollection(startYear, startHalfyear, halfyearCount);
assertThat(halfyears.getYearBaseMonth()).isEqualTo(1);
assertThat(halfyears.getHalfyearCount()).isEqualTo(halfyearCount);
assertThat(halfyears.getBaseYear()).isEqualTo(startYear);
assertThat(halfyears.getStartHalfyear()).isEqualTo(startHalfyear);
assertThat(halfyears.getEndYear()).isEqualTo(startYear + 1);
assertThat(halfyears.getEndHalfyear()).isEqualTo(Halfyear.First);
List<HalfyearRange> halfyearList = halfyears.getHalfyears();
assertThat(halfyearList.size()).isEqualTo(halfyearCount);
assertThat(halfyearList.get(0).isSamePeriod(new HalfyearRange(2004, Halfyear.First))).isTrue();
assertThat(halfyearList.get(1).isSamePeriod(new HalfyearRange(2004, Halfyear.Second))).isTrue();
assertThat(halfyearList.get(2).isSamePeriod(new HalfyearRange(2005, Halfyear.First))).isTrue();
}
@Test
public void secondCalendarHalfyears() {
final int startYear = 2004;
final Halfyear startHalfyear = Halfyear.Second;
final int halfyearCount = 3;
HalfyearRangeCollection halfyears = new HalfyearRangeCollection(startYear, startHalfyear, halfyearCount);
assertThat(halfyears.getYearBaseMonth()).isEqualTo(1);
assertThat(halfyears.getHalfyearCount()).isEqualTo(halfyearCount);
assertThat(halfyears.getBaseYear()).isEqualTo(startYear);
assertThat(halfyears.getStartHalfyear()).isEqualTo(startHalfyear);
assertThat(halfyears.getEndYear()).isEqualTo(startYear + 1);
assertThat(halfyears.getEndHalfyear()).isEqualTo(Halfyear.Second);
List<HalfyearRange> halfyearList = halfyears.getHalfyears();
assertThat(halfyearList.size()).isEqualTo(halfyearCount);
assertThat(halfyearList.get(0).isSamePeriod(new HalfyearRange(2004, Halfyear.Second))).isTrue();
assertThat(halfyearList.get(1).isSamePeriod(new HalfyearRange(2005, Halfyear.First))).isTrue();
assertThat(halfyearList.get(2).isSamePeriod(new HalfyearRange(2005, Halfyear.Second))).isTrue();
}
}