AlertDialogTest.java revision 4219823fcaadde15ed2f1d4a422aa62eb9eadd93
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 250e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard 311db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultzimport android.app.Activity; 42595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.app.AlertDialog; 52595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.ContextWrapper; 62595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.DialogInterface; 71258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richardimport android.view.View; 866ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultzimport android.widget.EditText; 92595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.R; 102595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.Robolectric; 112595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 1272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport org.junit.Test; 1372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport org.junit.runner.RunWith; 1472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 1572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 16874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultzimport static junit.framework.Assert.assertFalse; 179c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwinimport static junit.framework.Assert.assertNull; 18ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richardimport static org.hamcrest.CoreMatchers.equalTo; 194219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultzimport static org.hamcrest.CoreMatchers.not; 20ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richardimport static org.hamcrest.CoreMatchers.nullValue; 21ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richardimport static org.hamcrest.CoreMatchers.sameInstance; 2272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static org.junit.Assert.assertEquals; 236a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawalaimport static org.junit.Assert.assertNotNull; 2472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static org.junit.Assert.assertThat; 25874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultzimport static org.junit.Assert.assertTrue; 262595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysser 2707257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class) 2850e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richardpublic class AlertDialogTest { 2940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams 3072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 3172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilder() throws Exception { 3272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 3372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title").setMessage("message"); 343e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey builder.setCancelable(true); 3572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 3672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 3772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 3872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 3972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 4072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 419c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertEquals("title", shadowAlertDialog.getTitle()); 4272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 433e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey assertThat(shadowAlertDialog.isCancelable(), equalTo(true)); 44ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowOf(ShadowAlertDialog.getLatestAlertDialog()), sameInstance(shadowAlertDialog)); 45ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 46ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard } 47ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard 48ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard @Test 49ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard public void getLatestAlertDialog_shouldReturnARealAlertDialog() throws Exception { 50ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), nullValue()); 51ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard 52ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard AlertDialog dialog = new AlertDialog.Builder(new ContextWrapper(null)).show(); 53ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(dialog)); 5472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 5572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 5672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 574219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz public void shouldOnlyCreateRequestedButtons() throws Exception { 584219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 594219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz builder.setPositiveButton("OK", null); 604219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz AlertDialog dialog = builder.create(); 614219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz dialog.show(); 624219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz assertThat(shadowOf(dialog).getButton(AlertDialog.BUTTON_POSITIVE), not(nullValue())); 634219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz assertThat(shadowOf(dialog).getButton(AlertDialog.BUTTON_NEGATIVE), nullValue()); 644219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz } 654219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz 664219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz @Test 67fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard public void shouldAllowNullButtonListeners() throws Exception { 68fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 69fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard builder.setPositiveButton("OK", null); 70fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog dialog = builder.create(); 71fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard dialog.show(); 72fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard Robolectric.clickOn(dialog.getButton(AlertDialog.BUTTON_POSITIVE)); 73fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard } 74fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard 75fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard @Test 7628dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai public void testSetMessageAfterCreation() { 7728dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 7828dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai builder.setTitle("title").setMessage("message"); 7928dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog alert = builder.create(); 8028dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 8228dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 8328dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8428dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage("new message"); 8528dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("new message")); 8628dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8728dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage(null); 8828dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), nullValue()); 8928dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai } 9028dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 9128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai @Test 9211db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz public void shouldSetMessageFromResourceId() throws Exception { 9311db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new Activity()); 9411db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz builder.setTitle("title").setMessage(R.string.hello); 9511db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 9611db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog alert = builder.create(); 9711db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 9811db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz assertThat(shadowAlertDialog.getMessage(), equalTo("Hello")); 9911db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz } 10011db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 10111db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz @Test 10266ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz public void shouldSetView() throws Exception { 103874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz ContextWrapper context = new ContextWrapper(null); 10466ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(context); 10566ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz EditText view = new EditText(context); 10666ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz builder.setView(view); 10766ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz 10866ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz AlertDialog alert = builder.create(); 10966ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz assertThat(shadowOf(alert).getView(), equalTo((View) view)); 11066ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz } 11166ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz 11266ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz @Test 113874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingPositiveButtonDismissesDialog() throws Exception { 114874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 115591fbfde3bbcdebd4ddd52c73edfc176eef2247bMike Mazur & Tyler Schultz .setPositiveButton("Positive", null).create(); 116874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 117874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 118874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 119874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); 120874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 121874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 122874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 123874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 124874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNeutralButtonDismissesDialog() throws Exception { 125874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 126874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz .setNeutralButton("Neutral", new DialogInterface.OnClickListener() { 127874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Override public void onClick(DialogInterface dialog, int which) { 128874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 129874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz }).create(); 130874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 131874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 132874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 133874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL).performClick(); 134874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 135874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 136874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 137874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 138874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNegativeButtonDismissesDialog() throws Exception { 139874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 140874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz .setNegativeButton("Negative", new DialogInterface.OnClickListener() { 141874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Override public void onClick(DialogInterface dialog, int which) { 142874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 143874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz }).create(); 144874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 145874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 146874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 147874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick(); 148874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 149874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 150874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 151874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 15272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilderWithItemArrayViaResourceId() throws Exception { 15372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 15472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 15572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title"); 15672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setItems(R.array.alertDialogTestItems, new DialogInterface.OnClickListener() { 157ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard @Override 15872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void onClick(DialogInterface dialog, int item) { 15972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin if (item == 0) { 16072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 16172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } else if (item == 1) { 16272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 16372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 16472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin dialog.dismiss(); 16572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 16672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin }); 16772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 16872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 16972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 17072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 17172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 17272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 173ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowAlertDialog.getTitle().toString(), equalTo("title")); 17472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 17572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertEquals(shadowAlertDialog.getItems()[0], "Aloha"); 176ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowOf(ShadowAlertDialog.getLatestAlertDialog()), sameInstance(shadowAlertDialog)); 177ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 17872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 1791258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 1801258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard @Test 1819c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin public void show_setsLatestAlertDialogAndLatestDialog() { 1825117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard AlertDialog alertDialog = new AlertDialog.Builder(Robolectric.application).create(); 1839c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertNull(ShadowDialog.getLatestDialog()); 1845117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertNull(ShadowAlertDialog.getLatestAlertDialog()); 185753d062a9106040be10c39595219774ae656b8f9Mike Grafton 1869c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin alertDialog.show(); 1879c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 1885117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowDialog.getLatestDialog()); 1895117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowAlertDialog.getLatestAlertDialog()); 1909c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin } 1919c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 192753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 193753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldReturnTheIndexOfTheCheckedItemInASingleChoiceDialog() throws Exception { 194753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 195753d062a9106040be10c39595219774ae656b8f9Mike Grafton 196753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, new DialogInterface.OnClickListener() { 197753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 198753d062a9106040be10c39595219774ae656b8f9Mike Grafton 199753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 200753d062a9106040be10c39595219774ae656b8f9Mike Grafton }); 201753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 202753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 203753d062a9106040be10c39595219774ae656b8f9Mike Grafton 204753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(alert.isShowing(), equalTo(true)); 205753d062a9106040be10c39595219774ae656b8f9Mike Grafton 206753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 207753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getCheckedItemIndex(), 1); 208753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getItems()[0], "foo"); 209753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 2105117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 211753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 212753d062a9106040be10c39595219774ae656b8f9Mike Grafton 213753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 214753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldCallTheClickListenerOfTheCheckedItemInASingleChoiceDialog() throws Exception { 215753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 216753d062a9106040be10c39595219774ae656b8f9Mike Grafton 217753d062a9106040be10c39595219774ae656b8f9Mike Grafton TestDialogOnClickListener listener = new TestDialogOnClickListener(); 218753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, listener); 219753d062a9106040be10c39595219774ae656b8f9Mike Grafton 220753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 221753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 222753d062a9106040be10c39595219774ae656b8f9Mike Grafton 223753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 224753d062a9106040be10c39595219774ae656b8f9Mike Grafton shadowAlertDialog.clickOnItem(0); 225753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(listener.clickedItem, equalTo(0)); 226753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(0)); 227753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 228753d062a9106040be10c39595219774ae656b8f9Mike Grafton 2295117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard @Test 2301258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard public void shouldFindViewsByIdIfAViewIsSet() throws Exception { 2311258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard ContextWrapper context = new ContextWrapper(null); 2321258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard AlertDialog dialog = new AlertDialog.Builder(context).create(); 2331258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2341258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), nullValue()); 2351258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2361258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard View view = new View(context); 2371258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard view.setId(99); 2381258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard dialog.setView(view); 2391258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), sameInstance(view)); 2401258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2411258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(66), nullValue()); 2421258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard } 2436a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2446a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala @Test 2456a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala public void shouldDelegateToDialogFindViewByIdIfViewIsNull() { 2466a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala AlertDialog dialog = new AlertDialog(Robolectric.application) { 2476a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala }; 2486a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2496a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertThat(dialog.findViewById(99), nullValue()); 2506a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2516a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala dialog.setContentView(R.layout.main); 2526a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertNotNull(dialog.findViewById(R.id.title)); 2536a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala } 2546a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2556a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 256753d062a9106040be10c39595219774ae656b8f9Mike Grafton private static class TestDialogOnClickListener implements DialogInterface.OnClickListener { 257753d062a9106040be10c39595219774ae656b8f9Mike Grafton private DialogInterface dialog; 258753d062a9106040be10c39595219774ae656b8f9Mike Grafton private int clickedItem; 259753d062a9106040be10c39595219774ae656b8f9Mike Grafton 260753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 261753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.dialog = dialog; 262753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.clickedItem = item; 263753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 264753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 26550e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard} 266