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.content.pm.ActivityInfo; 20import android.support.test.filters.LargeTest; 21import android.test.ActivityInstrumentationTestCase; 22import android.util.KeyUtils; 23 24@LargeTest 25public class MenuLayoutPortraitTest extends ActivityInstrumentationTestCase<MenuLayoutPortrait> { 26 private static final String LONG_TITLE = "Really really really really really really really really really really long title"; 27 private static final String SHORT_TITLE = "Item"; 28 29 private MenuLayout mActivity; 30 31 public MenuLayoutPortraitTest() { 32 super("com.android.frameworks.coretests", MenuLayoutPortrait.class); 33 } 34 35 @Override 36 protected void setUp() throws Exception { 37 super.setUp(); 38 mActivity = getActivity(); 39 } 40 41 public void testPreconditions() { 42 assertNotNull(mActivity); 43 } 44 45 private void toggleMenu() { 46 getInstrumentation().waitForIdleSync(); 47 KeyUtils.tapMenuKey(this); 48 getInstrumentation().waitForIdleSync(); 49 } 50 51 /** 52 * Asserts the layout of the menu. 53 * 54 * @param expectedLayout The number of parameters is the number of rows, and 55 * each parameter is how many items on that row. 56 */ 57 private void assertLayout(Integer... expectedLayout) { 58 toggleMenu(); 59 60 /* TODO These need to be rewritten to account for presenters that an activity 61 * does not have access to. 62 IconMenuView iconMenuView = ((IconMenuView) mActivity.getMenuView(MenuBuilder.TYPE_ICON)); 63 int[] layout = iconMenuView.getLayout(); 64 int layoutNumRows = iconMenuView.getLayoutNumRows(); 65 66 int expectedRows = expectedLayout.length; 67 assertEquals("Row mismatch", expectedRows, layoutNumRows); 68 69 for (int row = 0; row < expectedRows; row++) { 70 assertEquals("Col mismatch on row " + row, expectedLayout[row].intValue(), 71 layout[row]); 72 } 73 */ 74 } 75 76 public void test1ShortItem() { 77 mActivity.setParams(new MenuScenario.Params() 78 .setNumItems(1) 79 .setItemTitle(0, SHORT_TITLE)); 80 assertLayout(1); 81 } 82 83 public void test1LongItem() { 84 mActivity.setParams(new MenuScenario.Params() 85 .setNumItems(1) 86 .setItemTitle(0, LONG_TITLE)); 87 assertLayout(1); 88 } 89 90 public void test2LongItems() { 91 mActivity.setParams(new MenuScenario.Params() 92 .setNumItems(2) 93 .setItemTitle(0, LONG_TITLE) 94 .setItemTitle(1, LONG_TITLE)); 95 assertLayout(1, 1); 96 } 97 98 public void test2ShortItems() { 99 mActivity.setParams(new MenuScenario.Params() 100 .setNumItems(2) 101 .setItemTitle(0, SHORT_TITLE) 102 .setItemTitle(1, SHORT_TITLE)); 103 assertLayout(2); 104 } 105 106 public void test3ShortItems() { 107 mActivity.setParams(new MenuScenario.Params() 108 .setNumItems(3) 109 .setItemTitle(0, SHORT_TITLE) 110 .setItemTitle(1, SHORT_TITLE) 111 .setItemTitle(2, SHORT_TITLE)); 112 assertLayout(3); 113 } 114 115 public void test3VarietyItems() { 116 mActivity.setParams(new MenuScenario.Params() 117 .setNumItems(3) 118 .setItemTitle(0, SHORT_TITLE) 119 .setItemTitle(1, LONG_TITLE) 120 .setItemTitle(2, SHORT_TITLE)); 121 // We maintain the order added, so there must be 3 rows 122 assertLayout(1, 1, 1); 123 } 124 125 public void test3VarietyItems2() { 126 mActivity.setParams(new MenuScenario.Params() 127 .setNumItems(3) 128 .setItemTitle(0, LONG_TITLE) 129 .setItemTitle(1, SHORT_TITLE) 130 .setItemTitle(2, SHORT_TITLE)); 131 // The long can fit in first row, and two shorts in second 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(1, 1, 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(2, 2); 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(1, 1, 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(2, 3); 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(1, 2, 2); 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(1, 2, 2); 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(2, 2, 2); 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(3, 3); 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(2, 2, 2); 232 } 233} 234