1package com.xtremelabs.robolectric.shadows;
2
3import android.app.Activity;
4import android.content.Context;
5import android.preference.DialogPreference;
6import android.util.AttributeSet;
7import com.xtremelabs.robolectric.Robolectric;
8import com.xtremelabs.robolectric.WithTestDefaultsRunner;
9import com.xtremelabs.robolectric.tester.android.util.TestAttributeSet;
10import org.junit.Before;
11import org.junit.Test;
12import org.junit.runner.RunWith;
13
14import java.util.HashMap;
15
16import static org.hamcrest.CoreMatchers.equalTo;
17import static org.hamcrest.CoreMatchers.sameInstance;
18import static org.junit.Assert.assertThat;
19
20@RunWith(WithTestDefaultsRunner.class)
21public class DialogPreferenceTest {
22
23    private static final String TEST_DIALOG_MESSAGE = "This is only a test";
24
25    private DialogPreference preference;
26    private ShadowDialogPreference shadow;
27
28    private Context context;
29    private TestAttributeSet attrs;
30
31    @Before
32    public void setup() {
33        HashMap<String, String> hash = new HashMap<String, String>();
34        hash.put("dialogMessage", TEST_DIALOG_MESSAGE);
35        context = new Activity();
36        attrs = new TestAttributeSet(hash);
37        preference = new TestDialogPreference(context, attrs);
38        shadow = Robolectric.shadowOf(preference);
39    }
40
41    @Test
42    public void testConstructors() {
43        int defStyle = 7;
44
45        preference = new TestDialogPreference(context, attrs, defStyle);
46        shadow = Robolectric.shadowOf(preference);
47        assertThat(shadow.getContext(), sameInstance(context));
48        assertThat(shadow.getAttrs(), sameInstance((AttributeSet) attrs));
49        assertThat(shadow.getDefStyle(), equalTo(defStyle));
50
51        preference = new TestDialogPreference(context, attrs);
52        shadow = Robolectric.shadowOf(preference);
53        assertThat(shadow.getContext(), sameInstance(context));
54        assertThat(shadow.getAttrs(), sameInstance((AttributeSet) attrs));
55        assertThat(shadow.getDefStyle(), equalTo(0));
56    }
57
58    @Test
59    public void testGetDialogMessage() {
60        assertThat((String) preference.getDialogMessage(), equalTo(TEST_DIALOG_MESSAGE));
61    }
62
63    protected static class TestDialogPreference extends DialogPreference {
64
65        public TestDialogPreference(Context context, AttributeSet attrs, int defStyle) {
66            super(context, attrs, defStyle);
67        }
68
69        public TestDialogPreference(Context context, AttributeSet attrs) {
70            super(context, attrs);
71        }
72    }
73}
74