ShadowSharedPreferencesTest.java revision d0cb59970def5b7bbad64be64abec240522ae885
1d0cb59970def5b7bbad64be64abec240522ae885Aaron Daypackage com.xtremelabs.robolectric.tester.android.content;
2d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
3d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport org.junit.Before;
4d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport org.junit.Test;
5d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport org.junit.runner.RunWith;
6d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport static org.junit.Assert.*;
7d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
8d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport java.util.HashMap;
9d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport java.util.Map;
10d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
11d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport android.content.Context;
12d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport android.content.SharedPreferences;
13d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
14d0cb59970def5b7bbad64be64abec240522ae885Aaron Dayimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
15d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
16d0cb59970def5b7bbad64be64abec240522ae885Aaron Day/**
17d0cb59970def5b7bbad64be64abec240522ae885Aaron Day * TestSharedPreferencesTest
18d0cb59970def5b7bbad64be64abec240522ae885Aaron Day */
19d0cb59970def5b7bbad64be64abec240522ae885Aaron Day@RunWith(WithTestDefaultsRunner.class)
20d0cb59970def5b7bbad64be64abec240522ae885Aaron Daypublic class TestSharedPreferencesTest {
21d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    protected final static String FILENAME = "filename";
22d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
23d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    protected Map<String, Map<String, Object>> content;
24d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
25d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Before
26d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void setup() {
27d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        content = new HashMap<String, Map<String, Object>>();
28d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
29d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
30d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Test
31d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void testConstruction() {
32d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        TestSharedPreferences preferences = new TestSharedPreferences(content,
33d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                FILENAME, Context.MODE_PRIVATE);
34d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertSame("content", content, preferences.content);
35d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("filename", FILENAME, preferences.filename);
36d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("mode", Context.MODE_PRIVATE, preferences.mode);
37d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertTrue("content.filename", content.containsKey(FILENAME));
38d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
39d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
40d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Test
41d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void testGetAll() {
42d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        Map<String, Object> fileContent = new HashMap<String, Object>();
43d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        fileContent.put("foo", "bar");
44d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        content.put(FILENAME, fileContent);
45d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
46d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        TestSharedPreferences preferences = new TestSharedPreferences(content,
47d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                FILENAME, Context.MODE_PRIVATE);
48d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
49d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        Map<String, ?> result = preferences.getAll();
50d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertNotSame("result", fileContent, result);
51d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("result", fileContent, result);
52d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
53d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
54d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Test
55d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void testEditorCommit_ClearAndSet() {
56d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        Map<String, Object> fileContent = new HashMap<String, Object>();
57d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        fileContent.put("foo", "bar");
58d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        content.put(FILENAME, fileContent);
59d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
60d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        SharedPreferences.Editor editor = new TestSharedPreferences(content,
61d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                FILENAME, Context.MODE_PRIVATE).edit();
62d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
63d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.clear();
64d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.putString("alpha", "beta");
65d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.commit();
66d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
67d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("content.filename.foo", false, content.get(FILENAME)
68d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                .containsKey("foo"));
69d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("content.filename.alpha", "beta", content.get(FILENAME)
70d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                .get("alpha"));
71d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
72d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
73d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Test
74d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void testEditorCommit_RemoveAndSet() {
75d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        Map<String, Object> fileContent = new HashMap<String, Object>();
76d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        fileContent.put("foo", "bar");
77d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        content.put(FILENAME, fileContent);
78d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
79d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        SharedPreferences.Editor editor = new TestSharedPreferences(content,
80d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                FILENAME, Context.MODE_PRIVATE).edit();
81d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
82d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.remove("foo");
83d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.putString("alpha", "beta");
84d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.commit();
85d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
86d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("content.filename.foo", false, content.get(FILENAME)
87d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                .containsKey("foo"));
88d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("content.filename.alpha", "beta", content.get(FILENAME)
89d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                .get("alpha"));
90d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
91d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
92d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    @Test
93d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    public void testEditorCommit_RemoveAndReset() {
94d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        Map<String, Object> fileContent = new HashMap<String, Object>();
95d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        fileContent.put("foo", "bar");
96d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        content.put(FILENAME, fileContent);
97d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
98d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        SharedPreferences.Editor editor = new TestSharedPreferences(content,
99d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                FILENAME, Context.MODE_PRIVATE).edit();
100d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
101d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.remove("foo");
102d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.putString("foo", "baz");
103d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        editor.commit();
104d0cb59970def5b7bbad64be64abec240522ae885Aaron Day
105d0cb59970def5b7bbad64be64abec240522ae885Aaron Day        assertEquals("content.filename.foo", "baz",
106d0cb59970def5b7bbad64be64abec240522ae885Aaron Day                content.get(FILENAME).get("foo"));
107d0cb59970def5b7bbad64be64abec240522ae885Aaron Day    }
108d0cb59970def5b7bbad64be64abec240522ae885Aaron Day}
109