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 MenuLayoutLandscapeTest extends ActivityInstrumentationTestCase<MenuLayoutLandscape> { 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 MenuLayoutLandscapeTest() { 33 super("com.android.frameworks.coretests", MenuLayoutLandscape.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 (the first 57 * parameter is the top-most row). 58 */ 59 private void assertLayout(Integer... expectedLayout) { 60 toggleMenu(); 61 62 /* TODO These need to be rewritten to account for presenters that an activity 63 * does not have access to. 64 IconMenuView iconMenuView = ((IconMenuView) mActivity.getMenuView(MenuBuilder.TYPE_ICON)); 65 int[] layout = iconMenuView.getLayout(); 66 int layoutNumRows = iconMenuView.getLayoutNumRows(); 67 68 int expectedRows = expectedLayout.length; 69 assertEquals("Row mismatch", expectedRows, layoutNumRows); 70 71 for (int row = 0; row < expectedRows; row++) { 72 assertEquals("Col mismatch on row " + row, expectedLayout[row].intValue(), 73 layout[row]); 74 } 75 */ 76 } 77 78 public void test1ShortItem() { 79 mActivity.setParams(new MenuScenario.Params() 80 .setNumItems(1) 81 .setItemTitle(0, SHORT_TITLE)); 82 assertLayout(1); 83 } 84 85 public void test1LongItem() { 86 mActivity.setParams(new MenuScenario.Params() 87 .setNumItems(1) 88 .setItemTitle(0, LONG_TITLE)); 89 assertLayout(1); 90 } 91 92 public void test2LongItems() { 93 mActivity.setParams(new MenuScenario.Params() 94 .setNumItems(2) 95 .setItemTitle(0, LONG_TITLE) 96 .setItemTitle(1, LONG_TITLE)); 97 assertLayout(1, 1); 98 } 99 100 public void test2ShortItems() { 101 mActivity.setParams(new MenuScenario.Params() 102 .setNumItems(2) 103 .setItemTitle(0, SHORT_TITLE) 104 .setItemTitle(1, SHORT_TITLE)); 105 assertLayout(2); 106 } 107 108 public void test3ShortItems() { 109 mActivity.setParams(new MenuScenario.Params() 110 .setNumItems(3) 111 .setItemTitle(0, SHORT_TITLE) 112 .setItemTitle(1, SHORT_TITLE) 113 .setItemTitle(2, SHORT_TITLE)); 114 assertLayout(3); 115 } 116 117 public void test3VarietyItems() { 118 mActivity.setParams(new MenuScenario.Params() 119 .setNumItems(3) 120 .setItemTitle(0, SHORT_TITLE) 121 .setItemTitle(1, LONG_TITLE) 122 .setItemTitle(2, SHORT_TITLE)); 123 assertLayout(1, 2); 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 assertLayout(1, 2); 133 } 134 135 public void test4LongItems() { 136 mActivity.setParams(new MenuScenario.Params() 137 .setNumItems(4) 138 .setItemTitle(0, LONG_TITLE) 139 .setItemTitle(1, LONG_TITLE) 140 .setItemTitle(2, LONG_TITLE) 141 .setItemTitle(3, LONG_TITLE)); 142 assertLayout(2, 2); 143 } 144 145 public void test4ShortItems() { 146 mActivity.setParams(new MenuScenario.Params() 147 .setNumItems(4) 148 .setItemTitle(0, SHORT_TITLE) 149 .setItemTitle(1, SHORT_TITLE) 150 .setItemTitle(2, SHORT_TITLE) 151 .setItemTitle(3, SHORT_TITLE)); 152 assertLayout(4); 153 } 154 155 public void test4VarietyItems() { 156 mActivity.setParams(new MenuScenario.Params() 157 .setNumItems(4) 158 .setItemTitle(0, LONG_TITLE) 159 .setItemTitle(1, SHORT_TITLE) 160 .setItemTitle(2, SHORT_TITLE) 161 .setItemTitle(3, SHORT_TITLE)); 162 assertLayout(2, 2); 163 } 164 165 public void test5ShortItems() { 166 mActivity.setParams(new MenuScenario.Params() 167 .setNumItems(5) 168 .setItemTitle(0, SHORT_TITLE) 169 .setItemTitle(1, SHORT_TITLE) 170 .setItemTitle(2, SHORT_TITLE) 171 .setItemTitle(3, SHORT_TITLE) 172 .setItemTitle(4, SHORT_TITLE)); 173 assertLayout(5); 174 } 175 176 public void test5LongItems() { 177 mActivity.setParams(new MenuScenario.Params() 178 .setNumItems(5) 179 .setItemTitle(0, LONG_TITLE) 180 .setItemTitle(1, LONG_TITLE) 181 .setItemTitle(2, LONG_TITLE) 182 .setItemTitle(3, LONG_TITLE) 183 .setItemTitle(4, LONG_TITLE)); 184 assertLayout(2, 3); 185 } 186 187 public void test5VarietyItems() { 188 mActivity.setParams(new MenuScenario.Params() 189 .setNumItems(5) 190 .setItemTitle(0, LONG_TITLE) 191 .setItemTitle(1, SHORT_TITLE) 192 .setItemTitle(2, LONG_TITLE) 193 .setItemTitle(3, SHORT_TITLE) 194 .setItemTitle(4, LONG_TITLE)); 195 assertLayout(2, 3); 196 } 197 198 public void test6LongItems() { 199 mActivity.setParams(new MenuScenario.Params() 200 .setNumItems(6) 201 .setItemTitle(0, LONG_TITLE) 202 .setItemTitle(1, LONG_TITLE) 203 .setItemTitle(2, LONG_TITLE) 204 .setItemTitle(3, LONG_TITLE) 205 .setItemTitle(4, LONG_TITLE) 206 .setItemTitle(5, LONG_TITLE)); 207 assertLayout(3, 3); 208 } 209 210 public void test6ShortItems() { 211 mActivity.setParams(new MenuScenario.Params() 212 .setNumItems(6) 213 .setItemTitle(0, SHORT_TITLE) 214 .setItemTitle(1, SHORT_TITLE) 215 .setItemTitle(2, SHORT_TITLE) 216 .setItemTitle(3, SHORT_TITLE) 217 .setItemTitle(4, SHORT_TITLE) 218 .setItemTitle(5, SHORT_TITLE)); 219 assertLayout(6); 220 } 221 222 public void test6VarietyItems() { 223 mActivity.setParams(new MenuScenario.Params() 224 .setNumItems(6) 225 .setItemTitle(0, SHORT_TITLE) 226 .setItemTitle(1, LONG_TITLE) 227 .setItemTitle(2, SHORT_TITLE) 228 .setItemTitle(3, LONG_TITLE) 229 .setItemTitle(4, SHORT_TITLE) 230 .setItemTitle(5, SHORT_TITLE)); 231 assertLayout(3, 3); 232 } 233} 234