package Ġcom . gil gold z we ig . mvp . preferences Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . SharedPreferences . On Shared Preference ChangeListener Ċ import Ġjava . util . HashMap Ċ import Ġkotlin . collections . set Ċ Ċ /** Ċ Ġ* ĠMock Ġimplementation Ġof Ġ[ SharedPreferences ], Ġwhich Ġjust Ġsaves Ġdata Ġin Ġmemory Ġusing Ġmap . Ċ Ġ*/ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠMock Shared Preference Ġ: ĠSharedPreferences Ġ{ ĊĊ ĉ /** Ċĉ Ġ* ĠMock s Ġthe Ġvalues Ġthat Ġhave Ġbeen Ġcommitted Ċĉ Ġ*/ Ċ ĉ var Ġpreference Map Ġ= ĠHashMap < String , ĠAny >() ĊĊ ĉ /** Ċĉ Ġ* ĠMock s Ġthe Ġvalues Ġthat Ġhave Ġnot Ġbeen Ġcommitted Ġbut Ġhave Ġbeen Ġinserted Ġby Ġthe Ġeditor Ċĉ Ġ*/ Ċ ĉ var Ġun committed Preference Map Ġ= ĠHashMap < String , ĠAny >() ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġimplementation Ġof Ġ[ SharedPreferences . Editor ] Ċĉ Ġ*/ Ċ ĉ private Ġval Ġpreference Editor : ĠMock Shared Preference Editor Ġ= Ċĉĉ ĉ Mock Shared Preference Editor ( preference Map , Ġun committed Preference Map ) ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġthe Ġlisteners Ġedited Ġby Ċĉ Ġ* Ġ[ register On Shared Preference ChangeListener ], Ġ[ unregister On Shared Preference ChangeListener ] Ċĉ Ġ*/ Ċ ĉ private Ġvar Ġlisteners : ĠMutable Set < On Shared Preference ChangeListener > Ġ= ĠHashSet () ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getAll ] Ċĉ Ġ*/ Ċ ĉ override Ġfun ĠgetAll (): ĠMap < String , Ġ*> Ġ= Ġpreference Map ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getString ] Ċĉ Ġ*/ Ċ ĉ override Ġfun ĠgetString ( key : ĠString , ĠdefaultValue : ĠString ): ĠString ? Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠString ? ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getString Set ] Ċĉ Ġ*/ Ċ ĉ override Ġfun ĠgetString Set ( key : ĠString , ĠdefaultValue : ĠSet < String >): ĠSet < String >? Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠSet < String >? ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getInt ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġget Int ( key : ĠString , ĠdefaultValue : ĠInt ): ĠInt Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠInt ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getLong ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġget Long ( key : ĠString , ĠdefaultValue : ĠLong ): ĠLong Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠLong ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . get Float ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġget Float ( key : ĠString , ĠdefaultValue : ĠFloat ): ĠFloat Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠFloat ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . getBoolean ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġget Boolean ( key : ĠString , ĠdefaultValue : ĠBoolean ): ĠBoolean Ġ= Ċĉ ĉ preference Map . get OrDefault ( key , ĠdefaultValue ) Ġas ĠBoolean ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . contains ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġcontains ( key : ĠString ): ĠBoolean Ġ= Ċĉ ĉ key Ġin Ġpreference Map ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . edit ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġedit (): ĠSharedPreferences . Editor Ġ= Ġpreference Editor ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . register On Shared Preference ChangeListener ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġregister On Shared Preference ChangeListener ( listener : ĠOn Shared Preference ChangeListener ) Ġ{ Ċĉ ĉ listeners . add ( listener ) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . unregister On Shared Preference ChangeListener ] Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġunregister On Shared Preference ChangeListener ( listener : ĠOn Shared Preference ChangeListener ) Ġ{ Ċĉ ĉ listeners . remove ( listener ) Ċ ĉ } ĊĊ ĉ /** Ċĉ Ġ* ĠMock Ġimplementation Ġof Ġ[ SharedPreferences . Editor ], Ġwhich Ġjust Ġsaves Ġdata Ġin Ġmemory Ġusing Ġmap . Ċĉ Ġ*/ Ċ ĉ class ĠMock Shared Preference Editor ( Ċĉ ĉ private Ġval Ġpreference Map : ĠMutable Map < String , ĠAny >, Ċĉ ĉ private Ġval Ġun committed Preference Map : ĠMutable Map < String , ĠAny >, Ċĉ ĉ private Ġvar Ġun committed Remove Keys : ĠMutable List < String > Ġ= ĠArrayList () Ċ ĉ ) Ġ: ĠSharedPreferences . Editor Ġ{ ĊĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . putString ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput String ( key : ĠString , Ġvalue : ĠString ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . putString Set ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput String Set ( key : ĠString , Ġvalue : ĠSet < String >): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . put Int ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput Int ( key : ĠString , Ġvalue : ĠInt ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . put Long ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput Long ( key : ĠString , Ġvalue : ĠLong ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . put Boolean ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput Float ( key : ĠString , Ġvalue : ĠFloat ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . put Boolean ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġput Boolean ( key : ĠString , Ġvalue : ĠBoolean ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map [ key ] Ġ= Ġvalue Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . remove ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġremove ( key : ĠString ): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Preference Map . remove ( key ) Ċĉĉ ĉ un committed Remove Keys . add ( key ) Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . clear ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġclear (): ĠSharedPreferences . Editor Ġ{ Ċĉĉ ĉ un committed Remove Keys . clear () Ċĉĉ ĉ preference Map . clear () Ċĉĉ ĉ un committed Preference Map . clear () Ċĉĉ ĉ return Ġthis Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . commit ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġcommit (): ĠBoolean Ġ{ Ċĉĉ ĉ un committed Remove Keys . forEach Ġ{ Ċĉĉĉ ĉ preference Map . remove ( it ) Ċĉĉ ĉ } ĊĊĉĉ ĉ un committed Preference Map . forEach Ġ{ Ċĉĉĉ ĉ preference Map [ it . key ] Ġ= Ġit . value Ċĉĉ ĉ } ĊĊĉĉ ĉ un committed Remove Keys . clear () Ċĉĉ ĉ un committed Preference Map . clear () Ċĉĉ ĉ return Ġtrue Ċĉ ĉ } ĊĊĉ ĉ /** Ċĉĉ Ġ* ĠMock ed Ġversion Ġof Ġ[ SharedPreferences . Editor . apply ] Ċĉĉ Ġ*/ Ċĉ ĉ override Ġfun Ġapply () Ġ{ Ċĉĉ ĉ commit () Ċĉ ĉ } Ċ ĉ } Ċ }