/* * Copyright 2012 Kazumune Katagiri. (http://d.hatena.ne.jp/nemuzuka) * * 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 jp.co.nemuzuka.utils; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.junit.Test; /** * DateTimeUtilsのテストクラス. * @author kkatagiri */ public class DateTimeUtilsTest { /** * getStartEndDateのテスト * @throws ParseException */ @Test public void testGetStartEndDate() throws ParseException{ SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); List<Date> list = DateTimeUtils.getStartEndDate("201102"); assertThat(list.get(0), is(sdf.parse("20110201"))); assertThat(list.get(1), is(sdf.parse("20110228"))); list = DateTimeUtils.getStartEndDate("201101"); assertThat(list.get(0), is(sdf.parse("20110101"))); assertThat(list.get(1), is(sdf.parse("20110131"))); list = DateTimeUtils.getStartEndDate("201202"); assertThat(list.get(0), is(sdf.parse("20120201"))); assertThat(list.get(1), is(sdf.parse("20120229"))); try { DateTimeUtils.getStartEndDate("201113"); fail(); } catch(RuntimeException e) {} } /** * getStartEndDate4SunDayのテスト * @throws ParseException */ @Test public void testGetStartEndDate4SunDay() throws ParseException{ SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); List<Date> list = DateTimeUtils.getStartEndDate4SunDay("201110"); assertThat(list.get(0), is(sdf.parse("20110925"))); assertThat(list.get(1), is(sdf.parse("20111105"))); list = DateTimeUtils.getStartEndDate4SunDay("201201"); assertThat(list.get(0), is(sdf.parse("20120101"))); assertThat(list.get(1), is(sdf.parse("20120204"))); list = DateTimeUtils.getStartEndDate4SunDay("201112"); assertThat(list.get(0), is(sdf.parse("20111127"))); assertThat(list.get(1), is(sdf.parse("20111231"))); } /** * getStartEndDateListのテスト. * @throws ParseException */ @Test public void testGetStartEndDateList() throws ParseException { SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); List<Date> list = DateTimeUtils.getStartEndDateList("201102"); assertThat(list.size(), is(28)); assertThat(list.get(0), is(sdf.parse("20110201"))); assertThat(list.get(1), is(sdf.parse("20110202"))); assertThat(list.get(27), is(sdf.parse("20110228"))); } /** * getStartEndDate4SunDayListのテスト. * @throws ParseException */ @Test public void testGetStartEndDate4SunDayList() throws ParseException { SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); List<Date> list = DateTimeUtils.getStartEndDate4SunDayList("201112"); assertThat(list.size(), is(35)); assertThat(list.get(0), is(sdf.parse("20111127"))); assertThat(list.get(1), is(sdf.parse("20111128"))); assertThat(list.get(34), is(sdf.parse("20111231"))); } /** * getDaysのテスト. * @throws ParseException */ @Test public void testGetDays() throws ParseException { SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); Date startDate = sdf.parse("20100101"); Date endDate = sdf.parse("20100101"); assertThat(DateTimeUtils.getDays(startDate, endDate), is(1)); endDate = sdf.parse("20100102"); assertThat(DateTimeUtils.getDays(startDate, endDate), is(2)); endDate = sdf.parse("20100103"); assertThat(DateTimeUtils.getDays(startDate, endDate), is(3)); } /** * rangeCheckのテスト. */ @Test public void testRangeCheck() { assertThat(DateTimeUtils.rangeCheck("", "", "", ""), is(false)); assertThat(DateTimeUtils.rangeCheck("1010", "1009", "1110", "1109"), is(false)); //基準が範囲の場合 assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1030", "1130"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1100", "1130"), is(false)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1101", "1130"), is(false)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "0930", "1030"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "0930", "1000"), is(false)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "0930", "0959"), is(false)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1000", "1100"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "0959", "1101"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1001", "1059"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "0959", "0959"), is(false)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1000", "1000"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1030", "1030"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1100", "1100"), is(true)); assertThat(DateTimeUtils.rangeCheck("1000", "1100", "1101", "1101"), is(false)); //基準が点の場合 assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1030", "1031"), is(true)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1031", "1032"), is(false)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1029", "1030"), is(true)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1028", "1029"), is(false)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1029", "1031"), is(true)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1029", "1029"), is(false)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1030", "1030"), is(true)); assertThat(DateTimeUtils.rangeCheck("1030", "1030", "1031", "1031"), is(false)); } /** * addWeekのテスト. * @throws ParseException */ @Test public void testAddWeek() throws ParseException { SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); assertThat(DateTimeUtils.addWeeks(sdf.parse("20111025"), -1).getTime(), is(sdf.parse("20111018").getTime())); assertThat(DateTimeUtils.addWeeks(sdf.parse("20111025"), 1).getTime(), is(sdf.parse("20111101").getTime())); } /** * calcAgeのテスト. */ @Test public void testCalcAge() throws ParseException { SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); Date baseDate = sdf.parse("20120106"); Date birthDay = sdf.parse("19770106"); assertThat(DateTimeUtils.calcAge(birthDay, baseDate), is(35)); baseDate = sdf.parse("20120107"); assertThat(DateTimeUtils.calcAge(birthDay, baseDate), is(35)); baseDate = sdf.parse("20120105"); assertThat(DateTimeUtils.calcAge(birthDay, baseDate), is(34)); } /** * addMonthのテスト. * @throws ParseException */ @Test public void testAddMonth() throws ParseException { assertThat(DateTimeUtils.addMonth("201201", -1), is("201112")); assertThat(DateTimeUtils.addMonth("201112", -1), is("201111")); } }