AlertDialogTest.java revision 9c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 250e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard 311db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultzimport android.app.Activity; 42595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.app.AlertDialog; 59c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwinimport android.app.Dialog; 62595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.ContextWrapper; 72595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.DialogInterface; 82595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.R; 92595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.Robolectric; 102595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 119c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwinimport junit.framework.Assert; 1272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport org.junit.Test; 1372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport org.junit.runner.RunWith; 1472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 1572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 169c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwinimport static junit.framework.Assert.assertNull; 1711db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultzimport static org.hamcrest.CoreMatchers.*; 1872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static org.junit.Assert.assertEquals; 1972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwinimport static org.junit.Assert.assertThat; 202595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysser 2107257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class) 2250e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richardpublic class AlertDialogTest { 2340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams 2472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 2572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilder() throws Exception { 2672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 2772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title").setMessage("message"); 283e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey builder.setCancelable(true); 2972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 3072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 3172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 3272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 3372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 3472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 359c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertEquals("title", shadowAlertDialog.getTitle()); 3672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 373e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey assertThat(shadowAlertDialog.isCancelable(), equalTo(true)); 3872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(shadowAlertDialog)); 3972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 4072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 4172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 42fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard public void shouldAllowNullButtonListeners() throws Exception { 43fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 44fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard builder.setPositiveButton("OK", null); 45fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog dialog = builder.create(); 46fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard dialog.show(); 47fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard Robolectric.clickOn(dialog.getButton(AlertDialog.BUTTON_POSITIVE)); 48fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard } 49fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard 50fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard @Test 5128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai public void testSetMessageAfterCreation() { 5228dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 5328dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai builder.setTitle("title").setMessage("message"); 5428dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog alert = builder.create(); 5528dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 5628dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 5728dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 5828dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 5928dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage("new message"); 6028dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("new message")); 6128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 6228dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage(null); 6328dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), nullValue()); 6428dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai } 6528dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 6628dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai @Test 6711db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz public void shouldSetMessageFromResourceId() throws Exception { 6811db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new Activity()); 6911db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz builder.setTitle("title").setMessage(R.string.hello); 7011db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 7111db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog alert = builder.create(); 7211db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 7311db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz assertThat(shadowAlertDialog.getMessage(), equalTo("Hello")); 7411db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz } 7511db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 7611db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz @Test 7772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilderWithItemArrayViaResourceId() throws Exception { 7872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 7972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 8072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title"); 8172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setItems(R.array.alertDialogTestItems, new DialogInterface.OnClickListener() { 8272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void onClick(DialogInterface dialog, int item) { 8372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin if (item == 0) { 8472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 8572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } else if (item == 1) { 8672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 8772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 8872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin dialog.dismiss(); 8972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 9072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin }); 9172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 9272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 9372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 9472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 9572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 9672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 9772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getTitle(), equalTo("title")); 9872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 9972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertEquals(shadowAlertDialog.getItems()[0], "Aloha"); 10072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(shadowAlertDialog)); 10172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 1029c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 1039c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin @Test 1049c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin public void show_setsLatestAlertDialogAndLatestDialog() { 1059c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin AlertDialog alertDialog = new AlertDialog(Robolectric.application) { 1069c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin // protected constructor 1079c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin }; 1089c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertNull(ShadowDialog.getLatestDialog()); 1099c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 1109c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin alertDialog.show(); 1119c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 1129c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertEquals(Robolectric.shadowOf(alertDialog), ShadowDialog.getLatestDialog()); 1139c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertEquals(Robolectric.shadowOf(alertDialog), ShadowAlertDialog.getLatestAlertDialog()); 1149c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin } 1159c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 11650e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard} 117