133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 250e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard 36cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 46cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport static junit.framework.Assert.assertFalse; 56cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport static junit.framework.Assert.assertNull; 66cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport static org.hamcrest.CoreMatchers.*; 76cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport static org.junit.Assert.*; 86cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 96cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport java.util.ArrayList; 106cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport java.util.List; 116cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 126cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport org.junit.Test; 136cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport org.junit.runner.RunWith; 146cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1511db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultzimport android.app.Activity; 162595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.app.AlertDialog; 172595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.ContextWrapper; 182595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport android.content.DialogInterface; 191258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richardimport android.view.View; 20f1db8d709d4596bde52bcead212b396b81635123pivotalimport android.widget.ArrayAdapter; 216cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilsonimport android.widget.Button; 2266ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultzimport android.widget.EditText; 236cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 242595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.R; 252595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.Robolectric; 262595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysserimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 272595367a5bc40f7f104ad0d78139b9a7edcf8b61Ronald Dehuysser 2807257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class) 2950e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richardpublic class AlertDialogTest { 3040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams 3172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 3272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilder() throws Exception { 3372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 3472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title").setMessage("message"); 353e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey builder.setCancelable(true); 3672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 3772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 3872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 3972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 4072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 4172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 429c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertEquals("title", shadowAlertDialog.getTitle()); 4372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 443e6fa4f57f88547cc237624a6827d14e557fcee9Rich Humphrey assertThat(shadowAlertDialog.isCancelable(), equalTo(true)); 45ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowOf(ShadowAlertDialog.getLatestAlertDialog()), sameInstance(shadowAlertDialog)); 46ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 47ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard } 48ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard 49ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard @Test 50ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard public void getLatestAlertDialog_shouldReturnARealAlertDialog() throws Exception { 51ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), nullValue()); 52ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard 53ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard AlertDialog dialog = new AlertDialog.Builder(new ContextWrapper(null)).show(); 54ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(dialog)); 5572ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 5672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 5772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin @Test 584219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz public void shouldOnlyCreateRequestedButtons() throws Exception { 594219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 604219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz builder.setPositiveButton("OK", null); 614219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz AlertDialog dialog = builder.create(); 624219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz dialog.show(); 634219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz assertThat(shadowOf(dialog).getButton(AlertDialog.BUTTON_POSITIVE), not(nullValue())); 644219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz assertThat(shadowOf(dialog).getButton(AlertDialog.BUTTON_NEGATIVE), nullValue()); 654219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz } 664219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz 674219823fcaadde15ed2f1d4a422aa62eb9eadd93Mike Mazur & Tyler Schultz @Test 68fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard public void shouldAllowNullButtonListeners() throws Exception { 69fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 70fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard builder.setPositiveButton("OK", null); 71fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard AlertDialog dialog = builder.create(); 72fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard dialog.show(); 73fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard Robolectric.clickOn(dialog.getButton(AlertDialog.BUTTON_POSITIVE)); 74fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard } 75fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard 76fd6517720932e1d9c426d15edbb81b8213b1f8f5Lowell Kirsh & Ryan Richard @Test 7728dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai public void testSetMessageAfterCreation() { 7828dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 7928dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai builder.setTitle("title").setMessage("message"); 8028dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai AlertDialog alert = builder.create(); 8128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8228dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 8328dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("message")); 8428dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8528dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage("new message"); 8628dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), equalTo("new message")); 8728dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 8828dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai shadowAlertDialog.setMessage(null); 8928dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai assertThat(shadowAlertDialog.getMessage(), nullValue()); 9028dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai } 9128dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai 9228dfcd9a7137bc117ca50634314848c0b1d4403cronald.mai @Test 9311db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz public void shouldSetMessageFromResourceId() throws Exception { 9411db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new Activity()); 9511db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz builder.setTitle("title").setMessage(R.string.hello); 9611db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 9711db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz AlertDialog alert = builder.create(); 9811db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 9911db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz assertThat(shadowAlertDialog.getMessage(), equalTo("Hello")); 10011db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz } 10111db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz 10211db6a280db0d49750ca6b3f2a51083110dd020eJoe Moore & Tyler Schultz @Test 10366ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz public void shouldSetView() throws Exception { 104874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz ContextWrapper context = new ContextWrapper(null); 10566ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(context); 10666ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz EditText view = new EditText(context); 10766ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz builder.setView(view); 10866ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz 10966ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz AlertDialog alert = builder.create(); 11066ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz assertThat(shadowOf(alert).getView(), equalTo((View) view)); 11166ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz } 11266ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz 11366ab50f46c79da589f2b5419407ecce9d44c99a3Mike Mazur & Tyler Schultz @Test 114d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz public void shouldSetCustomTitleView() throws Exception { 115d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz ContextWrapper context = new ContextWrapper(null); 116d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(context); 117d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz View view = new View(context); 118d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz assertThat(builder.setCustomTitle(view), sameInstance(builder)); 119d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz 120d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz AlertDialog alert = builder.create(); 121d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz assertThat(shadowOf(alert).getCustomTitleView(), equalTo((View) view)); 122d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz } 1236cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1246cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson @Test 1256cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson public void shouldSetThePositiveButtonAfterCreation() throws Exception { 1266cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 1276cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson .setPositiveButton("Positive", null).create(); 1286cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1296cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson TestDialogOnClickListener listener = new TestDialogOnClickListener(); 1306cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "More Positive", listener); 1316cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1326cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final Button positiveButton = shadowOf(alertDialog).getButton(AlertDialog.BUTTON_POSITIVE); 1336cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson positiveButton.performClick(); 1346cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1356cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(positiveButton.getText().toString(), equalTo("More Positive")); 1366cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(listener.clickedItem, equalTo(AlertDialog.BUTTON_POSITIVE)); 1376cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson } 1386cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1396cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson @Test 1406cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson public void shouldSetTheNegativeButtonAfterCreation() throws Exception { 1416cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 1426cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson .setNegativeButton("Negative", null).create(); 1436cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1446cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson TestDialogOnClickListener listener = new TestDialogOnClickListener(); 1456cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "More Negative", listener); 1466cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1476cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final Button negativeButton = shadowOf(alertDialog).getButton(AlertDialog.BUTTON_NEGATIVE); 1486cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson negativeButton.performClick(); 1496cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1506cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(negativeButton.getText().toString(), equalTo("More Negative")); 1516cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(listener.clickedItem, equalTo(AlertDialog.BUTTON_NEGATIVE)); 1526cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson } 1536cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1546cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson @Test 1556cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson public void shouldSetTheNeutralButtonAfterCreation() throws Exception { 1566cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 1576cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson .setNegativeButton("Neutral", null).create(); 1586cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1596cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson TestDialogOnClickListener listener = new TestDialogOnClickListener(); 1606cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Still Neutral", listener); 1616cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1626cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson final Button neutralButton = shadowOf(alertDialog).getButton(AlertDialog.BUTTON_NEUTRAL); 1636cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson neutralButton.performClick(); 1646cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson 1656cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(neutralButton.getText().toString(), equalTo("Still Neutral")); 1666cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson assertThat(listener.clickedItem, equalTo(AlertDialog.BUTTON_NEUTRAL)); 1676cb8eb7fc51d514539d865529cb849a035ab7498Levi Wilson } 168d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz 169d9715ea3daabfd16495e39d4af2a37b400a35150Tyler Schultz @Test 170874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingPositiveButtonDismissesDialog() throws Exception { 171874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 172f1db8d709d4596bde52bcead212b396b81635123pivotal .setPositiveButton("Positive", null).create(); 173874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 174874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 175874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 176874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); 177874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 178874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 179f1db8d709d4596bde52bcead212b396b81635123pivotal 180874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 181874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNeutralButtonDismissesDialog() throws Exception { 182874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 183f1db8d709d4596bde52bcead212b396b81635123pivotal .setNeutralButton("Neutral", new DialogInterface.OnClickListener() { 184f1db8d709d4596bde52bcead212b396b81635123pivotal @Override 185f1db8d709d4596bde52bcead212b396b81635123pivotal public void onClick(DialogInterface dialog, int which) { 186f1db8d709d4596bde52bcead212b396b81635123pivotal } 187f1db8d709d4596bde52bcead212b396b81635123pivotal }).create(); 188874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 189874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 190874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 191874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL).performClick(); 192874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 193874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 194f1db8d709d4596bde52bcead212b396b81635123pivotal 195874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 196874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz public void clickingNegativeButtonDismissesDialog() throws Exception { 197874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz AlertDialog alertDialog = new AlertDialog.Builder(new ContextWrapper(null)) 198f1db8d709d4596bde52bcead212b396b81635123pivotal .setNegativeButton("Negative", new DialogInterface.OnClickListener() { 199f1db8d709d4596bde52bcead212b396b81635123pivotal @Override 200f1db8d709d4596bde52bcead212b396b81635123pivotal public void onClick(DialogInterface dialog, int which) { 201f1db8d709d4596bde52bcead212b396b81635123pivotal } 202f1db8d709d4596bde52bcead212b396b81635123pivotal }).create(); 203874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.show(); 204874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 205874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertTrue(alertDialog.isShowing()); 206874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick(); 207874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz assertFalse(alertDialog.isShowing()); 208874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz } 209874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz 210874759fdce29cf153192eb86bf2e4d2d5dd1d5aaMike Mazur & Tyler Schultz @Test 21172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin public void testBuilderWithItemArrayViaResourceId() throws Exception { 21272ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 21372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 21472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin builder.setTitle("title"); 2154382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz builder.setItems(R.array.alertDialogTestItems, new TestDialogOnClickListener()); 21672ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin AlertDialog alert = builder.create(); 21772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin alert.show(); 21872ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 21972ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(alert.isShowing(), equalTo(true)); 22072ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin 22172ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 222ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowAlertDialog.getTitle().toString(), equalTo("title")); 22372ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 22472ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin assertEquals(shadowAlertDialog.getItems()[0], "Aloha"); 225ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(shadowOf(ShadowAlertDialog.getLatestAlertDialog()), sameInstance(shadowAlertDialog)); 226ec07ffb13702733c07a846308de902a6f68977f2David Farber & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 22772ee6c0e205c424f0706051d89e1c7f184bf8269Phil Goodwin } 2281258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 2294382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 2304382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// @Test 2314382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// public void testBuilderWithItemArrayCanPerformClickOnItem() throws Exception { 2324382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// TestDialogOnClickListener listener = new TestDialogOnClickListener(); 2334382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// AlertDialog alert = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)) 2344382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// .setItems(R.array.alertDialogTestItems, listener) 2354382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// .create(); 2364382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// 2374382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// alert.show(); 2384382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 2394382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// shadowAlertDialog.clickOnItem(1); 2404382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// 2414382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// 2424382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz// } 2434382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 2441258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard @Test 245f1db8d709d4596bde52bcead212b396b81635123pivotal public void testBuilderWithAdapter() throws Exception { 246f1db8d709d4596bde52bcead212b396b81635123pivotal List<Integer> list = new ArrayList<Integer>(); 247f1db8d709d4596bde52bcead212b396b81635123pivotal list.add(99); 248f1db8d709d4596bde52bcead212b396b81635123pivotal list.add(88); 249f1db8d709d4596bde52bcead212b396b81635123pivotal list.add(77); 25043d4a611b7ee5c0548119b746baf4da97d8cecceTim Labeeuw & Tyler Schultz ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(Robolectric.application, R.layout.main, R.id.title, list); 251f1db8d709d4596bde52bcead212b396b81635123pivotal 252f1db8d709d4596bde52bcead212b396b81635123pivotal AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(null)); 253f1db8d709d4596bde52bcead212b396b81635123pivotal builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { 254f1db8d709d4596bde52bcead212b396b81635123pivotal @Override 255f1db8d709d4596bde52bcead212b396b81635123pivotal public void onClick(DialogInterface dialog, int item) { 256f1db8d709d4596bde52bcead212b396b81635123pivotal dialog.dismiss(); 257f1db8d709d4596bde52bcead212b396b81635123pivotal } 258f1db8d709d4596bde52bcead212b396b81635123pivotal }); 259f1db8d709d4596bde52bcead212b396b81635123pivotal AlertDialog alert = builder.create(); 260f1db8d709d4596bde52bcead212b396b81635123pivotal alert.show(); 261f1db8d709d4596bde52bcead212b396b81635123pivotal 262f1db8d709d4596bde52bcead212b396b81635123pivotal assertTrue(alert.isShowing()); 263f1db8d709d4596bde52bcead212b396b81635123pivotal ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 264f1db8d709d4596bde52bcead212b396b81635123pivotal assertEquals(shadowAlertDialog.getAdapter().getCount(), 3); 265f1db8d709d4596bde52bcead212b396b81635123pivotal assertEquals(shadowAlertDialog.getAdapter().getItem(0), 99); 266f1db8d709d4596bde52bcead212b396b81635123pivotal } 267f1db8d709d4596bde52bcead212b396b81635123pivotal 268f1db8d709d4596bde52bcead212b396b81635123pivotal @Test 2699c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin public void show_setsLatestAlertDialogAndLatestDialog() { 2705117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard AlertDialog alertDialog = new AlertDialog.Builder(Robolectric.application).create(); 2719c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin assertNull(ShadowDialog.getLatestDialog()); 2725117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertNull(ShadowAlertDialog.getLatestAlertDialog()); 273753d062a9106040be10c39595219774ae656b8f9Mike Grafton 2749c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin alertDialog.show(); 2759c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 2765117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowDialog.getLatestDialog()); 2775117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertEquals(alertDialog, ShadowAlertDialog.getLatestAlertDialog()); 2789c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin } 2799c6f1b1bf3d0bb2c6bb2abbf7fe8f21a137891f3Glenn Jahnke & Phil Goodwin 280753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 281753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldReturnTheIndexOfTheCheckedItemInASingleChoiceDialog() throws Exception { 282753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 283753d062a9106040be10c39595219774ae656b8f9Mike Grafton 284753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, new DialogInterface.OnClickListener() { 285753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 286753d062a9106040be10c39595219774ae656b8f9Mike Grafton 287753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 288753d062a9106040be10c39595219774ae656b8f9Mike Grafton }); 289753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 290753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 291753d062a9106040be10c39595219774ae656b8f9Mike Grafton 292753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(alert.isShowing(), equalTo(true)); 293753d062a9106040be10c39595219774ae656b8f9Mike Grafton 294753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 295753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getCheckedItemIndex(), 1); 296753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertEquals(shadowAlertDialog.getItems()[0], "foo"); 297753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getItems().length, equalTo(2)); 2985117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard assertThat(ShadowAlertDialog.getLatestAlertDialog(), sameInstance(alert)); 299753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 300753d062a9106040be10c39595219774ae656b8f9Mike Grafton 301753d062a9106040be10c39595219774ae656b8f9Mike Grafton @Test 302753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void shouldCallTheClickListenerOfTheCheckedItemInASingleChoiceDialog() throws Exception { 303753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 304753d062a9106040be10c39595219774ae656b8f9Mike Grafton 305753d062a9106040be10c39595219774ae656b8f9Mike Grafton TestDialogOnClickListener listener = new TestDialogOnClickListener(); 306753d062a9106040be10c39595219774ae656b8f9Mike Grafton builder.setSingleChoiceItems(new String[]{"foo", "bar"}, 1, listener); 307753d062a9106040be10c39595219774ae656b8f9Mike Grafton 308753d062a9106040be10c39595219774ae656b8f9Mike Grafton AlertDialog alert = builder.create(); 309753d062a9106040be10c39595219774ae656b8f9Mike Grafton alert.show(); 310753d062a9106040be10c39595219774ae656b8f9Mike Grafton 311753d062a9106040be10c39595219774ae656b8f9Mike Grafton ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 312753d062a9106040be10c39595219774ae656b8f9Mike Grafton shadowAlertDialog.clickOnItem(0); 313753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(listener.clickedItem, equalTo(0)); 314753d062a9106040be10c39595219774ae656b8f9Mike Grafton assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(0)); 3154382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3164382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz shadowAlertDialog.clickOnItem(1); 3174382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(listener.clickedItem, equalTo(1)); 3184382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(1)); 3194382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3204382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz } 3214382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3224382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz @Test 3234382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz public void shouldCallTheClickListenerOfTheCheckedAdapterInASingleChoiceDialog() throws Exception { 3244382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz AlertDialog.Builder builder = new AlertDialog.Builder(new ContextWrapper(Robolectric.application)); 3254382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3264382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz TestDialogOnClickListener listener = new TestDialogOnClickListener(); 3274382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz List<Integer> list = new ArrayList<Integer>(); 3284382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz list.add(1); 3294382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz list.add(2); 3304382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz list.add(3); 3314382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz ArrayAdapter<Integer> arrayAdapter = new ArrayAdapter<Integer>(Robolectric.application, R.layout.main, R.id.title, list); 3324382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz builder.setSingleChoiceItems(arrayAdapter, 1, listener); 3334382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3344382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz AlertDialog alert = builder.create(); 3354382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz alert.show(); 3364382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3374382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz ShadowAlertDialog shadowAlertDialog = shadowOf(alert); 3384382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz shadowAlertDialog.clickOnItem(0); 3394382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(listener.clickedItem, equalTo(0)); 3404382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(0)); 3414382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 3424382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz shadowAlertDialog.clickOnItem(1); 3434382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(listener.clickedItem, equalTo(1)); 3444382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz assertThat(shadowAlertDialog.getCheckedItemIndex(), equalTo(1)); 3454382bee277815157a5279318af06e47eb7e599eeTim Labeeuw & Tyler Schultz 346753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 347753d062a9106040be10c39595219774ae656b8f9Mike Grafton 3485117035453920f3d4d0f3969bdab0305dcdb94baJoe Moore & Ryan Richard @Test 3491258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard public void shouldFindViewsByIdIfAViewIsSet() throws Exception { 3501258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard ContextWrapper context = new ContextWrapper(null); 3511258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard AlertDialog dialog = new AlertDialog.Builder(context).create(); 352f1db8d709d4596bde52bcead212b396b81635123pivotal 3531258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), nullValue()); 3541258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard 3551258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard View view = new View(context); 3561258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard view.setId(99); 3571258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard dialog.setView(view); 3581258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(99), sameInstance(view)); 359f1db8d709d4596bde52bcead212b396b81635123pivotal 3601258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard assertThat(dialog.findViewById(66), nullValue()); 3611258bd4f817130a401a5a234354b95fe3bf7e4eeDavid Farber & Ryan Richard } 3626a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 3636a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala @Test 3646a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala public void shouldDelegateToDialogFindViewByIdIfViewIsNull() { 3656a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala AlertDialog dialog = new AlertDialog(Robolectric.application) { 3666a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala }; 3676a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 3686a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertThat(dialog.findViewById(99), nullValue()); 3696a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 3706a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala dialog.setContentView(R.layout.main); 3716a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala assertNotNull(dialog.findViewById(R.id.title)); 3726a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala } 3736a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 3746a89c2aeb7fd6ad6abea8614ef54a450cb0a5211Joe Moore, Phil Goodwin & Rick Kawala 375753d062a9106040be10c39595219774ae656b8f9Mike Grafton private static class TestDialogOnClickListener implements DialogInterface.OnClickListener { 376753d062a9106040be10c39595219774ae656b8f9Mike Grafton private DialogInterface dialog; 377753d062a9106040be10c39595219774ae656b8f9Mike Grafton private int clickedItem; 378753d062a9106040be10c39595219774ae656b8f9Mike Grafton 379753d062a9106040be10c39595219774ae656b8f9Mike Grafton public void onClick(DialogInterface dialog, int item) { 380753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.dialog = dialog; 381753d062a9106040be10c39595219774ae656b8f9Mike Grafton this.clickedItem = item; 382753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 383753d062a9106040be10c39595219774ae656b8f9Mike Grafton } 38450e71a2777cae2b5f630448c5ab22be4066d4d6dChristian Williams & Ryan Richard} 385