/*
* 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 android.util;
import android.test.suitebuilder.annotation.SmallTest;
import java.util.Calendar;
import junit.framework.TestCase;
/**
* Unit tests for {@link MonthDisplayHelper}.
*/
public class MonthDisplayHelperTest extends TestCase {
@SmallTest
public void testFirstDayOfMonth() {
assertEquals("august 2007",
Calendar.WEDNESDAY,
new MonthDisplayHelper(2007, Calendar.AUGUST).getFirstDayOfMonth());
assertEquals("september, 2007",
Calendar.SATURDAY,
new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getFirstDayOfMonth());
}
@SmallTest
public void testNumberOfDaysInCurrentMonth() {
assertEquals(30,
new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getNumberOfDaysInMonth());
}
@SmallTest
public void testMonthRows() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007, Calendar.SEPTEMBER);
assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
helper.getDigitsForRow(0));
assertArraysEqual(new int[]{2, 3, 4, 5, 6, 7, 8},
helper.getDigitsForRow(1));
assertArraysEqual(new int[]{30, 1, 2, 3, 4, 5, 6},
helper.getDigitsForRow(5));
}
@SmallTest
public void testMonthRowsWeekStartsMonday() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.SEPTEMBER, Calendar.MONDAY);
assertArraysEqual(new int[]{27, 28, 29, 30, 31, 1, 2},
helper.getDigitsForRow(0));
assertArraysEqual(new int[]{3, 4, 5, 6, 7, 8, 9},
helper.getDigitsForRow(1));
assertArraysEqual(new int[]{24, 25, 26, 27, 28, 29, 30},
helper.getDigitsForRow(4));
assertArraysEqual(new int[]{1, 2, 3, 4, 5, 6, 7},
helper.getDigitsForRow(5));
}
@SmallTest
public void testMonthRowsWeekStartsSaturday() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.SEPTEMBER, Calendar.SATURDAY);
assertArraysEqual(new int[]{1, 2, 3, 4, 5, 6, 7},
helper.getDigitsForRow(0));
assertArraysEqual(new int[]{8, 9, 10, 11, 12, 13, 14},
helper.getDigitsForRow(1));
assertArraysEqual(new int[]{29, 30, 1, 2, 3, 4, 5},
helper.getDigitsForRow(4));
helper = new MonthDisplayHelper(2007,
Calendar.AUGUST, Calendar.SATURDAY);
assertArraysEqual(new int[]{28, 29, 30, 31, 1, 2, 3},
helper.getDigitsForRow(0));
assertArraysEqual(new int[]{4, 5, 6, 7, 8, 9, 10},
helper.getDigitsForRow(1));
assertArraysEqual(new int[]{25, 26, 27, 28, 29, 30, 31},
helper.getDigitsForRow(4));
}
@SmallTest
public void testGetDayAt() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.SEPTEMBER, Calendar.SUNDAY);
assertEquals(26, helper.getDayAt(0, 0));
assertEquals(1, helper.getDayAt(0, 6));
assertEquals(17, helper.getDayAt(3, 1));
assertEquals(2, helper.getDayAt(5, 2));
}
@SmallTest
public void testPrevMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.SEPTEMBER, Calendar.SUNDAY);
assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
helper.getDigitsForRow(0));
helper.previousMonth();
assertEquals(Calendar.AUGUST, helper.getMonth());
assertArraysEqual(new int[]{29, 30, 31, 1, 2, 3, 4},
helper.getDigitsForRow(0));
}
@SmallTest
public void testPrevMonthRollOver() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.JANUARY);
helper.previousMonth();
assertEquals(2006, helper.getYear());
assertEquals(Calendar.DECEMBER, helper.getMonth());
}
@SmallTest
public void testNextMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.AUGUST, Calendar.SUNDAY);
assertArraysEqual(new int[]{29, 30, 31, 1, 2, 3, 4},
helper.getDigitsForRow(0));
helper.nextMonth();
assertEquals(Calendar.SEPTEMBER, helper.getMonth());
assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
helper.getDigitsForRow(0));
}
@SmallTest
public void testGetRowOf() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.AUGUST, Calendar.SUNDAY);
assertEquals(0, helper.getRowOf(2));
assertEquals(0, helper.getRowOf(4));
assertEquals(2, helper.getRowOf(12));
assertEquals(2, helper.getRowOf(18));
assertEquals(3, helper.getRowOf(19));
}
@SmallTest
public void testGetColumnOf() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.AUGUST, Calendar.SUNDAY);
assertEquals(3, helper.getColumnOf(1));
assertEquals(4, helper.getColumnOf(9));
assertEquals(5, helper.getColumnOf(17));
assertEquals(6, helper.getColumnOf(25));
assertEquals(0, helper.getColumnOf(26));
}
@SmallTest
public void testWithinCurrentMonth() {
MonthDisplayHelper helper = new MonthDisplayHelper(2007,
Calendar.SEPTEMBER, Calendar.SUNDAY);
// out of bounds
assertFalse(helper.isWithinCurrentMonth(-1, 3));
assertFalse(helper.isWithinCurrentMonth(6, 3));
assertFalse(helper.isWithinCurrentMonth(2, -1));
assertFalse(helper.isWithinCurrentMonth(2, 7));
// last day of previous month
assertFalse(helper.isWithinCurrentMonth(0, 5));
// first day of next month
assertFalse(helper.isWithinCurrentMonth(5, 1));
// first day in month
assertTrue(helper.isWithinCurrentMonth(0, 6));
// last day in month
assertTrue(helper.isWithinCurrentMonth(5, 0));
}
private void assertArraysEqual(int[] expected, int[] actual) {
assertEquals("array length", expected.length, actual.length);
for (int i = 0; i < expected.length; i++) {
assertEquals("index " + i,
expected[i], actual[i]);
}
}
}