1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy 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, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.app.cts; 18 19 import java.util.ArrayList; 20 21 import android.app.Activity; 22 import android.app.AlertDialog; 23 import android.app.Instrumentation; 24 import android.app.AlertDialog.Builder; 25 import android.content.ContentResolver; 26 import android.content.ContentValues; 27 import android.content.Context; 28 import android.content.DialogInterface; 29 import android.content.DialogInterface.OnCancelListener; 30 import android.content.DialogInterface.OnClickListener; 31 import android.content.DialogInterface.OnKeyListener; 32 import android.content.DialogInterface.OnMultiChoiceClickListener; 33 import android.cts.util.PollingCheck; 34 import android.database.Cursor; 35 import android.database.CursorWrapper; 36 import android.graphics.drawable.Drawable; 37 import android.provider.Contacts.People; 38 import android.test.ActivityInstrumentationTestCase2; 39 import android.view.KeyEvent; 40 import android.view.View; 41 import android.widget.AdapterView; 42 import android.widget.ArrayAdapter; 43 import android.widget.Button; 44 import android.widget.FrameLayout; 45 import android.widget.ListAdapter; 46 import android.widget.ListView; 47 import android.widget.AdapterView.OnItemSelectedListener; 48 49 50 public class AlertDialog_BuilderTest extends ActivityInstrumentationTestCase2<DialogStubActivity> { 51 private Builder mBuilder; 52 private Context mContext; 53 private Instrumentation mInstrumentation; 54 private final CharSequence mTitle = "title"; 55 private Drawable mDrawable; 56 private AlertDialog mDialog; 57 private Button mButton; 58 private boolean mResult; 59 private boolean mItemSelected; 60 private CharSequence mSelectedItem; 61 private final String[] mPROJECTION = new String[] { 62 People._ID, People.NAME 63 }; 64 65 private View mView; 66 private ListView mListView; 67 private ArrayList<Integer> mSelectedItems; 68 private FrameLayout mFrameLayout; 69 70 private OnClickListener mOnClickListener = new OnClickListener() { 71 public void onClick(DialogInterface dialog, int which) { 72 mResult = true; 73 } 74 }; 75 76 private OnCancelListener mOnCancelListener = new OnCancelListener() { 77 public void onCancel(DialogInterface dialog) { 78 mResult = true; 79 } 80 }; 81 82 private OnKeyListener mOnKeyListener = new OnKeyListener() { 83 public boolean onKey(DialogInterface dialog, int key, KeyEvent envnt) { 84 mResult = true; 85 return true; 86 } 87 }; 88 89 private OnItemSelectedListener mOnItemSelectedListener = new OnItemSelectedListener() { 90 public void onItemSelected(AdapterView parent, View v, int position, long id) { 91 mItemSelected = true; 92 } 93 94 public void onNothingSelected(AdapterView parent) { 95 } 96 97 }; 98 99 private OnMultiChoiceClickListener mOnMultiChoiceClickListener = 100 new OnMultiChoiceClickListener() { 101 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 102 mSelectedItems.add(which); 103 mResult = true; 104 } 105 }; 106 107 @Override setUp()108 protected void setUp() throws Exception { 109 super.setUp(); 110 mBuilder = null; 111 mInstrumentation = getInstrumentation(); 112 mContext = getActivity(); 113 final Activity activity = getActivity(); 114 new PollingCheck() { 115 @Override 116 protected boolean check() { 117 return activity.hasWindowFocus(); 118 } 119 }.run(); 120 mButton = null; 121 mView = null; 122 mListView = null; 123 mDialog = null; 124 mItemSelected = false; 125 mSelectedItem = null; 126 mSelectedItems = new ArrayList<Integer>(); 127 } 128 AlertDialog_BuilderTest()129 public AlertDialog_BuilderTest() { 130 super("com.android.cts.app.stub", DialogStubActivity.class); 131 } 132 testConstructor()133 public void testConstructor() { 134 new AlertDialog.Builder(mContext); 135 } 136 testSetIconWithParamInt()137 public void testSetIconWithParamInt() throws Throwable { 138 runTestOnUiThread(new Runnable() { 139 public void run() { 140 mDrawable = mContext.getResources().getDrawable(android.R.drawable.btn_default); 141 mBuilder = new AlertDialog.Builder(mContext); 142 mBuilder.setIcon(android.R.drawable.btn_default); 143 mDialog = mBuilder.show(); 144 } 145 }); 146 mInstrumentation.waitForIdleSync(); 147 } 148 testSetIconWithParamDrawable()149 public void testSetIconWithParamDrawable() throws Throwable { 150 runTestOnUiThread(new Runnable() { 151 public void run() { 152 mDrawable = mContext.getResources().getDrawable(android.R.drawable.btn_default); 153 mBuilder = new AlertDialog.Builder(mContext); 154 mBuilder.setIcon(mDrawable); 155 mDialog = mBuilder.show(); 156 } 157 }); 158 mInstrumentation.waitForIdleSync(); 159 } 160 testSetPositiveButtonWithParamInt()161 public void testSetPositiveButtonWithParamInt() throws Throwable { 162 runTestOnUiThread(new Runnable() { 163 public void run() { 164 mBuilder = new AlertDialog.Builder(mContext); 165 mBuilder.setPositiveButton(android.R.string.yes, mOnClickListener); 166 mDialog = mBuilder.show(); 167 mButton = mDialog.getButton(DialogInterface.BUTTON_POSITIVE); 168 mButton.performClick(); 169 } 170 }); 171 mInstrumentation.waitForIdleSync(); 172 173 assertEquals(mContext.getText(android.R.string.yes), mButton.getText()); 174 assertTrue(mResult); 175 } 176 testSetPositiveButtonWithParamCharSequence()177 public void testSetPositiveButtonWithParamCharSequence() throws Throwable { 178 runTestOnUiThread(new Runnable() { 179 public void run() { 180 mBuilder = new AlertDialog.Builder(mContext); 181 mBuilder.setPositiveButton(android.R.string.yes, mOnClickListener); 182 mDialog = mBuilder.show(); 183 mButton = mDialog.getButton(DialogInterface.BUTTON_POSITIVE); 184 mButton.performClick(); 185 } 186 }); 187 mInstrumentation.waitForIdleSync(); 188 assertEquals(mContext.getText(android.R.string.yes), mButton.getText()); 189 assertTrue(mResult); 190 } 191 testSetNegativeButtonWithParamCharSequence()192 public void testSetNegativeButtonWithParamCharSequence() throws Throwable { 193 runTestOnUiThread(new Runnable() { 194 public void run() { 195 mBuilder = new AlertDialog.Builder(mContext); 196 mBuilder.setNegativeButton(mTitle, mOnClickListener); 197 mDialog = mBuilder.show(); 198 mButton = mDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 199 mButton.performClick(); 200 } 201 }); 202 mInstrumentation.waitForIdleSync(); 203 assertEquals(mTitle, mButton.getText()); 204 assertTrue(mResult); 205 } 206 testSetNegativeButtonWithParamInt()207 public void testSetNegativeButtonWithParamInt() throws Throwable { 208 runTestOnUiThread(new Runnable() { 209 public void run() { 210 mBuilder = new AlertDialog.Builder(mContext); 211 mBuilder.setNegativeButton(com.android.cts.app.stub.R.string.notify, mOnClickListener); 212 mDialog = mBuilder.show(); 213 mButton = mDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 214 mButton.performClick(); 215 } 216 }); 217 mInstrumentation.waitForIdleSync(); 218 assertEquals(mContext.getText(com.android.cts.app.stub.R.string.notify), mButton.getText()); 219 assertTrue(mResult); 220 } 221 testSetNeutralButtonWithParamInt()222 public void testSetNeutralButtonWithParamInt() throws Throwable { 223 runTestOnUiThread(new Runnable() { 224 public void run() { 225 mBuilder = new AlertDialog.Builder(mContext); 226 mBuilder.setNeutralButton(com.android.cts.app.stub.R.string.notify, mOnClickListener); 227 mDialog = mBuilder.show(); 228 mButton = mDialog.getButton(DialogInterface.BUTTON_NEUTRAL); 229 mButton.performClick(); 230 } 231 }); 232 mInstrumentation.waitForIdleSync(); 233 assertEquals(mContext.getText(com.android.cts.app.stub.R.string.notify), mButton.getText()); 234 assertTrue(mResult); 235 } 236 testSetNeutralButtonWithParamCharSequence()237 public void testSetNeutralButtonWithParamCharSequence() throws Throwable { 238 runTestOnUiThread(new Runnable() { 239 public void run() { 240 mBuilder = new AlertDialog.Builder(mContext); 241 mBuilder.setNeutralButton(mTitle, mOnClickListener); 242 mDialog = mBuilder.show(); 243 mButton = mDialog.getButton(DialogInterface.BUTTON_NEUTRAL); 244 mButton.performClick(); 245 } 246 }); 247 mInstrumentation.waitForIdleSync(); 248 assertEquals(mTitle, mButton.getText()); 249 assertTrue(mResult); 250 } 251 testCancelable(final boolean cancelable)252 private void testCancelable(final boolean cancelable) throws Throwable { 253 runTestOnUiThread(new Runnable() { 254 public void run() { 255 mBuilder = new AlertDialog.Builder(mContext); 256 mBuilder.setCancelable(cancelable); 257 mDialog = mBuilder.show(); 258 } 259 }); 260 mInstrumentation.waitForIdleSync(); 261 new PollingCheck() { 262 @Override 263 protected boolean check() { 264 return mDialog.isShowing(); 265 } 266 }.run(); 267 mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); 268 mInstrumentation.waitForIdleSync(); 269 new PollingCheck() { 270 @Override 271 protected boolean check() { 272 boolean showing = mDialog.isShowing(); 273 if (cancelable) { 274 // if the dialog is cancelable, then pressing back 275 // should cancel it. Thus it should not be showing 276 return !showing; 277 } else { 278 // if the dialog is not cancelable, pressing back 279 // should so nothing and it should still be showing 280 return showing; 281 } 282 } 283 }.run(); 284 } 285 testSetCancelable()286 public void testSetCancelable() throws Throwable { 287 testCancelable(true); 288 } 289 testDisableCancelable()290 public void testDisableCancelable() throws Throwable { 291 testCancelable(false); 292 } 293 testSetOnCancelListener()294 public void testSetOnCancelListener() throws Throwable { 295 runTestOnUiThread(new Runnable() { 296 public void run() { 297 mBuilder = new AlertDialog.Builder(mContext); 298 mBuilder.setOnCancelListener(mOnCancelListener); 299 mDialog = mBuilder.show(); 300 mDialog.cancel(); 301 } 302 }); 303 mInstrumentation.waitForIdleSync(); 304 assertTrue(mResult); 305 } 306 testSetOnKeyListener()307 public void testSetOnKeyListener() throws Throwable { 308 runTestOnUiThread(new Runnable() { 309 public void run() { 310 mBuilder = new AlertDialog.Builder(mContext); 311 mBuilder.setOnKeyListener(mOnKeyListener); 312 mDialog = mBuilder.show(); 313 } 314 }); 315 mInstrumentation.waitForIdleSync(); 316 sendKeys(KeyEvent.ACTION_DOWN, KeyEvent.ACTION_DOWN); 317 assertTrue(mResult); 318 } 319 testSetItemsWithParamInt()320 public void testSetItemsWithParamInt() throws Throwable { 321 runTestOnUiThread(new Runnable() { 322 public void run() { 323 mBuilder = new AlertDialog.Builder(mContext); 324 mBuilder.setItems(com.android.cts.app.stub.R.array.difficultyLevel, mOnClickListener); 325 mDialog = mBuilder.show(); 326 mListView = mDialog.getListView(); 327 } 328 }); 329 mInstrumentation.waitForIdleSync(); 330 331 final CharSequence[] levels = mContext.getResources().getTextArray( 332 com.android.cts.app.stub.R.array.difficultyLevel); 333 assertEquals(levels[0], mListView.getItemAtPosition(0)); 334 } 335 testSetItemsWithParamCharSequence()336 public void testSetItemsWithParamCharSequence() throws Throwable { 337 final CharSequence[] expect = mContext.getResources().getTextArray( 338 com.android.cts.app.stub.R.array.difficultyLevel); 339 340 runTestOnUiThread(new Runnable() { 341 public void run() { 342 mBuilder = new AlertDialog.Builder(mContext); 343 mBuilder.setItems(expect, mOnClickListener); 344 mDialog = mBuilder.show(); 345 mListView = mDialog.getListView(); 346 } 347 }); 348 mInstrumentation.waitForIdleSync(); 349 assertEquals(expect[0], mListView.getItemAtPosition(0)); 350 } 351 testSetAdapter()352 public void testSetAdapter() throws Throwable { 353 final ListAdapter adapter = new AdapterTest(); 354 runTestOnUiThread(new Runnable() { 355 public void run() { 356 mBuilder = new AlertDialog.Builder(mContext); 357 mBuilder.setAdapter(adapter, mOnClickListener); 358 mDialog = mBuilder.show(); 359 mListView = mDialog.getListView(); 360 } 361 }); 362 mInstrumentation.waitForIdleSync(); 363 assertEquals(adapter, mListView.getAdapter()); 364 } 365 testSetCursor()366 public void testSetCursor() throws Throwable { 367 preparePeople(); 368 final Cursor c = mContext.getContentResolver().query(People.CONTENT_URI, mPROJECTION, null, 369 null, null); 370 371 runTestOnUiThread(new Runnable() { 372 public void run() { 373 mBuilder = new AlertDialog.Builder(mContext); 374 mBuilder.setCursor(c, mOnClickListener, People.NAME); 375 mDialog = mBuilder.show(); 376 mListView = mDialog.getListView(); 377 mListView.performItemClick(null, 0, 0); 378 } 379 }); 380 mInstrumentation.waitForIdleSync(); 381 final CursorWrapper selected = (CursorWrapper)mListView.getSelectedItem(); 382 assertEquals(c.getString(1), selected.getString(1)); 383 assertTrue(mResult); 384 } 385 testSetMultiChoiceItemsWithParamInt()386 public void testSetMultiChoiceItemsWithParamInt() throws Throwable { 387 388 final CharSequence[] items = mContext.getResources().getTextArray( 389 com.android.cts.app.stub.R.array.difficultyLevel); 390 391 runTestOnUiThread(new Runnable() { 392 public void run() { 393 mBuilder = new AlertDialog.Builder(mContext); 394 mBuilder.setMultiChoiceItems(com.android.cts.app.stub.R.array.difficultyLevel, null, 395 mOnMultiChoiceClickListener); 396 mDialog = mBuilder.show(); 397 mListView = mDialog.getListView(); 398 mSelectedItem = (CharSequence)mListView.getSelectedItem(); 399 mListView.performItemClick(null, 0, 0); 400 mListView.performItemClick(null, 1, 0); 401 } 402 }); 403 mInstrumentation.waitForIdleSync(); 404 assertEquals(items[0], mSelectedItem); 405 assertEquals(2, mSelectedItems.size()); 406 assertEquals(items[0], mListView.getItemAtPosition(0)); 407 assertTrue(mResult); 408 } 409 testSetMultiChoiceItemsWithParamCharSequence()410 public void testSetMultiChoiceItemsWithParamCharSequence() throws Throwable { 411 final CharSequence[] items = mContext.getResources().getTextArray( 412 com.android.cts.app.stub.R.array.difficultyLevel); 413 414 runTestOnUiThread(new Runnable() { 415 public void run() { 416 mBuilder = new AlertDialog.Builder(mContext); 417 mBuilder.setMultiChoiceItems(items, null, mOnMultiChoiceClickListener); 418 mDialog = mBuilder.show(); 419 mListView = mDialog.getListView(); 420 mSelectedItem = (CharSequence)mListView.getSelectedItem(); 421 mListView.performItemClick(null, 0, 0); 422 mListView.performItemClick(null, 1, 0); 423 } 424 }); 425 mInstrumentation.waitForIdleSync(); 426 assertEquals(items[0], mSelectedItem); 427 assertEquals(2, mSelectedItems.size()); 428 assertEquals(items[0], mListView.getItemAtPosition(0)); 429 assertTrue(mResult); 430 } 431 testSetMultiChoiceItemsWithParamCursor()432 public void testSetMultiChoiceItemsWithParamCursor() throws Throwable { 433 preparePeople(); 434 final Cursor c = mContext.getContentResolver().query(People.CONTENT_URI, mPROJECTION, null, 435 null, null); 436 437 runTestOnUiThread(new Runnable() { 438 public void run() { 439 mBuilder = new AlertDialog.Builder(mContext); 440 mBuilder.setMultiChoiceItems(c, People.NAME, People.NAME, 441 mOnMultiChoiceClickListener); 442 mDialog = mBuilder.show(); 443 mListView = mDialog.getListView(); 444 mListView.performItemClick(null, 0, 0); 445 mListView.performItemClick(null, 1, 0); 446 } 447 }); 448 mInstrumentation.waitForIdleSync(); 449 final CursorWrapper selected = (CursorWrapper)mListView.getSelectedItem(); 450 assertEquals(c.getString(1), selected.getString(1)); 451 assertEquals(2, mSelectedItems.size()); 452 assertTrue(mResult); 453 } 454 testSetSingleChoiceItemsWithParamInt()455 public void testSetSingleChoiceItemsWithParamInt() throws Throwable { 456 final CharSequence[] items = mContext.getResources().getTextArray( 457 com.android.cts.app.stub.R.array.difficultyLevel); 458 459 runTestOnUiThread(new Runnable() { 460 public void run() { 461 mBuilder = new AlertDialog.Builder(mContext); 462 mBuilder.setSingleChoiceItems(com.android.cts.app.stub.R.array.difficultyLevel, 0, 463 mOnClickListener); 464 mDialog = mBuilder.show(); 465 mListView = mDialog.getListView(); 466 mSelectedItem = (CharSequence)mListView.getSelectedItem(); 467 mListView.performItemClick(null, 0, 0); 468 } 469 }); 470 mInstrumentation.waitForIdleSync(); 471 assertEquals(items[0], mSelectedItem); 472 assertEquals(items[0], mListView.getItemAtPosition(0)); 473 assertTrue(mResult); 474 } 475 preparePeople()476 private void preparePeople() { 477 final ContentResolver mResolver = mContext.getContentResolver(); 478 mResolver.delete(People.CONTENT_URI, null, null); 479 final ContentValues valuse = new ContentValues(); 480 valuse.put(People._ID, "1"); 481 valuse.put(People.NAME, "name"); 482 mResolver.insert(People.CONTENT_URI, valuse); 483 } 484 testSetSingleChoiceItemsWithParamCursor()485 public void testSetSingleChoiceItemsWithParamCursor() throws Throwable { 486 final String[] PROJECTION = new String[] { 487 People._ID, People.NAME 488 }; 489 preparePeople(); 490 final Cursor c = mContext.getContentResolver().query(People.CONTENT_URI, PROJECTION, null, 491 null, null); 492 493 runTestOnUiThread(new Runnable() { 494 public void run() { 495 mBuilder = new AlertDialog.Builder(mContext); 496 mBuilder.setSingleChoiceItems(c, 0, People.NAME, mOnClickListener); 497 mDialog = mBuilder.show(); 498 mListView = mDialog.getListView(); 499 mListView.performItemClick(null, 0, 0); 500 } 501 }); 502 mInstrumentation.waitForIdleSync(); 503 final CursorWrapper selected = (CursorWrapper)mListView.getSelectedItem(); 504 assertEquals(c.getString(1), selected.getString(1)); 505 assertTrue(mResult); 506 } 507 testSetSingleChoiceItemsWithParamCharSequence()508 public void testSetSingleChoiceItemsWithParamCharSequence() throws Throwable { 509 final CharSequence[] items = mContext.getResources().getTextArray( 510 com.android.cts.app.stub.R.array.difficultyLevel); 511 512 runTestOnUiThread(new Runnable() { 513 public void run() { 514 mBuilder = new AlertDialog.Builder(mContext); 515 mBuilder.setSingleChoiceItems(items, 0, mOnClickListener); 516 mDialog = mBuilder.show(); 517 mListView = mDialog.getListView(); 518 mSelectedItem = (CharSequence)mListView.getSelectedItem(); 519 mListView.performItemClick(null, 0, 0); 520 } 521 }); 522 mInstrumentation.waitForIdleSync(); 523 assertEquals(items[0], mSelectedItem); 524 assertEquals(items[0], mListView.getItemAtPosition(0)); 525 assertTrue(mResult); 526 } 527 testSetSingleChoiceItems()528 public void testSetSingleChoiceItems() throws Throwable { 529 final CharSequence[] items = mContext.getResources().getTextArray( 530 com.android.cts.app.stub.R.array.difficultyLevel); 531 532 runTestOnUiThread(new Runnable() { 533 public void run() { 534 mBuilder = new AlertDialog.Builder(mContext); 535 mBuilder.setSingleChoiceItems(new ArrayAdapter<CharSequence>(mContext, 536 android.R.layout.select_dialog_singlechoice, android.R.id.text1, items), 0, 537 mOnClickListener); 538 mDialog = mBuilder.show(); 539 mListView = mDialog.getListView(); 540 mSelectedItem = (CharSequence)mListView.getSelectedItem(); 541 mListView.performItemClick(null, 0, 0); 542 } 543 }); 544 mInstrumentation.waitForIdleSync(); 545 assertEquals(items[0], mSelectedItem); 546 assertEquals(items[0], mListView.getItemAtPosition(0)); 547 assertTrue(mResult); 548 } 549 testSetOnItemSelectedListener()550 public void testSetOnItemSelectedListener() throws Throwable { 551 runTestOnUiThread(new Runnable() { 552 public void run() { 553 mBuilder = new AlertDialog.Builder(mContext); 554 mBuilder.setOnItemSelectedListener(mOnItemSelectedListener); 555 mBuilder.setItems(com.android.cts.app.stub.R.array.difficultyLevel, mOnClickListener); 556 mDialog = mBuilder.show(); 557 mListView = mDialog.getListView(); 558 mListView.pointToPosition(0, 0); 559 } 560 }); 561 mInstrumentation.waitForIdleSync(); 562 assertTrue(mItemSelected); 563 } 564 testSetView()565 public void testSetView() throws Throwable { 566 final View view = new View(mContext); 567 view.setId(100); 568 runTestOnUiThread(new Runnable() { 569 public void run() { 570 mBuilder = new AlertDialog.Builder(mContext); 571 mBuilder.setView(view); 572 mDialog = mBuilder.show(); 573 mView = mDialog.getWindow().findViewById(100); 574 } 575 }); 576 mInstrumentation.waitForIdleSync(); 577 assertEquals(view, mView); 578 } 579 testSetViewCustom()580 public void testSetViewCustom() throws Throwable { 581 final int viewSpacingLeft = 10; 582 final int viewSpacingTop = 20; 583 final int viewSpacingRight = 30; 584 final int viewSpacingBottom = 40; 585 final View view = new View(mContext); 586 view.setId(100); 587 runTestOnUiThread(new Runnable() { 588 public void run() { 589 mBuilder = new AlertDialog.Builder(mContext); 590 mBuilder.setView(view, viewSpacingLeft, viewSpacingTop, viewSpacingRight, 591 viewSpacingBottom); 592 mDialog = mBuilder.show(); 593 mView = mDialog.getWindow().findViewById(100); 594 } 595 }); 596 mInstrumentation.waitForIdleSync(); 597 assertEquals(view, mView); 598 } 599 testSetInverseBackgroundForced()600 public void testSetInverseBackgroundForced() throws Throwable { 601 runTestOnUiThread(new Runnable() { 602 public void run() { 603 mBuilder = new AlertDialog.Builder(mContext); 604 mBuilder.setInverseBackgroundForced(true); 605 mDialog = mBuilder.create(); 606 mDialog.show(); 607 } 608 }); 609 mInstrumentation.waitForIdleSync(); 610 } 611 testCreate()612 public void testCreate() throws Throwable { 613 runTestOnUiThread(new Runnable() { 614 public void run() { 615 mBuilder = new AlertDialog.Builder(mContext); 616 mDialog = mBuilder.create(); 617 mDialog.show(); 618 } 619 }); 620 mInstrumentation.waitForIdleSync(); 621 assertNotNull(mDialog); 622 assertTrue(mDialog.isShowing()); 623 } 624 testShow()625 public void testShow() throws Throwable { 626 runTestOnUiThread(new Runnable() { 627 public void run() { 628 mBuilder = new AlertDialog.Builder(mContext); 629 mDialog = mBuilder.show(); 630 } 631 }); 632 mInstrumentation.waitForIdleSync(); 633 assertTrue(mDialog.isShowing()); 634 } 635 636 private static class AdapterTest implements android.widget.ListAdapter { areAllItemsEnabled()637 public boolean areAllItemsEnabled() { 638 return true; 639 } 640 isEnabled(int position)641 public boolean isEnabled(int position) { 642 return false; 643 } 644 getCount()645 public int getCount() { 646 return 0; 647 } 648 getItem(int position)649 public Object getItem(int position) { 650 return null; 651 } 652 getItemId(int position)653 public long getItemId(int position) { 654 return 0; 655 } 656 getItemViewType(int position)657 public int getItemViewType(int position) { 658 return 0; 659 } 660 getView( int position, android.view.View convertView, android.view.ViewGroup parent)661 public android.view.View getView( int position, 662 android.view.View convertView, 663 android.view.ViewGroup parent){ 664 return null; 665 } 666 getViewTypeCount()667 public int getViewTypeCount() { 668 return 1; 669 } 670 hasStableIds()671 public boolean hasStableIds() { 672 return false; 673 } 674 isEmpty()675 public boolean isEmpty() { 676 return true; 677 } 678 registerDataSetObserver( android.database.DataSetObserver observer)679 public void registerDataSetObserver( 680 android.database.DataSetObserver observer) { 681 } 682 unregisterDataSetObserver( android.database.DataSetObserver observer)683 public void unregisterDataSetObserver( 684 android.database.DataSetObserver observer) { 685 } 686 } 687 } 688