2021-10-19 05:02:15 -07:00
|
|
|
package co.electriccoin.zcash.preference.test
|
|
|
|
|
|
|
|
import co.electriccoin.zcash.preference.api.PreferenceProvider
|
|
|
|
import co.electriccoin.zcash.preference.model.entry.Key
|
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
|
import kotlinx.coroutines.flow.flowOf
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param mutableMapFactory Emits a new mutable map. Thread safety depends on the factory implementation.
|
|
|
|
*/
|
2021-11-12 04:09:30 -08:00
|
|
|
class MockPreferenceProvider(mutableMapFactory: () -> MutableMap<String, String?> = { mutableMapOf() }) : PreferenceProvider {
|
2021-10-19 05:02:15 -07:00
|
|
|
|
|
|
|
private val map = mutableMapFactory()
|
|
|
|
|
|
|
|
override suspend fun getString(key: Key) = map[key.key]
|
|
|
|
|
|
|
|
// For the mock implementation, does not support observability of changes
|
2021-11-12 04:09:30 -08:00
|
|
|
override fun observe(key: Key): Flow<Unit> = flowOf(Unit)
|
2021-10-19 05:02:15 -07:00
|
|
|
|
|
|
|
override suspend fun hasKey(key: Key) = map.containsKey(key.key)
|
|
|
|
|
2021-11-12 04:09:30 -08:00
|
|
|
override suspend fun putString(key: Key, value: String?) {
|
2021-10-19 05:02:15 -07:00
|
|
|
map[key.key] = value
|
|
|
|
}
|
|
|
|
}
|