ProgressDialogTest.java revision 5117035453920f3d4d0f3969bdab0305dcdb94ba
1package com.xtremelabs.robolectric.shadows;
2
3import android.app.Activity;
4import android.app.ProgressDialog;
5import android.content.Context;
6import android.content.DialogInterface;
7import com.xtremelabs.robolectric.Robolectric;
8import com.xtremelabs.robolectric.WithTestDefaultsRunner;
9import org.junit.Before;
10import org.junit.Test;
11import org.junit.runner.RunWith;
12
13import static com.xtremelabs.robolectric.Robolectric.shadowOf;
14import static org.hamcrest.CoreMatchers.instanceOf;
15import static org.hamcrest.CoreMatchers.nullValue;
16import static org.hamcrest.core.Is.is;
17import static org.hamcrest.core.IsEqual.equalTo;
18import static org.junit.Assert.assertThat;
19import static org.junit.Assert.assertTrue;
20
21@RunWith(WithTestDefaultsRunner.class)
22public class ProgressDialogTest {
23
24    private ProgressDialog dialog;
25    private ShadowProgressDialog shadow;
26
27    @Before
28    public void setUp() {
29        dialog = new ProgressDialog(null);
30        shadow = Robolectric.shadowOf(dialog);
31    }
32
33    @Test
34    public void shouldExtendAlertDialog() {
35        assertThat(shadow, instanceOf(ShadowAlertDialog.class));
36    }
37
38    @Test
39    public void shouldSetMessage() {
40        CharSequence message = "This is only a test";
41
42        assertThat(shadow.getMessage(), nullValue());
43        dialog.setMessage(message);
44        assertThat((CharSequence) shadow.getMessage(), equalTo(message));
45    }
46
47    @Test
48    public void shouldSetIndeterminate() {
49        assertThat(dialog.isIndeterminate(), equalTo(false));
50
51        dialog.setIndeterminate(true);
52        assertThat(dialog.isIndeterminate(), equalTo(true));
53
54        dialog.setIndeterminate(false);
55        assertThat(dialog.isIndeterminate(), equalTo(false));
56    }
57
58    @Test
59    public void show_shouldCreateAProgressDialog() {
60        Context context = new Activity();
61        TestOnCancelListener cancelListener = new TestOnCancelListener();
62        ProgressDialog progressDialog = ProgressDialog.show(context, "Title", "Message", true, true, cancelListener);
63        ShadowProgressDialog shadowProgressDialog = shadowOf(progressDialog);
64        assertThat(shadowProgressDialog.getContext(), is(context));
65        assertThat(shadowProgressDialog.getMessage(), equalTo("Message"));
66        assertTrue(shadowProgressDialog.isIndeterminate());
67        assertTrue(shadowProgressDialog.isCancelable());
68
69        progressDialog.cancel();
70        assertThat((DialogInterface) cancelListener.onCancelDialogInterface, is((DialogInterface) progressDialog));
71    }
72
73    private static class TestOnCancelListener implements DialogInterface.OnCancelListener {
74        public DialogInterface onCancelDialogInterface;
75
76        @Override
77        public void onCancel(DialogInterface dialogInterface) {
78            onCancelDialogInterface = dialogInterface;
79
80        }
81    }
82}
83