Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(624)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java

Issue 2271413002: bluetooth: Implement RSSI indicator on android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-impl-rssi-tx-power
Patch Set: Copyright and clean up Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.app.Dialog; 7 import android.app.Dialog;
8 import android.content.res.Resources;
9 import android.support.graphics.drawable.VectorDrawableCompat;
8 import android.test.suitebuilder.annotation.LargeTest; 10 import android.test.suitebuilder.annotation.LargeTest;
9 import android.text.SpannableString; 11 import android.text.SpannableString;
10 import android.view.View; 12 import android.view.View;
11 import android.widget.Button; 13 import android.widget.Button;
12 import android.widget.ListView; 14 import android.widget.ListView;
13 15
14 import org.chromium.base.ThreadUtils; 16 import org.chromium.base.ThreadUtils;
15 import org.chromium.base.test.util.RetryOnFailure; 17 import org.chromium.base.test.util.RetryOnFailure;
16 import org.chromium.chrome.R; 18 import org.chromium.chrome.R;
17 import org.chromium.chrome.test.ChromeActivityTestCaseBase; 19 import org.chromium.chrome.test.ChromeActivityTestCaseBase;
18 import org.chromium.content.browser.test.util.Criteria; 20 import org.chromium.content.browser.test.util.Criteria;
19 import org.chromium.content.browser.test.util.CriteriaHelper; 21 import org.chromium.content.browser.test.util.CriteriaHelper;
20 import org.chromium.content.browser.test.util.TouchCommon; 22 import org.chromium.content.browser.test.util.TouchCommon;
21 import org.chromium.ui.widget.TextViewWithClickableSpans; 23 import org.chromium.ui.widget.TextViewWithClickableSpans;
22 24
23 import java.util.concurrent.Callable; 25 import java.util.concurrent.Callable;
24 26
25 /** 27 /**
26 * Tests for the ItemChooserDialog class. 28 * Tests for the ItemChooserDialog class.
27 */ 29 */
28 @RetryOnFailure 30 @RetryOnFailure
29 public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi vity> 31 public class ItemChooserDialogTest extends ChromeActivityTestCaseBase<ChromeActi vity>
30 implements ItemChooserDialog.ItemSelectedCallback { 32 implements ItemChooserDialog.ItemSelectedCallback {
31 33
32 ItemChooserDialog mChooserDialog; 34 ItemChooserDialog mChooserDialog;
33 35
34 String mLastSelectedId = "None"; 36 String mLastSelectedId = "None";
35 37
38 private ItemChooserDialog.ItemChooserRowIcon mTestIcon1;
39 private ItemChooserDialog.ItemChooserRowIcon mTestIcon2;
40
36 public ItemChooserDialogTest() { 41 public ItemChooserDialogTest() {
37 super(ChromeActivity.class); 42 super(ChromeActivity.class);
38 } 43 }
39 44
40 // ChromeActivityTestCaseBase: 45 // ChromeActivityTestCaseBase:
41 46
42 @Override 47 @Override
43 protected void setUp() throws Exception { 48 protected void setUp() throws Exception {
44 super.setUp(); 49 super.setUp();
45 mChooserDialog = createDialog(); 50 Resources resources = getActivity().getResources();
51 mTestIcon1 = new ItemChooserDialog.ItemChooserRowIcon(
52 VectorDrawableCompat.create(resources,
53 R.drawable.ic_signal_cellular_0_bar_grey600_24dp, null / * theme */),
54 VectorDrawableCompat.create(resources,
55 R.drawable.ic_signal_cellular_0_bar_white_24dp, null /* theme */),
56 resources.getQuantityString(R.plurals.signal_strength_level_n_ba rs, 0, 0));
57
58 mTestIcon2 = new ItemChooserDialog.ItemChooserRowIcon(
59 VectorDrawableCompat.create(resources,
60 R.drawable.ic_signal_cellular_1_bar_grey600_24dp, null / * theme */),
61 VectorDrawableCompat.create(resources,
62 R.drawable.ic_signal_cellular_1_bar_white_24dp, null /* theme */),
63 resources.getQuantityString(R.plurals.signal_strength_level_n_ba rs, 1, 1));
46 } 64 }
47 65
48 @Override 66 @Override
49 public void startMainActivity() throws InterruptedException { 67 public void startMainActivity() throws InterruptedException {
50 startMainActivityOnBlankPage(); 68 startMainActivityOnBlankPage();
51 } 69 }
52 70
53 // ItemChooserDialog.ItemSelectedCallback: 71 // ItemChooserDialog.ItemSelectedCallback:
54 72
55 @Override 73 @Override
56 public void onItemSelected(String id) { 74 public void onItemSelected(String id) {
57 mLastSelectedId = id; 75 mLastSelectedId = id;
58 } 76 }
59 77
60 private ItemChooserDialog createDialog() { 78 private ItemChooserDialog createDialog(final boolean usingIcon) {
61 SpannableString title = new SpannableString("title"); 79 SpannableString title = new SpannableString("title");
62 SpannableString searching = new SpannableString("searching"); 80 SpannableString searching = new SpannableString("searching");
63 SpannableString noneFound = new SpannableString("noneFound"); 81 SpannableString noneFound = new SpannableString("noneFound");
64 SpannableString statusActive = new SpannableString("statusActive"); 82 SpannableString statusActive = new SpannableString("statusActive");
65 SpannableString statusIdleNoneFound = new SpannableString("statusIdleNon eFound"); 83 SpannableString statusIdleNoneFound = new SpannableString("statusIdleNon eFound");
66 SpannableString statusIdleSomeFound = new SpannableString("statusIdleSom eFound"); 84 SpannableString statusIdleSomeFound = new SpannableString("statusIdleSom eFound");
67 String positiveButton = new String("positiveButton"); 85 String positiveButton = new String("positiveButton");
68 final ItemChooserDialog.ItemChooserLabels labels = 86 final ItemChooserDialog.ItemChooserLabels labels =
69 new ItemChooserDialog.ItemChooserLabels(title, searching, noneFo und, statusActive, 87 new ItemChooserDialog.ItemChooserLabels(title, searching, noneFo und, statusActive,
70 statusIdleNoneFound, statusIdleSomeFound, positiveButton ); 88 statusIdleNoneFound, statusIdleSomeFound, positiveButton );
71 ItemChooserDialog dialog = ThreadUtils.runOnUiThreadBlockingNoException( 89 ItemChooserDialog dialog = ThreadUtils.runOnUiThreadBlockingNoException(
72 new Callable<ItemChooserDialog>() { 90 new Callable<ItemChooserDialog>() {
73 @Override 91 @Override
74 public ItemChooserDialog call() { 92 public ItemChooserDialog call() {
75 ItemChooserDialog dialog = new ItemChooserDialog( 93 ItemChooserDialog dialog = new ItemChooserDialog(
76 getActivity(), ItemChooserDialogTest.this, l abels); 94 getActivity(), ItemChooserDialogTest.this, l abels, usingIcon);
77 return dialog; 95 return dialog;
78 } 96 }
79 }); 97 });
80 return dialog; 98 return dialog;
81 } 99 }
82 100
83 private void selectItem(Dialog dialog, int position, String expectedItemId, 101 private void selectItem(Dialog dialog, int position, String expectedItemId,
84 boolean expectedEnabledState) throws InterruptedException { 102 boolean expectedEnabledState) throws InterruptedException {
85 final ListView items = (ListView) dialog.findViewById(R.id.items); 103 final ListView items = (ListView) dialog.findViewById(R.id.items);
86 final Button button = (Button) dialog.findViewById(R.id.positive); 104 final Button button = (Button) dialog.findViewById(R.id.positive);
(...skipping 22 matching lines...) Expand all
109 127
110 CriteriaHelper.pollUiThread( 128 CriteriaHelper.pollUiThread(
111 Criteria.equals(expectedItemId, new Callable<String>() { 129 Criteria.equals(expectedItemId, new Callable<String>() {
112 @Override 130 @Override
113 public String call() { 131 public String call() {
114 return mLastSelectedId; 132 return mLastSelectedId;
115 } 133 }
116 })); 134 }));
117 } 135 }
118 136
137 private int getImageContainerVisibilityForItem(ListView items, int pos) {
138 final int first = items.getFirstVisiblePosition();
139 final int last = items.getLastVisiblePosition();
140
141 View item;
142 if (pos < first || pos > last) {
143 item = items.getAdapter().getView(pos, null, items);
144 } else {
145 final int visiblePos = pos - first;
146 item = items.getChildAt(visiblePos);
147 }
148 return item.findViewById(R.id.imageContainer).getVisibility();
149 }
150
119 @LargeTest 151 @LargeTest
120 public void testSimpleItemSelection() throws InterruptedException { 152 public void testSimpleItemSelection() throws InterruptedException {
153 mChooserDialog = createDialog(false /* usingIcon */);
154
121 Dialog dialog = mChooserDialog.getDialogForTesting(); 155 Dialog dialog = mChooserDialog.getDialogForTesting();
122 assertTrue(dialog.isShowing()); 156 assertTrue(dialog.isShowing());
123 157
124 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans) 158 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans)
125 dialog.findViewById(R.id.status); 159 dialog.findViewById(R.id.status);
126 final ListView items = (ListView) dialog.findViewById(R.id.items); 160 final ListView items = (ListView) dialog.findViewById(R.id.items);
127 final Button button = (Button) dialog.findViewById(R.id.positive); 161 final Button button = (Button) dialog.findViewById(R.id.positive);
128 162
129 // Before we add items to the dialog, the 'searching' message should be 163 // Before we add items to the dialog, the 'searching' message should be
130 // showing, the Commit button should be disabled and the list view hidde n. 164 // showing, the Commit button should be disabled and the list view hidde n.
(...skipping 21 matching lines...) Expand all
152 assertFalse(button.isEnabled()); 186 assertFalse(button.isEnabled());
153 187
154 // Select the first item and verify it got selected. 188 // Select the first item and verify it got selected.
155 selectItem(dialog, 1, "key", true); 189 selectItem(dialog, 1, "key", true);
156 190
157 mChooserDialog.dismiss(); 191 mChooserDialog.dismiss();
158 } 192 }
159 193
160 @LargeTest 194 @LargeTest
161 public void testNoItemsAddedDiscoveryIdle() throws InterruptedException { 195 public void testNoItemsAddedDiscoveryIdle() throws InterruptedException {
196 mChooserDialog = createDialog(false /* usingIcon */);
162 Dialog dialog = mChooserDialog.getDialogForTesting(); 197 Dialog dialog = mChooserDialog.getDialogForTesting();
163 assertTrue(dialog.isShowing()); 198 assertTrue(dialog.isShowing());
164 199
165 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans) 200 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans)
166 dialog.findViewById(R.id.status); 201 dialog.findViewById(R.id.status);
167 final ListView items = (ListView) dialog.findViewById(R.id.items); 202 final ListView items = (ListView) dialog.findViewById(R.id.items);
168 final Button button = (Button) dialog.findViewById(R.id.positive); 203 final Button button = (Button) dialog.findViewById(R.id.positive);
169 204
170 // Before we add items to the dialog, the 'searching' message should be 205 // Before we add items to the dialog, the 'searching' message should be
171 // showing, the Commit button should be disabled and the list view hidde n. 206 // showing, the Commit button should be disabled and the list view hidde n.
172 assertEquals("searching", statusView.getText().toString()); 207 assertEquals("searching", statusView.getText().toString());
173 assertFalse(button.isEnabled()); 208 assertFalse(button.isEnabled());
174 assertEquals(View.GONE, items.getVisibility()); 209 assertEquals(View.GONE, items.getVisibility());
175 210
176 mChooserDialog.setIdleState(); 211 mChooserDialog.setIdleState();
177 212
178 // Listview should now be showing empty, with an empty view visible to 213 // Listview should now be showing empty, with an empty view visible to
179 // drive home the point and a status message at the bottom. 214 // drive home the point and a status message at the bottom.
180 assertEquals(View.GONE, items.getVisibility()); 215 assertEquals(View.GONE, items.getVisibility());
181 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility()); 216 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility());
182 assertEquals("statusIdleNoneFound", statusView.getText().toString()); 217 assertEquals("statusIdleNoneFound", statusView.getText().toString());
183 assertFalse(button.isEnabled()); 218 assertFalse(button.isEnabled());
184 219
185 mChooserDialog.dismiss(); 220 mChooserDialog.dismiss();
186 } 221 }
187 222
188 @LargeTest 223 @LargeTest
189 public void testDisabledSelection() throws InterruptedException { 224 public void testDisabledSelection() throws InterruptedException {
225 mChooserDialog = createDialog(false /* usingIcon */);
190 Dialog dialog = mChooserDialog.getDialogForTesting(); 226 Dialog dialog = mChooserDialog.getDialogForTesting();
191 assertTrue(dialog.isShowing()); 227 assertTrue(dialog.isShowing());
192 228
193 mChooserDialog.addOrUpdateItem(new ItemChooserDialog.ItemChooserRow("key ", "key")); 229 mChooserDialog.addOrUpdateItem(new ItemChooserDialog.ItemChooserRow("key ", "key"));
194 mChooserDialog.addOrUpdateItem(new ItemChooserDialog.ItemChooserRow("key 2", "key2")); 230 mChooserDialog.addOrUpdateItem(new ItemChooserDialog.ItemChooserRow("key 2", "key2"));
195 231
196 // Disable one item and try to select it. 232 // Disable one item and try to select it.
197 mChooserDialog.setEnabled("key", false); 233 mChooserDialog.setEnabled("key", false);
198 selectItem(dialog, 1, "None", false); 234 selectItem(dialog, 1, "None", false);
199 // The other is still selectable. 235 // The other is still selectable.
200 selectItem(dialog, 2, "key2", true); 236 selectItem(dialog, 2, "key2", true);
201 237
202 mChooserDialog.dismiss(); 238 mChooserDialog.dismiss();
203 } 239 }
204 240
205 @LargeTest 241 @LargeTest
242 public void testNotUsingIconAdapterRows() throws InterruptedException {
243 mChooserDialog = createDialog(false /* usingIcon */);
244 Dialog dialog = mChooserDialog.getDialogForTesting();
245 assertTrue(dialog.isShowing());
246
247 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
248 final ListView items = (ListView) dialog.findViewById(R.id.items);
249
250 // Initially the itemAdapter is empty.
251 assertTrue(itemAdapter.isEmpty());
252
253 // Add item 1 with no icon.
254 ItemChooserDialog.ItemChooserRow item1 =
255 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
256 mChooserDialog.addOrUpdateItem(item1);
257 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 0));
258
259 ItemChooserDialog.ItemChooserRow item2 =
260 new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1 );
261 mChooserDialog.addOrUpdateItem(item2);
262 assertEquals(View.GONE, getImageContainerVisibilityForItem(items, 1));
263
264 mChooserDialog.setIdleState();
265 mChooserDialog.dismiss();
266 }
267
268 @LargeTest
269 public void testUsingIconAdapterRows() throws InterruptedException {
270 mChooserDialog = createDialog(true /* usingIcon */);
271 Dialog dialog = mChooserDialog.getDialogForTesting();
272 assertTrue(dialog.isShowing());
273
274 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
275 final ListView items = (ListView) dialog.findViewById(R.id.items);
276
277 // Initially the itemAdapter is empty.
278 assertTrue(itemAdapter.isEmpty());
279
280 // Add item 1 with no icon.
281 ItemChooserDialog.ItemChooserRow item1 =
282 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
283 mChooserDialog.addOrUpdateItem(item1);
284 assertEquals(View.INVISIBLE, getImageContainerVisibilityForItem(items, 0 ));
285
286 ItemChooserDialog.ItemChooserRow item2 =
287 new ItemChooserDialog.ItemChooserRow("key2", "desc2", mTestIcon1 );
288 mChooserDialog.addOrUpdateItem(item2);
289 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 1)) ;
290
291 mChooserDialog.setIdleState();
292 mChooserDialog.dismiss();
293 }
294
295 @LargeTest
296 public void testUpdateItemWithIconToNoIcon() throws InterruptedException {
297 mChooserDialog = createDialog(true /* usingIcon */);
298 Dialog dialog = mChooserDialog.getDialogForTesting();
299 assertTrue(dialog.isShowing());
300
301 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
302 final ListView items = (ListView) dialog.findViewById(R.id.items);
303
304 // Initially the itemAdapter is empty.
305 assertTrue(itemAdapter.isEmpty());
306
307 // Add item 1.
308 ItemChooserDialog.ItemChooserRow item1 =
309 new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1 );
310 mChooserDialog.addOrUpdateItem(item1);
311 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
312 assertEquals(1, itemAdapter.getCount());
313 assertEquals(itemAdapter.getItem(0), item1);
314
315 // Add item 1 with no icon.
316 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
317 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
318 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
319 assertEquals(1, itemAdapter.getCount());
320 // We should still see the original item with the icon.
321 ItemChooserDialog.ItemChooserRow expectedItem =
322 new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1 );
323 assertEquals(itemAdapter.getItem(0), expectedItem);
324 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
325
326 mChooserDialog.setIdleState();
327 mChooserDialog.dismiss();
328 }
329
330 @LargeTest
331 public void testUpdateItemWithNoIconToIcon() throws InterruptedException {
332 mChooserDialog = createDialog(true /* usingIcon */);
333 Dialog dialog = mChooserDialog.getDialogForTesting();
334 assertTrue(dialog.isShowing());
335
336 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
337 final ListView items = (ListView) dialog.findViewById(R.id.items);
338
339 // Initially the itemAdapter is empty.
340 assertTrue(itemAdapter.isEmpty());
341
342 // Add item 1 with no icon.
343 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
344 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
345 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
346 assertEquals(View.INVISIBLE, getImageContainerVisibilityForItem(items, 0 ));
347 assertEquals(1, itemAdapter.getCount());
348 assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
349
350 // Add item 1 with icon.
351 ItemChooserDialog.ItemChooserRow item1 =
352 new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1 );
353 mChooserDialog.addOrUpdateItem(item1);
354 assertEquals(1, itemAdapter.getCount());
355 ItemChooserDialog.ItemChooserRow expectedItem =
356 new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1 );
357 assertEquals(itemAdapter.getItem(0), expectedItem);
358 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
359
360 mChooserDialog.setIdleState();
361 mChooserDialog.dismiss();
362 }
363
364 @LargeTest
365 public void testUpdateItemWithNoIconToNoIcon() throws InterruptedException {
366 mChooserDialog = createDialog(true /* usingIcon */);
367 Dialog dialog = mChooserDialog.getDialogForTesting();
368 assertTrue(dialog.isShowing());
369
370 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
371 final ListView items = (ListView) dialog.findViewById(R.id.items);
372
373 // Initially the itemAdapter is empty.
374 assertTrue(itemAdapter.isEmpty());
375
376 // Add item 1 with no icon.
377 ItemChooserDialog.ItemChooserRow item1WithNoIcon =
378 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
379 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
380 assertEquals(View.INVISIBLE, getImageContainerVisibilityForItem(items, 0 ));
381 assertEquals(1, itemAdapter.getCount());
382 assertEquals(itemAdapter.getItem(0), item1WithNoIcon);
383
384 // Add item 1 with no icon again.
385 mChooserDialog.addOrUpdateItem(item1WithNoIcon);
386 assertEquals(1, itemAdapter.getCount());
387 ItemChooserDialog.ItemChooserRow expectedItem =
388 new ItemChooserDialog.ItemChooserRow("key1", "desc1");
389 assertEquals(itemAdapter.getItem(0), expectedItem);
390 assertEquals(View.INVISIBLE, getImageContainerVisibilityForItem(items, 0 ));
391
392 mChooserDialog.setIdleState();
393 mChooserDialog.dismiss();
394 }
395
juncai 2016/09/26 18:49:01 Maybe add some test code to test different color i
396 @LargeTest
206 public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedExc eption { 397 public void testAddOrUpdateItemAndRemoveItemFromList() throws InterruptedExc eption {
398 mChooserDialog = createDialog(true /* usingIcon */);
207 Dialog dialog = mChooserDialog.getDialogForTesting(); 399 Dialog dialog = mChooserDialog.getDialogForTesting();
208 assertTrue(dialog.isShowing()); 400 assertTrue(dialog.isShowing());
209 401
210 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans) 402 TextViewWithClickableSpans statusView = (TextViewWithClickableSpans)
211 dialog.findViewById(R.id.status); 403 dialog.findViewById(R.id.status);
212 final ListView items = (ListView) dialog.findViewById(R.id.items); 404 final ListView items = (ListView) dialog.findViewById(R.id.items);
213 final Button button = (Button) dialog.findViewById(R.id.positive); 405 final Button button = (Button) dialog.findViewById(R.id.positive);
214 406
215 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting(); 407 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
216 ItemChooserDialog.ItemChooserRow nonExistentItem = 408 ItemChooserDialog.ItemChooserRow nonExistentItem =
217 new ItemChooserDialog.ItemChooserRow("key", "key"); 409 new ItemChooserDialog.ItemChooserRow("key", "key");
218 410
219 // Initially the itemAdapter is empty. 411 // Initially the itemAdapter is empty.
220 assertTrue(itemAdapter.isEmpty()); 412 assertTrue(itemAdapter.isEmpty());
221 413
222 // Try removing an item from an empty itemAdapter. 414 // Try removing an item from an empty itemAdapter.
223 mChooserDialog.removeItemFromList(nonExistentItem); 415 mChooserDialog.removeItemFromList(nonExistentItem);
224 assertTrue(itemAdapter.isEmpty()); 416 assertTrue(itemAdapter.isEmpty());
225 417
226 // Add item 1. 418 // Add item 1.
227 ItemChooserDialog.ItemChooserRow item1 = 419 ItemChooserDialog.ItemChooserRow item1 =
228 new ItemChooserDialog.ItemChooserRow("key1", "desc1"); 420 new ItemChooserDialog.ItemChooserRow("key1", "desc1", mTestIcon1 );
229 mChooserDialog.addOrUpdateItem(item1); 421 mChooserDialog.addOrUpdateItem(item1);
230 assertEquals(1, itemAdapter.getCount()); 422 assertEquals(1, itemAdapter.getCount());
231 assertEquals(itemAdapter.getItem(0), item1); 423 assertEquals(itemAdapter.getItem(0), item1);
424 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
232 425
233 // Add item 1 with different description. 426 // Add item 1 with different description and icon.
234 ItemChooserDialog.ItemChooserRow item1_again = 427 ItemChooserDialog.ItemChooserRow item1Again =
235 new ItemChooserDialog.ItemChooserRow("key1", "desc1_again"); 428 new ItemChooserDialog.ItemChooserRow("key1", "desc1_again", mTes tIcon2);
236 mChooserDialog.addOrUpdateItem(item1_again); 429 mChooserDialog.addOrUpdateItem(item1Again);
237 assertEquals(1, itemAdapter.getCount()); 430 assertEquals(1, itemAdapter.getCount());
238 assertEquals(itemAdapter.getItem(0), item1_again); 431 assertEquals(itemAdapter.getItem(0), item1Again);
432 assertEquals(View.VISIBLE, getImageContainerVisibilityForItem(items, 0)) ;
239 433
240 // Add item 2. 434 // Add item 2.
241 ItemChooserDialog.ItemChooserRow item2 = 435 ItemChooserDialog.ItemChooserRow item2 =
242 new ItemChooserDialog.ItemChooserRow("key2", "desc2"); 436 new ItemChooserDialog.ItemChooserRow("key2", "desc2");
243 mChooserDialog.addOrUpdateItem(item2); 437 mChooserDialog.addOrUpdateItem(item2);
244 assertEquals(2, itemAdapter.getCount()); 438 assertEquals(2, itemAdapter.getCount());
245 assertEquals(itemAdapter.getItem(0), item1_again); 439 assertEquals(itemAdapter.getItem(0), item1Again);
246 assertEquals(itemAdapter.getItem(1), item2); 440 assertEquals(itemAdapter.getItem(1), item2);
441 assertEquals(View.INVISIBLE, getImageContainerVisibilityForItem(items, 1 ));
247 442
248 mChooserDialog.setIdleState(); 443 mChooserDialog.setIdleState();
249 444
250 // Try removing an item that doesn't exist. 445 // Try removing an item that doesn't exist.
251 mChooserDialog.removeItemFromList(nonExistentItem); 446 mChooserDialog.removeItemFromList(nonExistentItem);
252 assertEquals(2, itemAdapter.getCount()); 447 assertEquals(2, itemAdapter.getCount());
253 448
254 // Remove item 2. 449 // Remove item 2.
255 mChooserDialog.removeItemFromList(item2); 450 mChooserDialog.removeItemFromList(item2);
256 assertEquals(1, itemAdapter.getCount()); 451 assertEquals(1, itemAdapter.getCount());
257 assertEquals(itemAdapter.getItem(0), item1_again); 452 assertEquals(itemAdapter.getItem(0), item1Again);
258 453
259 // The list should be visible with one item, it should not show 454 // The list should be visible with one item, it should not show
260 // the empty view and the button should not be enabled. 455 // the empty view and the button should not be enabled.
261 // The chooser should show a status message at the bottom. 456 // The chooser should show a status message at the bottom.
262 assertEquals(View.VISIBLE, items.getVisibility()); 457 assertEquals(View.VISIBLE, items.getVisibility());
263 assertEquals(View.GONE, items.getEmptyView().getVisibility()); 458 assertEquals(View.GONE, items.getEmptyView().getVisibility());
264 assertEquals("statusIdleSomeFound", statusView.getText().toString()); 459 assertEquals("statusIdleSomeFound", statusView.getText().toString());
265 assertFalse(button.isEnabled()); 460 assertFalse(button.isEnabled());
266 461
267 // Remove item 1. 462 // Remove item 1.
268 mChooserDialog.removeItemFromList(item1_again); 463 mChooserDialog.removeItemFromList(item1Again);
269 assertTrue(itemAdapter.isEmpty()); 464 assertTrue(itemAdapter.isEmpty());
270 465
271 // Listview should now be showing empty, with an empty view visible 466 // Listview should now be showing empty, with an empty view visible
272 // and the button should not be enabled. 467 // and the button should not be enabled.
273 // The chooser should show a status message at the bottom. 468 // The chooser should show a status message at the bottom.
274 assertEquals(View.GONE, items.getVisibility()); 469 assertEquals(View.GONE, items.getVisibility());
275 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility()); 470 assertEquals(View.VISIBLE, items.getEmptyView().getVisibility());
276 assertEquals("statusIdleNoneFound", statusView.getText().toString()); 471 assertEquals("statusIdleNoneFound", statusView.getText().toString());
277 assertFalse(button.isEnabled()); 472 assertFalse(button.isEnabled());
278 473
279 mChooserDialog.dismiss(); 474 mChooserDialog.dismiss();
280 } 475 }
281 476
282 @LargeTest 477 @LargeTest
283 public void testAddItemWithSameNameToListAndRemoveItemFromList() throws Inte rruptedException { 478 public void testAddItemWithSameNameToListAndRemoveItemFromList() throws Inte rruptedException {
479 mChooserDialog = createDialog(false /* usingIcon */);
284 Dialog dialog = mChooserDialog.getDialogForTesting(); 480 Dialog dialog = mChooserDialog.getDialogForTesting();
285 assertTrue(dialog.isShowing()); 481 assertTrue(dialog.isShowing());
286 482
287 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting(); 483 ItemChooserDialog.ItemAdapter itemAdapter = mChooserDialog.getItemAdapte rForTesting();
288 484
289 // Add item 1. 485 // Add item 1.
290 ItemChooserDialog.ItemChooserRow item1 = 486 ItemChooserDialog.ItemChooserRow item1 =
291 new ItemChooserDialog.ItemChooserRow("device_id_1", "same_device _name"); 487 new ItemChooserDialog.ItemChooserRow("device_id_1", "same_device _name");
292 mChooserDialog.addOrUpdateItem(item1); 488 mChooserDialog.addOrUpdateItem(item1);
293 assertEquals(1, itemAdapter.getCount()); 489 assertEquals(1, itemAdapter.getCount());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 543
348 // 1460 * .3 is 438, which rounds above the maximum height. 544 // 1460 * .3 is 438, which rounds above the maximum height.
349 assertEquals(408, ItemChooserDialog.getListHeight(1460, 1.0f)); 545 assertEquals(408, ItemChooserDialog.getListHeight(1460, 1.0f));
350 546
351 // 1100px is 500dp at a density of 2.2. 500 * .3 is 150dp, which is 48dp * 547 // 1100px is 500dp at a density of 2.2. 500 * .3 is 150dp, which is 48dp *
352 // 3.125. 48dp * 3.5 is 168dp. 168dp * 2.2px/dp is 369.6, which rounds t o 548 // 3.125. 48dp * 3.5 is 168dp. 168dp * 2.2px/dp is 369.6, which rounds t o
353 // 370. 549 // 370.
354 assertEquals(370, ItemChooserDialog.getListHeight(1100, 2.2f)); 550 assertEquals(370, ItemChooserDialog.getListHeight(1100, 2.2f));
355 } 551 }
356 } 552 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698