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