1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.util; 18 19import junit.framework.TestCase; 20 21import java.util.Calendar; 22import android.test.suitebuilder.annotation.SmallTest; 23 24/** 25 * Unit tests for {@link DayOfMonthCursor}. 26 */ 27public class DayOfMonthCursorTest extends TestCase { 28 29 @SmallTest 30 public void testMonthRows() { 31 DayOfMonthCursor mc = new DayOfMonthCursor(2007, 32 Calendar.SEPTEMBER, 11, Calendar.SUNDAY); 33 34 assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1}, 35 mc.getDigitsForRow(0)); 36 assertArraysEqual(new int[]{2, 3, 4, 5, 6, 7, 8}, 37 mc.getDigitsForRow(1)); 38 assertArraysEqual(new int[]{30, 1, 2, 3, 4, 5, 6}, 39 mc.getDigitsForRow(5)); 40 } 41 42 @SmallTest 43 public void testMoveLeft() { 44 DayOfMonthCursor mc = new DayOfMonthCursor(2007, 45 Calendar.SEPTEMBER, 3, Calendar.SUNDAY); 46 47 assertEquals(Calendar.SEPTEMBER, mc.getMonth()); 48 assertEquals(3, mc.getSelectedDayOfMonth()); 49 assertEquals(1, mc.getSelectedRow()); 50 assertEquals(1, mc.getSelectedColumn()); 51 52 // move left, still same row 53 assertFalse(mc.left()); 54 assertEquals(2, mc.getSelectedDayOfMonth()); 55 assertEquals(1, mc.getSelectedRow()); 56 assertEquals(0, mc.getSelectedColumn()); 57 58 // wrap over to previous column, same month 59 assertFalse(mc.left()); 60 assertEquals(1, mc.getSelectedDayOfMonth()); 61 assertEquals(0, mc.getSelectedRow()); 62 assertEquals(6, mc.getSelectedColumn()); 63 64 // wrap to previous month 65 assertTrue(mc.left()); 66 assertEquals(Calendar.AUGUST, mc.getMonth()); 67 assertEquals(31, mc.getSelectedDayOfMonth()); 68 assertEquals(4, mc.getSelectedRow()); 69 assertEquals(5, mc.getSelectedColumn()); 70 } 71 72 @SmallTest 73 public void testMoveRight() { 74 DayOfMonthCursor mc = new DayOfMonthCursor(2007, 75 Calendar.SEPTEMBER, 28, Calendar.SUNDAY); 76 77 assertEquals(Calendar.SEPTEMBER, mc.getMonth()); 78 assertEquals(28, mc.getSelectedDayOfMonth()); 79 assertEquals(4, mc.getSelectedRow()); 80 assertEquals(5, mc.getSelectedColumn()); 81 82 // same row 83 assertFalse(mc.right()); 84 assertEquals(29, mc.getSelectedDayOfMonth()); 85 assertEquals(4, mc.getSelectedRow()); 86 assertEquals(6, mc.getSelectedColumn()); 87 88 // wrap to next column, same month 89 assertFalse(mc.right()); 90 assertEquals(30, mc.getSelectedDayOfMonth()); 91 assertEquals(5, mc.getSelectedRow()); 92 assertEquals(0, mc.getSelectedColumn()); 93 94 // next month 95 assertTrue(mc.right()); 96 assertEquals(Calendar.OCTOBER, mc.getMonth()); 97 assertEquals(1, mc.getSelectedDayOfMonth()); 98 assertEquals(0, mc.getSelectedRow()); 99 assertEquals(1, mc.getSelectedColumn()); 100 } 101 102 @SmallTest 103 public void testMoveUp() { 104 DayOfMonthCursor mc = new DayOfMonthCursor(2007, 105 Calendar.SEPTEMBER, 13, Calendar.SUNDAY); 106 107 assertEquals(Calendar.SEPTEMBER, mc.getMonth()); 108 assertEquals(13, mc.getSelectedDayOfMonth()); 109 assertEquals(2, mc.getSelectedRow()); 110 assertEquals(4, mc.getSelectedColumn()); 111 112 // up, same month 113 assertFalse(mc.up()); 114 assertEquals(6, mc.getSelectedDayOfMonth()); 115 assertEquals(1, mc.getSelectedRow()); 116 assertEquals(4, mc.getSelectedColumn()); 117 118 // up, flips back 119 assertTrue(mc.up()); 120 assertEquals(Calendar.AUGUST, mc.getMonth()); 121 assertEquals(30, mc.getSelectedDayOfMonth()); 122 assertEquals(4, mc.getSelectedRow()); 123 assertEquals(4, mc.getSelectedColumn()); 124 } 125 126 @SmallTest 127 public void testMoveDown() { 128 DayOfMonthCursor mc = new DayOfMonthCursor(2007, 129 Calendar.SEPTEMBER, 23, Calendar.SUNDAY); 130 131 assertEquals(Calendar.SEPTEMBER, mc.getMonth()); 132 assertEquals(23, mc.getSelectedDayOfMonth()); 133 assertEquals(4, mc.getSelectedRow()); 134 assertEquals(0, mc.getSelectedColumn()); 135 136 // down, same month 137 assertFalse(mc.down()); 138 assertEquals(30, mc.getSelectedDayOfMonth()); 139 assertEquals(5, mc.getSelectedRow()); 140 assertEquals(0, mc.getSelectedColumn()); 141 142 // down, next month 143 assertTrue(mc.down()); 144 assertEquals(Calendar.OCTOBER, mc.getMonth()); 145 assertEquals(7, mc.getSelectedDayOfMonth()); 146 assertEquals(1, mc.getSelectedRow()); 147 assertEquals(0, mc.getSelectedColumn()); 148 } 149 150 private void assertArraysEqual(int[] expected, int[] actual) { 151 assertEquals("array length", expected.length, actual.length); 152 for (int i = 0; i < expected.length; i++) { 153 assertEquals("index " + i, 154 expected[i], actual[i]); 155 } 156 } 157} 158