AlertDialogTest.java revision d9715ea3daabfd16495e39d4af2a37b400a35150
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 113d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz public void shouldSetCustomTitleView() throws Exception { 114d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz ContextWrapper context = new ContextWrapper(null); 115d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(context); 116d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz View view = new View(context); 117d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz assertThat(builder.setCustomTitle(view), sameInstance(builder)); 118d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz 119d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz AlertDialog alert = builder.create(); 120d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz assertThat(shadowOf(alert).getCustomTitleView(), equalTo((View) view)); 121d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz } 122d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz 123d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz @Test 124874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingPositiveButtonDismissesDialog() throws Exception { 125874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 126591fbfde3bbcdebd4ddd52c73edfc176eef2247bMike Mazur & Tyler Schultz .setPositiveButton("Positive", null).create(); 127874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 128874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 129874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 130874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); 131874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 132874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 133874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 134874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 135874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNeutralButtonDismissesDialog() throws Exception { 136874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 137874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz .setNeutralButton("Neutral", new DialogInterface.OnClickListener() { 138874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Override public void onClick(DialogInterface dialog, int which) { 139874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 140874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz }).create(); 141874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 142874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 143874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 144874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL).performClick(); 145874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 146874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 147874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 148874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 149874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNegativeButtonDismissesDialog() throws Exception { 150874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 151874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz .setNegativeButton("Negative", new DialogInterface.OnClickListener() { 152874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Override public void onClick(DialogInterface dialog, int which) { 153874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 154874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz }).create(); 155874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 156874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 157874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 158874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick(); 159874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 160874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 161874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 162874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 16372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilderWithItemArrayViaResourceId() throws Exception { 16472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 16572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 16672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title"); 16772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setItems(R.array.alertDialogTestItems, new DialogInterface.OnClickListener() { 168ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard @Override 16972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void onClick(DialogInterface dialog, int item) { 17072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin if (item == 0) { 17172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 17272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } else if (item == 1) { 17372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 17472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 17572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin dialog.dismiss(); 17672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 17772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin }); 17872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 17972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 18072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 18172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 18272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 18372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 184ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowAlertDialog.getTitle().toString(), equalTo("title")); 18572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 18672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertEquals(shadowAlertDialog.getItems()[0], "Aloha"); 187ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowOf(ShadowAlertDialog.getLatestAlertDialog()), sameInstance(shadowAlertDialog)); 188ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 18972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 1901258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 1911258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard @Test 1929c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin public void show_setsLatestAlertDialogAndLatestDialog() { 1935117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard AlertDialog alertDialog = new AlertDialog.Builder(Robolectric.application).create(); 1949c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertNull(ShadowDialog.getLatestDialog()); 1955117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertNull(ShadowAlertDialog.getLatestAlertDialog()); 196753d062a9106040be10c39595219774ae656b8f9Mike Grafton 1979c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin alertDialog.show(); 1989c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 1995117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowDialog.getLatestDialog()); 2005117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowAlertDialog.getLatestAlertDialog()); 2019c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin } 2029c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 203753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 204753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldReturnTheIndexOfTheCheckedItemInASingleChoiceDialog() throws Exception { 205753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 206753d062a9106040be10c39595219774ae656b8f9Mike Grafton 207753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, new DialogInterface.OnClickListener() { 208753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 209753d062a9106040be10c39595219774ae656b8f9Mike Grafton 210753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 211753d062a9106040be10c39595219774ae656b8f9Mike Grafton }); 212753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 213753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 214753d062a9106040be10c39595219774ae656b8f9Mike Grafton 215753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(alert.isShowing(), equalTo(true)); 216753d062a9106040be10c39595219774ae656b8f9Mike Grafton 217753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 218753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getCheckedItemIndex(), 1); 219753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getItems()[0], "foo"); 220753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 2215117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 222753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 223753d062a9106040be10c39595219774ae656b8f9Mike Grafton 224753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 225753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldCallTheClickListenerOfTheCheckedItemInASingleChoiceDialog() throws Exception { 226753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 227753d062a9106040be10c39595219774ae656b8f9Mike Grafton 228753d062a9106040be10c39595219774ae656b8f9Mike Grafton TestDialogOnClickListener listener = new TestDialogOnClickListener(); 229753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, listener); 230753d062a9106040be10c39595219774ae656b8f9Mike Grafton 231753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 232753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 233753d062a9106040be10c39595219774ae656b8f9Mike Grafton 234753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 235753d062a9106040be10c39595219774ae656b8f9Mike Grafton shadowAlertDialog.clickOnItem(0); 236753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(listener.clickedItem, equalTo(0)); 237753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(0)); 238753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 239753d062a9106040be10c39595219774ae656b8f9Mike Grafton 2405117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard @Test 2411258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard public void shouldFindViewsByIdIfAViewIsSet() throws Exception { 2421258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard ContextWrapper context = new ContextWrapper(null); 2431258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard AlertDialog dialog = new AlertDialog.Builder(context).create(); 2441258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2451258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), nullValue()); 2461258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2471258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard View view = new View(context); 2481258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard view.setId(99); 2491258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard dialog.setView(view); 2501258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), sameInstance(view)); 2511258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2521258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(66), nullValue()); 2531258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard } 2546a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2556a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala @Test 2566a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala public void shouldDelegateToDialogFindViewByIdIfViewIsNull() { 2576a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala AlertDialog dialog = new AlertDialog(Robolectric.application) { 2586a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala }; 2596a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2606a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertThat(dialog.findViewById(99), nullValue()); 2616a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2626a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala dialog.setContentView(R.layout.main); 2636a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertNotNull(dialog.findViewById(R.id.title)); 2646a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala } 2656a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 2666a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 267753d062a9106040be10c39595219774ae656b8f9Mike Grafton private static class TestDialogOnClickListener implements DialogInterface.OnClickListener { 268753d062a9106040be10c39595219774ae656b8f9Mike Grafton private DialogInterface dialog; 269753d062a9106040be10c39595219774ae656b8f9Mike Grafton private int clickedItem; 270753d062a9106040be10c39595219774ae656b8f9Mike Grafton 271753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 272753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.dialog = dialog; 273753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.clickedItem = item; 274753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 275753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 27650e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard} 277