Home | History | Annotate | Download | only in util
      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 
     21 import java.util.Calendar;
     22 import android.test.suitebuilder.annotation.SmallTest;
     23 
     24 /**
     25  * Unit tests for {@link DayOfMonthCursor}.
     26  */
     27 public 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