Instantly share code, notes, and snippets.
Last active
May 31, 2019 05:06
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save aslamanver/f74a2b3d450fda251d47a0d38b44edb7 to your computer and use it in GitHub Desktop.
Android mocked shared preference that store data in memory while doing the unit testing with Mockito.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mpos.util; | |
import android.content.SharedPreferences; | |
import android.support.annotation.Nullable; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.Set; | |
/** | |
* Mock implementation of shared preference, which just saves data in memory using map. | |
*/ | |
public class MockSharedPreference implements SharedPreferences { | |
public final HashMap<String, Object> preferenceMap; | |
private final MockSharedPreferenceEditor preferenceEditor; | |
public MockSharedPreference() { | |
preferenceMap = new HashMap<>(); | |
preferenceEditor = new MockSharedPreferenceEditor(preferenceMap); | |
} | |
@Override | |
public Map<String, ?> getAll() { | |
return preferenceMap; | |
} | |
@Nullable | |
@Override | |
public String getString(final String s, @Nullable final String s1) { | |
return (String) preferenceMap.get(s); | |
} | |
@Nullable | |
@Override | |
public Set<String> getStringSet(final String s, @Nullable final Set<String> set) { | |
return (Set<String>) preferenceMap.get(s); | |
} | |
@Override | |
public int getInt(final String s, final int i) { | |
return (int) preferenceMap.get(s); | |
} | |
@Override | |
public long getLong(final String s, final long l) { | |
return (long) preferenceMap.get(s); | |
} | |
@Override | |
public float getFloat(final String s, final float v) { | |
return (float) preferenceMap.get(s); | |
} | |
@Override | |
public boolean getBoolean(final String s, final boolean b) { | |
return (boolean) preferenceMap.get(s); | |
} | |
@Override | |
public boolean contains(final String s) { | |
return preferenceMap.containsKey(s); | |
} | |
@Override | |
public Editor edit() { | |
return preferenceEditor; | |
} | |
@Override | |
public void registerOnSharedPreferenceChangeListener(final OnSharedPreferenceChangeListener onSharedPreferenceChangeListener) { | |
} | |
@Override | |
public void unregisterOnSharedPreferenceChangeListener(final OnSharedPreferenceChangeListener onSharedPreferenceChangeListener) { | |
} | |
public static class MockSharedPreferenceEditor implements Editor { | |
private final HashMap<String, Object> preferenceMap; | |
public MockSharedPreferenceEditor(final HashMap<String, Object> preferenceMap) { | |
this.preferenceMap = preferenceMap; | |
} | |
@Override | |
public Editor putString(final String s, @Nullable final String s1) { | |
preferenceMap.put(s, s1); | |
return this; | |
} | |
@Override | |
public Editor putStringSet(final String s, @Nullable final Set<String> set) { | |
preferenceMap.put(s, set); | |
return this; | |
} | |
@Override | |
public Editor putInt(final String s, final int i) { | |
preferenceMap.put(s, i); | |
return this; | |
} | |
@Override | |
public Editor putLong(final String s, final long l) { | |
preferenceMap.put(s, l); | |
return this; | |
} | |
@Override | |
public Editor putFloat(final String s, final float v) { | |
preferenceMap.put(s, v); | |
return this; | |
} | |
@Override | |
public Editor putBoolean(final String s, final boolean b) { | |
preferenceMap.put(s, b); | |
return this; | |
} | |
@Override | |
public Editor remove(final String s) { | |
preferenceMap.remove(s); | |
return this; | |
} | |
@Override | |
public Editor clear() { | |
preferenceMap.clear(); | |
return this; | |
} | |
@Override | |
public boolean commit() { | |
return true; | |
} | |
@Override | |
public void apply() { | |
// Nothing to do, everything is saved in memory. | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment