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 17package android.view.menu; 18 19import android.util.KeyUtils; 20import com.android.internal.view.menu.IconMenuView; 21import com.android.internal.view.menu.MenuBuilder; 22 23import android.content.pm.ActivityInfo; 24import android.test.ActivityInstrumentationTestCase; 25 26public 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