fixes removing shared preferences
diff --git a/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java b/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
index e3c1212..4119a90 100644
--- a/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
+++ b/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
@@ -81,8 +81,7 @@
}
@Override
- public void registerOnSharedPreferenceChangeListener(
- OnSharedPreferenceChangeListener listener) {
+ public void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) {
if(!listeners.contains(listener))
listeners.add(listener);
}
@@ -178,6 +177,7 @@
previousContent.remove(key);
keysToPassToListeners.add(key);
}
+ editsThatNeedRemove.clear();
}
for (String key : editsThatNeedCommit.keySet()) {
@@ -186,6 +186,7 @@
keysToPassToListeners.add(key);
}
}
+ editsThatNeedCommit.clear();
for (OnSharedPreferenceChangeListener listener : listeners) {
for (String key : keysToPassToListeners) {
@@ -207,4 +208,4 @@
Set< String > v = ( Set< String > ) getValue( key, defValues );
return v != null ? v : defValues;
}
-}
+}
\ No newline at end of file
diff --git a/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java b/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
index 05873fc..48b1c10 100644
--- a/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
+++ b/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
@@ -1,9 +1,13 @@
package org.robolectric.tester.android.content;
+import android.content.Context;
import android.content.SharedPreferences;
+import org.assertj.core.api.Assertions;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
import org.robolectric.TestRunners;
import org.robolectric.util.Transcript;
@@ -13,6 +17,7 @@
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -63,6 +68,20 @@
}
@Test
+ public void commit_shouldClearEditsThatNeedRemoveAndEditsThatNeedCommit() throws Exception {
+ editor.commit();
+ editor.remove("string").commit();
+
+ assertThat(sharedPreferences.getString("string", "no value for key")).isEqualTo("no value for key");
+
+ TestSharedPreferences anotherSharedPreferences = new TestSharedPreferences(content, FILENAME, 3);
+ anotherSharedPreferences.edit().putString("string", "value for key").commit();
+
+ editor.commit();
+ assertThat(sharedPreferences.getString("string", "no value for key")).isEqualTo("value for key");
+ }
+
+ @Test
public void getAll_shouldReturnAllValues() throws Exception {
editor.commit();
Map<String, ?> all = sharedPreferences.getAll();