blob: b053699673aa1b20758b84cf0593efa8973aecd9 [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/**
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
Neal Nguyen1d3165f2010-01-12 13:26:10 -080017package android.view.menu;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080018
Neal Nguyen1d3165f2010-01-12 13:26:10 -080019import android.util.KeyUtils;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080020import 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() {
Neal Nguyen1d3165f2010-01-12 13:26:10 -080033 super("com.android.frameworks.coretests", MenuLayoutPortrait.class);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080034 }
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
Adam Powell696cba52011-03-29 10:38:16 -070061 /* TODO These need to be rewritten to account for presenters that an activity
62 * does not have access to.
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080063 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 }
Adam Powell696cba52011-03-29 10:38:16 -070074 */
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080075 }
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}