Home | History | Annotate | Download | only in menu
      1 /**
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
      5  * use this file except in compliance with the License. You may obtain a copy
      6  * 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, WITHOUT
     12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     13  * License for the specific language governing permissions and limitations
     14  * under the License.
     15  */
     16 
     17 package android.view.menu;
     18 
     19 import android.util.KeyUtils;
     20 import com.android.internal.view.menu.IconMenuView;
     21 import com.android.internal.view.menu.MenuBuilder;
     22 
     23 import android.content.pm.ActivityInfo;
     24 import android.test.ActivityInstrumentationTestCase;
     25 
     26 public class MenuLayoutPortraitTest extends ActivityInstrumentationTestCase<MenuLayoutPortrait> {
     27     private static final String LONG_TITLE = "Really really really really really really really really really really long title";
     28     private static final String SHORT_TITLE = "Item";
     29 
     30     private MenuLayout mActivity;
     31 
     32     public MenuLayoutPortraitTest() {
     33         super("com.android.frameworks.coretests", MenuLayoutPortrait.class);
     34     }
     35 
     36     @Override
     37     protected void setUp() throws Exception {
     38         super.setUp();
     39         mActivity = getActivity();
     40     }
     41 
     42     public void testPreconditions() {
     43         assertNotNull(mActivity);
     44     }
     45 
     46     private void toggleMenu() {
     47         getInstrumentation().waitForIdleSync();
     48         KeyUtils.tapMenuKey(this);
     49         getInstrumentation().waitForIdleSync();
     50     }
     51 
     52     /**
     53      * Asserts the layout of the menu.
     54      *
     55      * @param expectedLayout The number of parameters is the number of rows, and
     56      *            each parameter is how many items on that row.
     57      */
     58     private void assertLayout(Integer... expectedLayout) {
     59         toggleMenu();
     60 
     61         /* TODO These need to be rewritten to account for presenters that an activity
     62          * does not have access to.
     63         IconMenuView iconMenuView = ((IconMenuView) mActivity.getMenuView(MenuBuilder.TYPE_ICON));
     64         int[] layout = iconMenuView.getLayout();
     65         int layoutNumRows = iconMenuView.getLayoutNumRows();
     66 
     67         int expectedRows = expectedLayout.length;
     68         assertEquals("Row mismatch", expectedRows, layoutNumRows);
     69 
     70         for (int row = 0; row < expectedRows; row++) {
     71             assertEquals("Col mismatch on row " + row, expectedLayout[row].intValue(),
     72                     layout[row]);
     73         }
     74          */
     75     }
     76 
     77     public void test1ShortItem() {
     78         mActivity.setParams(new MenuScenario.Params()
     79                 .setNumItems(1)
     80                 .setItemTitle(0, SHORT_TITLE));
     81         assertLayout(1);
     82     }
     83 
     84     public void test1LongItem() {
     85         mActivity.setParams(new MenuScenario.Params()
     86                 .setNumItems(1)
     87                 .setItemTitle(0, LONG_TITLE));
     88         assertLayout(1);
     89     }
     90 
     91     public void test2LongItems() {
     92         mActivity.setParams(new MenuScenario.Params()
     93                 .setNumItems(2)
     94                 .setItemTitle(0, LONG_TITLE)
     95                 .setItemTitle(1, LONG_TITLE));
     96         assertLayout(1, 1);
     97     }
     98 
     99     public void test2ShortItems() {
    100         mActivity.setParams(new MenuScenario.Params()
    101                 .setNumItems(2)
    102                 .setItemTitle(0, SHORT_TITLE)
    103                 .setItemTitle(1, SHORT_TITLE));
    104         assertLayout(2);
    105     }
    106 
    107     public void test3ShortItems() {
    108         mActivity.setParams(new MenuScenario.Params()
    109                 .setNumItems(3)
    110                 .setItemTitle(0, SHORT_TITLE)
    111                 .setItemTitle(1, SHORT_TITLE)
    112                 .setItemTitle(2, SHORT_TITLE));
    113         assertLayout(3);
    114     }
    115 
    116     public void test3VarietyItems() {
    117         mActivity.setParams(new MenuScenario.Params()
    118                 .setNumItems(3)
    119                 .setItemTitle(0, SHORT_TITLE)
    120                 .setItemTitle(1, LONG_TITLE)
    121                 .setItemTitle(2, SHORT_TITLE));
    122         // We maintain the order added, so there must be 3 rows
    123         assertLayout(1, 1, 1);
    124     }
    125 
    126     public void test3VarietyItems2() {
    127         mActivity.setParams(new MenuScenario.Params()
    128                 .setNumItems(3)
    129                 .setItemTitle(0, LONG_TITLE)
    130                 .setItemTitle(1, SHORT_TITLE)
    131                 .setItemTitle(2, SHORT_TITLE));
    132         // The long can fit in first row, and two shorts in second
    133         assertLayout(1, 2);
    134     }
    135 
    136     public void test4LongItems() {
    137         mActivity.setParams(new MenuScenario.Params()
    138                 .setNumItems(4)
    139                 .setItemTitle(0, LONG_TITLE)
    140                 .setItemTitle(1, LONG_TITLE)
    141                 .setItemTitle(2, LONG_TITLE)
    142                 .setItemTitle(3, LONG_TITLE));
    143         assertLayout(1, 1, 2);
    144     }
    145 
    146     public void test4ShortItems() {
    147         mActivity.setParams(new MenuScenario.Params()
    148                 .setNumItems(4)
    149                 .setItemTitle(0, SHORT_TITLE)
    150                 .setItemTitle(1, SHORT_TITLE)
    151                 .setItemTitle(2, SHORT_TITLE)
    152                 .setItemTitle(3, SHORT_TITLE));
    153         assertLayout(2, 2);
    154     }
    155 
    156     public void test4VarietyItems() {
    157         mActivity.setParams(new MenuScenario.Params()
    158                 .setNumItems(4)
    159                 .setItemTitle(0, LONG_TITLE)
    160                 .setItemTitle(1, SHORT_TITLE)
    161                 .setItemTitle(2, SHORT_TITLE)
    162                 .setItemTitle(3, SHORT_TITLE));
    163         assertLayout(1, 1, 2);
    164     }
    165 
    166     public void test5ShortItems() {
    167         mActivity.setParams(new MenuScenario.Params()
    168                 .setNumItems(5)
    169                 .setItemTitle(0, SHORT_TITLE)
    170                 .setItemTitle(1, SHORT_TITLE)
    171                 .setItemTitle(2, SHORT_TITLE)
    172                 .setItemTitle(3, SHORT_TITLE)
    173                 .setItemTitle(4, SHORT_TITLE));
    174         assertLayout(2, 3);
    175     }
    176 
    177     public void test5LongItems() {
    178         mActivity.setParams(new MenuScenario.Params()
    179                 .setNumItems(5)
    180                 .setItemTitle(0, LONG_TITLE)
    181                 .setItemTitle(1, LONG_TITLE)
    182                 .setItemTitle(2, LONG_TITLE)
    183                 .setItemTitle(3, LONG_TITLE)
    184                 .setItemTitle(4, LONG_TITLE));
    185         assertLayout(1, 2, 2);
    186     }
    187 
    188     public void test5VarietyItems() {
    189         mActivity.setParams(new MenuScenario.Params()
    190                 .setNumItems(5)
    191                 .setItemTitle(0, LONG_TITLE)
    192                 .setItemTitle(1, SHORT_TITLE)
    193                 .setItemTitle(2, LONG_TITLE)
    194                 .setItemTitle(3, SHORT_TITLE)
    195                 .setItemTitle(4, LONG_TITLE));
    196         assertLayout(1, 2, 2);
    197     }
    198 
    199     public void test6LongItems() {
    200         mActivity.setParams(new MenuScenario.Params()
    201                 .setNumItems(6)
    202                 .setItemTitle(0, LONG_TITLE)
    203                 .setItemTitle(1, LONG_TITLE)
    204                 .setItemTitle(2, LONG_TITLE)
    205                 .setItemTitle(3, LONG_TITLE)
    206                 .setItemTitle(4, LONG_TITLE)
    207                 .setItemTitle(5, LONG_TITLE));
    208         assertLayout(2, 2, 2);
    209     }
    210 
    211     public void test6ShortItems() {
    212         mActivity.setParams(new MenuScenario.Params()
    213                 .setNumItems(6)
    214                 .setItemTitle(0, SHORT_TITLE)
    215                 .setItemTitle(1, SHORT_TITLE)
    216                 .setItemTitle(2, SHORT_TITLE)
    217                 .setItemTitle(3, SHORT_TITLE)
    218                 .setItemTitle(4, SHORT_TITLE)
    219                 .setItemTitle(5, SHORT_TITLE));
    220         assertLayout(3, 3);
    221     }
    222 
    223     public void test6VarietyItems() {
    224         mActivity.setParams(new MenuScenario.Params()
    225                 .setNumItems(6)
    226                 .setItemTitle(0, SHORT_TITLE)
    227                 .setItemTitle(1, LONG_TITLE)
    228                 .setItemTitle(2, SHORT_TITLE)
    229                 .setItemTitle(3, LONG_TITLE)
    230                 .setItemTitle(4, SHORT_TITLE)
    231                 .setItemTitle(5, SHORT_TITLE));
    232         assertLayout(2, 2, 2);
    233     }
    234 }
    235