| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * 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 com.android.calendar; |
| |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.test.suitebuilder.annotation.Smoke; |
| import android.text.format.DateUtils; |
| import android.text.format.Time; |
| import android.util.Log; |
| |
| |
| /** |
| * Unit tests for {@link android.text.format.Time#getWeekNumber}. |
| */ |
| public class WeekNumberTest extends AndroidTestCase { |
| |
| static private class DateAndWeekNumber { |
| public Time date; |
| public Time allDayDate; |
| public int expectedWeekNumber; |
| |
| public DateAndWeekNumber(int year, int month, int day, int expectedWeekNumber) { |
| date = new Time(); |
| allDayDate = new Time(Time.TIMEZONE_UTC); |
| |
| date.set(0, 0, 0, day, month, year); |
| date.normalize(true /* ignore isDst */); |
| |
| allDayDate.set(day, month, year); |
| allDayDate.normalize(true /* ignore isDst */); |
| |
| this.expectedWeekNumber = expectedWeekNumber; |
| } |
| } |
| |
| DateAndWeekNumber[] tests = { |
| new DateAndWeekNumber(1998, 11, 28, 53), |
| new DateAndWeekNumber(1998, 11, 29, 53), |
| new DateAndWeekNumber(1998, 11, 30, 53), |
| new DateAndWeekNumber(1998, 11, 31, 53), |
| new DateAndWeekNumber(1999, 0, 1, 53), |
| new DateAndWeekNumber(1999, 0, 2, 53), |
| new DateAndWeekNumber(1999, 0, 3, 53), |
| new DateAndWeekNumber(1999, 0, 4, 1), |
| new DateAndWeekNumber(1999, 0, 10, 1), |
| new DateAndWeekNumber(1999, 0, 20, 3), |
| new DateAndWeekNumber(1999, 0, 30, 4), |
| |
| new DateAndWeekNumber(1999, 11, 28, 52), |
| new DateAndWeekNumber(1999, 11, 29, 52), |
| new DateAndWeekNumber(1999, 11, 30, 52), |
| new DateAndWeekNumber(1999, 11, 31, 52), |
| new DateAndWeekNumber(2000, 0, 1, 52), |
| new DateAndWeekNumber(2000, 0, 2, 52), |
| new DateAndWeekNumber(2000, 0, 3, 1), |
| new DateAndWeekNumber(2000, 0, 4, 1), |
| new DateAndWeekNumber(2000, 0, 10, 2), |
| new DateAndWeekNumber(2000, 0, 20, 3), |
| new DateAndWeekNumber(2000, 0, 30, 4), |
| |
| new DateAndWeekNumber(2000, 11, 28, 52), |
| new DateAndWeekNumber(2000, 11, 29, 52), |
| new DateAndWeekNumber(2000, 11, 30, 52), |
| new DateAndWeekNumber(2000, 11, 31, 52), |
| new DateAndWeekNumber(2001, 0, 1, 1), |
| new DateAndWeekNumber(2001, 0, 2, 1), |
| new DateAndWeekNumber(2001, 0, 3, 1), |
| new DateAndWeekNumber(2001, 0, 4, 1), |
| new DateAndWeekNumber(2001, 0, 10, 2), |
| new DateAndWeekNumber(2001, 0, 20, 3), |
| new DateAndWeekNumber(2001, 0, 30, 5), |
| |
| new DateAndWeekNumber(2001, 11, 28, 52), |
| new DateAndWeekNumber(2001, 11, 29, 52), |
| new DateAndWeekNumber(2001, 11, 30, 52), |
| new DateAndWeekNumber(2001, 11, 31, 1), |
| new DateAndWeekNumber(2002, 0, 1, 1), |
| new DateAndWeekNumber(2002, 0, 2, 1), |
| new DateAndWeekNumber(2002, 0, 3, 1), |
| new DateAndWeekNumber(2002, 0, 4, 1), |
| new DateAndWeekNumber(2002, 0, 10, 2), |
| new DateAndWeekNumber(2002, 0, 20, 3), |
| new DateAndWeekNumber(2002, 0, 30, 5), |
| |
| new DateAndWeekNumber(2002, 11, 28, 52), |
| new DateAndWeekNumber(2002, 11, 29, 52), |
| new DateAndWeekNumber(2002, 11, 30, 1), |
| new DateAndWeekNumber(2002, 11, 31, 1), |
| new DateAndWeekNumber(2003, 0, 1, 1), |
| new DateAndWeekNumber(2003, 0, 2, 1), |
| new DateAndWeekNumber(2003, 0, 3, 1), |
| new DateAndWeekNumber(2003, 0, 4, 1), |
| new DateAndWeekNumber(2003, 0, 10, 2), |
| new DateAndWeekNumber(2003, 0, 20, 4), |
| new DateAndWeekNumber(2003, 0, 30, 5), |
| |
| new DateAndWeekNumber(2003, 11, 28, 52), |
| new DateAndWeekNumber(2003, 11, 29, 1), |
| new DateAndWeekNumber(2003, 11, 30, 1), |
| new DateAndWeekNumber(2003, 11, 31, 1), |
| new DateAndWeekNumber(2004, 0, 1, 1), |
| new DateAndWeekNumber(2004, 0, 2, 1), |
| new DateAndWeekNumber(2004, 0, 3, 1), |
| new DateAndWeekNumber(2004, 0, 4, 1), |
| new DateAndWeekNumber(2004, 0, 10, 2), |
| new DateAndWeekNumber(2004, 0, 20, 4), |
| new DateAndWeekNumber(2004, 0, 30, 5), |
| |
| new DateAndWeekNumber(2004, 0, 1, 1), |
| new DateAndWeekNumber(2004, 1, 1, 5), |
| new DateAndWeekNumber(2004, 2, 1, 10), |
| new DateAndWeekNumber(2004, 3, 1, 14), |
| new DateAndWeekNumber(2004, 4, 1, 18), |
| new DateAndWeekNumber(2004, 5, 1, 23), |
| new DateAndWeekNumber(2004, 6, 1, 27), |
| new DateAndWeekNumber(2004, 7, 1, 31), |
| new DateAndWeekNumber(2004, 8, 1, 36), |
| new DateAndWeekNumber(2004, 9, 1, 40), |
| new DateAndWeekNumber(2004, 10, 1, 45), |
| new DateAndWeekNumber(2004, 11, 1, 49), |
| |
| new DateAndWeekNumber(2004, 11, 28, 53), |
| new DateAndWeekNumber(2004, 11, 29, 53), |
| new DateAndWeekNumber(2004, 11, 30, 53), |
| new DateAndWeekNumber(2004, 11, 31, 53), |
| new DateAndWeekNumber(2005, 0, 1, 53), |
| new DateAndWeekNumber(2005, 0, 2, 53), |
| new DateAndWeekNumber(2005, 0, 3, 1), |
| new DateAndWeekNumber(2005, 0, 4, 1), |
| new DateAndWeekNumber(2005, 0, 10, 2), |
| new DateAndWeekNumber(2005, 0, 20, 3), |
| new DateAndWeekNumber(2005, 0, 30, 4), |
| |
| new DateAndWeekNumber(2005, 11, 28, 52), |
| new DateAndWeekNumber(2005, 11, 29, 52), |
| new DateAndWeekNumber(2005, 11, 30, 52), |
| new DateAndWeekNumber(2005, 11, 31, 52), |
| new DateAndWeekNumber(2006, 0, 1, 52), |
| new DateAndWeekNumber(2006, 0, 2, 1), |
| new DateAndWeekNumber(2006, 0, 3, 1), |
| new DateAndWeekNumber(2006, 0, 4, 1), |
| new DateAndWeekNumber(2006, 0, 10, 2), |
| new DateAndWeekNumber(2006, 0, 20, 3), |
| new DateAndWeekNumber(2006, 0, 30, 5), |
| |
| new DateAndWeekNumber(2006, 11, 28, 52), |
| new DateAndWeekNumber(2006, 11, 29, 52), |
| new DateAndWeekNumber(2006, 11, 30, 52), |
| new DateAndWeekNumber(2006, 11, 31, 52), |
| new DateAndWeekNumber(2007, 0, 1, 1), |
| new DateAndWeekNumber(2007, 0, 2, 1), |
| new DateAndWeekNumber(2007, 0, 3, 1), |
| new DateAndWeekNumber(2007, 0, 4, 1), |
| new DateAndWeekNumber(2007, 0, 10, 2), |
| new DateAndWeekNumber(2007, 0, 20, 3), |
| new DateAndWeekNumber(2007, 0, 30, 5), |
| |
| new DateAndWeekNumber(2007, 11, 28, 52), |
| new DateAndWeekNumber(2007, 11, 29, 52), |
| new DateAndWeekNumber(2007, 11, 30, 52), |
| new DateAndWeekNumber(2007, 11, 31, 1), |
| new DateAndWeekNumber(2008, 0, 1, 1), |
| new DateAndWeekNumber(2008, 0, 2, 1), |
| new DateAndWeekNumber(2008, 0, 3, 1), |
| new DateAndWeekNumber(2008, 0, 4, 1), |
| new DateAndWeekNumber(2008, 0, 10, 2), |
| new DateAndWeekNumber(2008, 0, 20, 3), |
| new DateAndWeekNumber(2008, 0, 30, 5), |
| |
| new DateAndWeekNumber(2008, 11, 28, 52), |
| new DateAndWeekNumber(2008, 11, 29, 1), |
| new DateAndWeekNumber(2008, 11, 30, 1), |
| new DateAndWeekNumber(2008, 11, 31, 1), |
| new DateAndWeekNumber(2009, 0, 1, 1), |
| new DateAndWeekNumber(2009, 0, 2, 1), |
| new DateAndWeekNumber(2009, 0, 3, 1), |
| new DateAndWeekNumber(2009, 0, 4, 1), |
| new DateAndWeekNumber(2009, 0, 10, 2), |
| new DateAndWeekNumber(2009, 0, 20, 4), |
| new DateAndWeekNumber(2009, 0, 30, 5), |
| }; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| } |
| |
| @Smoke |
| @SmallTest |
| public void testAll() throws Exception { |
| int len = tests.length; |
| for (int index = 0; index < len; index++) { |
| DateAndWeekNumber test = tests[index]; |
| int weekNumber = test.date.getWeekNumber(); |
| if (weekNumber != test.expectedWeekNumber) { |
| long millis = test.date.toMillis(false /* use isDst */); |
| int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NUMERIC_DATE; |
| String output = DateUtils.formatDateTime(mContext, millis, flags); |
| Log.i("WeekNumberTest", "index " + index |
| + " date: " + output |
| + " expected: " + test.expectedWeekNumber |
| + " actual: " + weekNumber); |
| } |
| assertEquals(weekNumber, test.expectedWeekNumber); |
| |
| weekNumber = test.allDayDate.getWeekNumber(); |
| if (weekNumber != test.expectedWeekNumber) { |
| long millis = test.date.toMillis(false /* use isDst */); |
| int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NUMERIC_DATE; |
| String output = DateUtils.formatDateTime(mContext, millis, flags); |
| Log.i("WeekNumberTest", "(all-day) index " + index |
| + " date: " + output |
| + " expected: " + test.expectedWeekNumber |
| + " actual: " + weekNumber); |
| } |
| assertEquals(weekNumber, test.expectedWeekNumber); |
| } |
| } |
| } |