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