• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
17 package android.util;
18 
19 import junit.framework.TestCase;
20 import junit.framework.Test;
21 import junit.framework.TestSuite;
22 
23 import java.util.Calendar;
24 import android.test.suitebuilder.annotation.SmallTest;
25 import android.test.suitebuilder.annotation.MediumTest;
26 
27 /**
28  * Unit tests for {@link MonthDisplayHelper}.
29  */
30 public class MonthDisplayHelperTest extends TestCase {
31 
32 
33     @SmallTest
testFirstDayOfMonth()34     public void testFirstDayOfMonth() {
35 
36         assertEquals("august 2007",
37                 Calendar.WEDNESDAY,
38                 new MonthDisplayHelper(2007, Calendar.AUGUST).getFirstDayOfMonth());
39 
40         assertEquals("september, 2007",
41                 Calendar.SATURDAY,
42                 new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getFirstDayOfMonth());
43     }
44 
45     @MediumTest
testNumberOfDaysInCurrentMonth()46     public void testNumberOfDaysInCurrentMonth() {
47         assertEquals(30,
48                 new MonthDisplayHelper(2007, Calendar.SEPTEMBER).getNumberOfDaysInMonth());
49     }
50 
51     @SmallTest
testMonthRows()52     public void testMonthRows() {
53         MonthDisplayHelper helper = new MonthDisplayHelper(2007, Calendar.SEPTEMBER);
54 
55         assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
56                 helper.getDigitsForRow(0));
57         assertArraysEqual(new int[]{2, 3, 4, 5, 6, 7, 8},
58                 helper.getDigitsForRow(1));
59         assertArraysEqual(new int[]{30, 1, 2, 3, 4, 5, 6},
60                 helper.getDigitsForRow(5));
61 
62     }
63 
64     @SmallTest
testMonthRowsWeekStartsMonday()65     public void testMonthRowsWeekStartsMonday() {
66         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
67                 Calendar.SEPTEMBER, Calendar.MONDAY);
68 
69         assertArraysEqual(new int[]{27, 28, 29, 30, 31, 1, 2},
70                 helper.getDigitsForRow(0));
71         assertArraysEqual(new int[]{3, 4, 5, 6, 7, 8, 9},
72                 helper.getDigitsForRow(1));
73         assertArraysEqual(new int[]{24, 25, 26, 27, 28, 29, 30},
74                 helper.getDigitsForRow(4));
75         assertArraysEqual(new int[]{1, 2, 3, 4, 5, 6, 7},
76                 helper.getDigitsForRow(5));
77     }
78 
79     @SmallTest
testMonthRowsWeekStartsSaturday()80     public void testMonthRowsWeekStartsSaturday() {
81         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
82                 Calendar.SEPTEMBER, Calendar.SATURDAY);
83 
84         assertArraysEqual(new int[]{1, 2, 3, 4, 5, 6, 7},
85                 helper.getDigitsForRow(0));
86         assertArraysEqual(new int[]{8, 9, 10, 11, 12, 13, 14},
87                 helper.getDigitsForRow(1));
88         assertArraysEqual(new int[]{29, 30, 1, 2, 3, 4, 5},
89                 helper.getDigitsForRow(4));
90 
91 
92         helper = new MonthDisplayHelper(2007,
93                 Calendar.AUGUST, Calendar.SATURDAY);
94 
95         assertArraysEqual(new int[]{28, 29, 30, 31, 1, 2, 3},
96                 helper.getDigitsForRow(0));
97         assertArraysEqual(new int[]{4, 5, 6, 7, 8, 9, 10},
98                 helper.getDigitsForRow(1));
99         assertArraysEqual(new int[]{25, 26, 27, 28, 29, 30, 31},
100                 helper.getDigitsForRow(4));
101     }
102 
103     @SmallTest
testGetDayAt()104     public void testGetDayAt() {
105         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
106                 Calendar.SEPTEMBER, Calendar.SUNDAY);
107 
108         assertEquals(26, helper.getDayAt(0, 0));
109         assertEquals(1, helper.getDayAt(0, 6));
110         assertEquals(17, helper.getDayAt(3, 1));
111         assertEquals(2, helper.getDayAt(5, 2));
112     }
113 
114     @SmallTest
testPrevMonth()115     public void testPrevMonth() {
116         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
117                 Calendar.SEPTEMBER, Calendar.SUNDAY);
118 
119         assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
120                 helper.getDigitsForRow(0));
121 
122         helper.previousMonth();
123 
124         assertEquals(Calendar.AUGUST, helper.getMonth());
125         assertArraysEqual(new int[]{29, 30, 31, 1, 2, 3, 4},
126                 helper.getDigitsForRow(0));
127     }
128 
129     @SmallTest
testPrevMonthRollOver()130     public void testPrevMonthRollOver() {
131         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
132                 Calendar.JANUARY);
133 
134         helper.previousMonth();
135 
136         assertEquals(2006, helper.getYear());
137         assertEquals(Calendar.DECEMBER, helper.getMonth());
138     }
139 
140     @SmallTest
testNextMonth()141     public void testNextMonth() {
142         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
143                 Calendar.AUGUST, Calendar.SUNDAY);
144 
145         assertArraysEqual(new int[]{29, 30, 31, 1, 2, 3, 4},
146                 helper.getDigitsForRow(0));
147 
148         helper.nextMonth();
149 
150         assertEquals(Calendar.SEPTEMBER, helper.getMonth());
151         assertArraysEqual(new int[]{26, 27, 28, 29, 30, 31, 1},
152                 helper.getDigitsForRow(0));
153     }
154 
155     @SmallTest
testGetRowOf()156     public void testGetRowOf() {
157         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
158                 Calendar.AUGUST, Calendar.SUNDAY);
159 
160         assertEquals(0, helper.getRowOf(2));
161         assertEquals(0, helper.getRowOf(4));
162         assertEquals(2, helper.getRowOf(12));
163         assertEquals(2, helper.getRowOf(18));
164         assertEquals(3, helper.getRowOf(19));
165     }
166 
167     @SmallTest
testGetColumnOf()168     public void testGetColumnOf() {
169         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
170                 Calendar.AUGUST, Calendar.SUNDAY);
171 
172         assertEquals(3, helper.getColumnOf(1));
173         assertEquals(4, helper.getColumnOf(9));
174         assertEquals(5, helper.getColumnOf(17));
175         assertEquals(6, helper.getColumnOf(25));
176         assertEquals(0, helper.getColumnOf(26));
177     }
178 
179     @SmallTest
testWithinCurrentMonth()180     public void testWithinCurrentMonth() {
181         MonthDisplayHelper helper = new MonthDisplayHelper(2007,
182                 Calendar.SEPTEMBER, Calendar.SUNDAY);
183 
184         // out of bounds
185         assertFalse(helper.isWithinCurrentMonth(-1, 3));
186         assertFalse(helper.isWithinCurrentMonth(6, 3));
187         assertFalse(helper.isWithinCurrentMonth(2, -1));
188         assertFalse(helper.isWithinCurrentMonth(2, 7));
189 
190         // last day of previous month
191         assertFalse(helper.isWithinCurrentMonth(0, 5));
192 
193         // first day of next month
194         assertFalse(helper.isWithinCurrentMonth(5, 1));
195 
196         // first day in month
197         assertTrue(helper.isWithinCurrentMonth(0, 6));
198 
199         // last day in month
200         assertTrue(helper.isWithinCurrentMonth(5, 0));
201     }
202 
assertArraysEqual(int[] expected, int[] actual)203     private void assertArraysEqual(int[] expected, int[] actual) {
204         assertEquals("array length", expected.length, actual.length);
205         for (int i = 0; i < expected.length; i++) {
206             assertEquals("index " + i,
207                     expected[i], actual[i]);
208         }
209     }
210 
211 }
212