/* * Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License, * Version 1.0, and under the Eclipse Public License, Version 1.0 * (http://h2database.com/html/license.html). * Initial Developer: Robert Rathsack (firstName dot lastName at gmx dot de) */ package org.h2.test.unit; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.h2.test.TestBase; import org.h2.util.DateTimeUtils; /** * Test cases for DateTimeIso8601Utils. */ public class TestDateIso8601 extends TestBase { private SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); /** * Run just this test. * * @param a ignored */ public static void main(String... a) throws Exception { TestBase.createCaller().init().test(); } public void test() throws Exception { testIsoDayOfWeek(); testIsoWeekJanuary1thMonday(); testIsoWeekJanuary1thTuesday(); testIsoWeekJanuary1thWednesday(); testIsoWeekJanuary1thThursday(); testIsoWeekJanuary1thFriday(); testIsoWeekJanuary1thSaturday(); testIsoWeekJanuary1thSunday(); testIsoYearJanuary1thMonday(); testIsoYearJanuary1thTuesday(); testIsoYearJanuary1thWednesday(); testIsoYearJanuary1thThursday(); testIsoYearJanuary1thFriday(); testIsoYearJanuary1thSaturday(); testIsoYearJanuary1thSunday(); } private Date parse(String s) throws ParseException { return dateFormatter.parse(s); } private static int getIsoDayOfWeek(Date date) { return DateTimeUtils.getIsoDayOfWeek(date); } /** * Test if day of week is returned as Monday = 1 to Sunday = 7. */ private void testIsoDayOfWeek() throws Exception { assertEquals(1, getIsoDayOfWeek(parse("2008-09-29"))); assertEquals(2, getIsoDayOfWeek(parse("2008-09-30"))); assertEquals(3, getIsoDayOfWeek(parse("2008-10-01"))); assertEquals(4, getIsoDayOfWeek(parse("2008-10-02"))); assertEquals(5, getIsoDayOfWeek(parse("2008-10-03"))); assertEquals(6, getIsoDayOfWeek(parse("2008-10-04"))); assertEquals(7, getIsoDayOfWeek(parse("2008-10-05"))); } private static int getIsoWeek(Date date) { Timestamp ts = new Timestamp(date.getTime()); return DateTimeUtils.getIsoWeek(ts); } /** * January 1st is a Monday therefore the week belongs to the next year. */ private void testIsoWeekJanuary1thMonday() throws Exception { assertEquals(52, getIsoWeek(parse("2006-12-31"))); assertEquals(1, getIsoWeek(parse("2007-01-01"))); assertEquals(1, getIsoWeek(parse("2007-01-07"))); assertEquals(2, getIsoWeek(parse("2007-01-08"))); } /** * January 1st is a Tuesday therefore the week belongs to the next year. */ private void testIsoWeekJanuary1thTuesday() throws Exception { assertEquals(52, getIsoWeek(parse("2007-12-30"))); assertEquals(1, getIsoWeek(parse("2007-12-31"))); assertEquals(1, getIsoWeek(parse("2008-01-01"))); assertEquals(1, getIsoWeek(parse("2008-01-06"))); assertEquals(2, getIsoWeek(parse("2008-01-07"))); } /** * January1th is a Wednesday therefore the week belongs to the next year. */ private void testIsoWeekJanuary1thWednesday() throws Exception { assertEquals(52, getIsoWeek(parse("2002-12-28"))); assertEquals(52, getIsoWeek(parse("2002-12-29"))); assertEquals(1, getIsoWeek(parse("2002-12-30"))); assertEquals(1, getIsoWeek(parse("2002-12-31"))); assertEquals(1, getIsoWeek(parse("2003-01-01"))); assertEquals(1, getIsoWeek(parse("2003-01-05"))); assertEquals(2, getIsoWeek(parse("2003-01-06"))); } /** * January 1st is a Thursday therefore the week belongs to the next year. */ private void testIsoWeekJanuary1thThursday() throws Exception { assertEquals(52, getIsoWeek(parse("2008-12-28"))); assertEquals(1, getIsoWeek(parse("2008-12-29"))); assertEquals(1, getIsoWeek(parse("2008-12-30"))); assertEquals(1, getIsoWeek(parse("2008-12-31"))); assertEquals(1, getIsoWeek(parse("2009-01-01"))); assertEquals(1, getIsoWeek(parse("2009-01-04"))); assertEquals(2, getIsoWeek(parse("2009-01-09"))); } /** * January 1st is a Friday therefore the week belongs to the previous year. */ private void testIsoWeekJanuary1thFriday() throws Exception { assertEquals(53, getIsoWeek(parse("2009-12-31"))); assertEquals(53, getIsoWeek(parse("2010-01-01"))); assertEquals(53, getIsoWeek(parse("2010-01-03"))); assertEquals(1, getIsoWeek(parse("2010-01-04"))); } /** * January 1st is a Saturday therefore the week belongs to the previous * year. */ private void testIsoWeekJanuary1thSaturday() throws Exception { assertEquals(52, getIsoWeek(parse("2010-12-31"))); assertEquals(52, getIsoWeek(parse("2011-01-01"))); assertEquals(52, getIsoWeek(parse("2011-01-02"))); assertEquals(1, getIsoWeek(parse("2011-01-03"))); } /** * January 1st is a Sunday therefore the week belongs to the previous year. */ private void testIsoWeekJanuary1thSunday() throws Exception { assertEquals(52, getIsoWeek(parse("2011-12-31"))); assertEquals(52, getIsoWeek(parse("2012-01-01"))); assertEquals(1, getIsoWeek(parse("2012-01-02"))); assertEquals(1, getIsoWeek(parse("2012-01-08"))); assertEquals(2, getIsoWeek(parse("2012-01-09"))); } private static int getIsoYear(Date date) { Timestamp ts = new Timestamp(date.getTime()); return DateTimeUtils.getIsoYear(ts); } /** * January 1st is a Monday therefore year is equal to isoYear. */ private void testIsoYearJanuary1thMonday() throws Exception { assertEquals(2006, getIsoYear(parse("2006-12-28"))); assertEquals(2006, getIsoYear(parse("2006-12-29"))); assertEquals(2006, getIsoYear(parse("2006-12-30"))); assertEquals(2006, getIsoYear(parse("2006-12-31"))); assertEquals(2007, getIsoYear(parse("2007-01-01"))); assertEquals(2007, getIsoYear(parse("2007-01-02"))); assertEquals(2007, getIsoYear(parse("2007-01-03"))); } /** * January 1st is a Tuesday therefore 31th of December belong to the next * year. */ private void testIsoYearJanuary1thTuesday() throws Exception { assertEquals(2007, getIsoYear(parse("2007-12-28"))); assertEquals(2007, getIsoYear(parse("2007-12-29"))); assertEquals(2007, getIsoYear(parse("2007-12-30"))); assertEquals(2008, getIsoYear(parse("2007-12-31"))); assertEquals(2008, getIsoYear(parse("2008-01-01"))); assertEquals(2008, getIsoYear(parse("2008-01-02"))); assertEquals(2008, getIsoYear(parse("2008-01-03"))); assertEquals(2008, getIsoYear(parse("2008-01-04"))); } /** * January 1st is a Wednesday therefore 30th and 31th of December belong to * the next year. */ private void testIsoYearJanuary1thWednesday() throws Exception { assertEquals(2002, getIsoYear(parse("2002-12-28"))); assertEquals(2002, getIsoYear(parse("2002-12-29"))); assertEquals(2003, getIsoYear(parse("2002-12-30"))); assertEquals(2003, getIsoYear(parse("2002-12-31"))); assertEquals(2003, getIsoYear(parse("2003-01-01"))); assertEquals(2003, getIsoYear(parse("2003-01-02"))); assertEquals(2003, getIsoYear(parse("2003-12-02"))); } /** * January 1st is a Thursday therefore 29th - 31th of December belong to the * next year. */ private void testIsoYearJanuary1thThursday() throws Exception { assertEquals(2008, getIsoYear(parse("2008-12-28"))); assertEquals(2009, getIsoYear(parse("2008-12-29"))); assertEquals(2009, getIsoYear(parse("2008-12-30"))); assertEquals(2009, getIsoYear(parse("2008-12-31"))); assertEquals(2009, getIsoYear(parse("2009-01-01"))); assertEquals(2009, getIsoYear(parse("2009-01-02"))); assertEquals(2009, getIsoYear(parse("2009-01-03"))); assertEquals(2009, getIsoYear(parse("2009-01-04"))); } /** * January 1st is a Friday therefore 1st - 3rd of January belong to the * previous year. */ private void testIsoYearJanuary1thFriday() throws Exception { assertEquals(2009, getIsoYear(parse("2009-12-28"))); assertEquals(2009, getIsoYear(parse("2009-12-29"))); assertEquals(2009, getIsoYear(parse("2009-12-30"))); assertEquals(2009, getIsoYear(parse("2009-12-31"))); assertEquals(2009, getIsoYear(parse("2010-01-01"))); assertEquals(2009, getIsoYear(parse("2010-01-02"))); assertEquals(2009, getIsoYear(parse("2010-01-03"))); assertEquals(2010, getIsoYear(parse("2010-01-04"))); } /** * January 1st is a Saturday therefore 1st and 2nd of January belong to the * previous year. */ private void testIsoYearJanuary1thSaturday() throws Exception { assertEquals(2010, getIsoYear(parse("2010-12-28"))); assertEquals(2010, getIsoYear(parse("2010-12-29"))); assertEquals(2010, getIsoYear(parse("2010-12-30"))); assertEquals(2010, getIsoYear(parse("2010-12-31"))); assertEquals(2010, getIsoYear(parse("2011-01-01"))); assertEquals(2010, getIsoYear(parse("2011-01-02"))); assertEquals(2011, getIsoYear(parse("2011-01-03"))); assertEquals(2011, getIsoYear(parse("2011-01-04"))); } /** * January 1st is a Sunday therefore this day belong to the previous year. */ private void testIsoYearJanuary1thSunday() throws Exception { assertEquals(2011, getIsoYear(parse("2011-12-28"))); assertEquals(2011, getIsoYear(parse("2011-12-29"))); assertEquals(2011, getIsoYear(parse("2011-12-30"))); assertEquals(2011, getIsoYear(parse("2011-12-31"))); assertEquals(2011, getIsoYear(parse("2012-01-01"))); assertEquals(2012, getIsoYear(parse("2012-01-02"))); assertEquals(2012, getIsoYear(parse("2012-01-03"))); assertEquals(2012, getIsoYear(parse("2012-01-04"))); } }