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