Skip to content

Instantly share code, notes, and snippets.

@swetakadam
Created July 23, 2020 17:16
Show Gist options
  • Save swetakadam/a68ba51b9f683a529db7630838ee0785 to your computer and use it in GitHub Desktop.
Save swetakadam/a68ba51b9f683a529db7630838ee0785 to your computer and use it in GitHub Desktop.
A shared preferences implementation using HashMaps
import android.content.SharedPreferences
// need little clean up to get rid of !!
class TestSharedPreferences() : SharedPreferences, SharedPreferences.Editor {
private val hashMap = mutableMapOf<String,Any>()
lateinit var key : String
lateinit var value : Any
override fun edit() : MockSharedPreferences{
return this
}
override fun clear(): SharedPreferences.Editor {
hashMap.clear()
return this
}
override fun putLong(key: String?, value: Long): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun putInt(key: String?, value: Int): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun remove(key: String?): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun putBoolean(key: String?, value: Boolean): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun putStringSet(key: String?, values: MutableSet<String>?): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun commit(): Boolean {
return true
}
override fun putFloat(key: String?, value: Float): SharedPreferences.Editor {
this.key = key!!
this.value = value
return this
}
override fun apply() {
hashMap[key] = value
}
override fun putString(key: String?, value: String?): SharedPreferences.Editor {
this.key = key!!
this.value = value ?: ""
return this
}
override fun getString(key: String, default: String?): String? {
return if(hashMap.containsKey(key)){
val v = hashMap[key]
if(v is String) {
v
}
else {
default
}
}else {
default
}
}
override fun getLong(key: String, default: Long): Long {
return if(hashMap.containsKey(key)){
val v = hashMap[key]
if(v is Long) {
v
}
else {
default
}
}else {
default
}
}
override fun getFloat(key: String, default: Float): Float {
return if(hashMap.containsKey(key)){
val v = hashMap[key]
if(v is Float) {
v
}
else {
default
}
}else {
default
}
}
override fun getStringSet(key: String?, defValues: MutableSet<String>?): MutableSet<String> {
return mutableSetOf<String>()
}
override fun registerOnSharedPreferenceChangeListener(listener: SharedPreferences.OnSharedPreferenceChangeListener?) {
}
override fun getInt(key: String, default: Int): Int {
return if(hashMap.containsKey(key)){
val v = hashMap[key]
if(v is Int) {
v
}
else {
default
}
}else {
default
}
}
override fun getAll(): MutableMap<String, *> {
return hashMap
}
override fun contains(key: String?): Boolean {
return hashMap.containsKey(key)
}
override fun getBoolean(key: String, default: Boolean): Boolean {
return if(hashMap.containsKey(key)){
val v = hashMap[key]
if(v is Boolean) {
v
}
else {
default
}
}else {
default
}
}
override fun unregisterOnSharedPreferenceChangeListener(listener: SharedPreferences.OnSharedPreferenceChangeListener?) {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment