blob: 4c5ad76d81933622dacc1b90210e8833e81eaf3a [file] [log] [blame]
/*
* 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 junit.framework.TestCase;
import java.util.Calendar;
import android.test.suitebuilder.annotation.SmallTest;
/**
* Unit tests for {@link DayOfMonthCursor}.
*/
public class DayOfMonthCursorTest extends TestCase {
@SmallTest
public void testMonthRows() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 11, Calendar.SUNDAY);
assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
mc.getDigitsForRow(0));
assertArraysEqual(new int[]{2, 3, 4, 5, 6, 7, 8},
mc.getDigitsForRow(1));
assertArraysEqual(new int[]{30, 1, 2, 3, 4, 5, 6},
mc.getDigitsForRow(5));
}
@SmallTest
public void testMoveLeft() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 3, Calendar.SUNDAY);
assertEquals(Calendar.SEPTEMBER, mc.getMonth());
assertEquals(3, mc.getSelectedDayOfMonth());
assertEquals(1, mc.getSelectedRow());
assertEquals(1, mc.getSelectedColumn());
// move left, still same row
assertFalse(mc.left());
assertEquals(2, mc.getSelectedDayOfMonth());
assertEquals(1, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
// wrap over to previous column, same month
assertFalse(mc.left());
assertEquals(1, mc.getSelectedDayOfMonth());
assertEquals(0, mc.getSelectedRow());
assertEquals(6, mc.getSelectedColumn());
// wrap to previous month
assertTrue(mc.left());
assertEquals(Calendar.AUGUST, mc.getMonth());
assertEquals(31, mc.getSelectedDayOfMonth());
assertEquals(4, mc.getSelectedRow());
assertEquals(5, mc.getSelectedColumn());
}
@SmallTest
public void testMoveRight() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 28, Calendar.SUNDAY);
assertEquals(Calendar.SEPTEMBER, mc.getMonth());
assertEquals(28, mc.getSelectedDayOfMonth());
assertEquals(4, mc.getSelectedRow());
assertEquals(5, mc.getSelectedColumn());
// same row
assertFalse(mc.right());
assertEquals(29, mc.getSelectedDayOfMonth());
assertEquals(4, mc.getSelectedRow());
assertEquals(6, mc.getSelectedColumn());
// wrap to next column, same month
assertFalse(mc.right());
assertEquals(30, mc.getSelectedDayOfMonth());
assertEquals(5, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
// next month
assertTrue(mc.right());
assertEquals(Calendar.OCTOBER, mc.getMonth());
assertEquals(1, mc.getSelectedDayOfMonth());
assertEquals(0, mc.getSelectedRow());
assertEquals(1, mc.getSelectedColumn());
}
@SmallTest
public void testMoveUp() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 13, Calendar.SUNDAY);
assertEquals(Calendar.SEPTEMBER, mc.getMonth());
assertEquals(13, mc.getSelectedDayOfMonth());
assertEquals(2, mc.getSelectedRow());
assertEquals(4, mc.getSelectedColumn());
// up, same month
assertFalse(mc.up());
assertEquals(6, mc.getSelectedDayOfMonth());
assertEquals(1, mc.getSelectedRow());
assertEquals(4, mc.getSelectedColumn());
// up, flips back
assertTrue(mc.up());
assertEquals(Calendar.AUGUST, mc.getMonth());
assertEquals(30, mc.getSelectedDayOfMonth());
assertEquals(4, mc.getSelectedRow());
assertEquals(4, mc.getSelectedColumn());
}
@SmallTest
public void testMoveDown() {
DayOfMonthCursor mc = new DayOfMonthCursor(2007,
Calendar.SEPTEMBER, 23, Calendar.SUNDAY);
assertEquals(Calendar.SEPTEMBER, mc.getMonth());
assertEquals(23, mc.getSelectedDayOfMonth());
assertEquals(4, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
// down, same month
assertFalse(mc.down());
assertEquals(30, mc.getSelectedDayOfMonth());
assertEquals(5, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
// down, next month
assertTrue(mc.down());
assertEquals(Calendar.OCTOBER, mc.getMonth());
assertEquals(7, mc.getSelectedDayOfMonth());
assertEquals(1, mc.getSelectedRow());
assertEquals(0, mc.getSelectedColumn());
}
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]);
}
}
}