package Ġuk . n hs . n hs x . covid 1 9 . android . app . util Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . SharedPreferences . Editor Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġio . mock k . Called Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . Test Instance . Lifecycle Ċ import Ġorg . junit . jupiter . api . condition . Disabled If Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Method Source Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . di . module . Network Module Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . util . Provider Test Expectation Direction . B IDI RECTION AL Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . util . Provider Test Expectation Direction . JSON _ TO _ OBJECT Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . util . Provider Test Expectation Direction . OBJECT _ TO _ JSON Ċ import Ġkotlin . reflect . K Mutable Property 1 Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ @ Test Instance ( Lifecycle . PER _ CLASS ) Ċ abstract Ġclass ĠProvider Test < P Ġ: ĠProvider , ĠT > Ġ{ ĊĠĠĠ Ġprotected Ġval Ġshared Preferences Ġ= Ġmock k < SharedPreferences >( relax Unit Fun Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġshared Preferences Editor Ġ= Ġmock k < Editor >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprotected Ġval Ġm oshi : ĠM oshi Ġ= ĠNetwork Module . mos hi ĊĠĠĠ Ġabstract Ġval Ġget Test Subject : Ġ( M oshi , ĠSharedPreferences ) Ġ-> ĠP ĊĊĠĠĠ Ġprotected Ġval Ġtest Subject Ġby Ġlazy Ġ{ Ġget Test Subject ( mos hi , Ġshared Preferences ) Ġ} ĊĠĠĠ Ġabstract Ġval Ġproperty : ĠK Property 1 < P , ĠT > ĊĠĠĠ Ġabstract Ġval Ġkey : ĠString ĊĠĠĠ Ġabstract Ġval ĠdefaultValue : ĠT ĊĠĠĠ Ġabstract Ġval Ġexpectations : ĠList < Provider Test Expectation < T >> ĊĊĠĠĠ Ġprivate Ġfun Ġserialization Expectations () Ġ= Ġexpectations . filter Ġ{ Ġit . is Serialization () Ġ} ĊĠĠĠ Ġprivate Ġfun Ġde serialization Expectations () Ġ= Ġexpectations . filter Ġ{ Ġit . is Deserialization () Ġ} ĊĠĠĠ Ġprivate Ġfun Ġserialization Expectations Empty () Ġ= Ġserialization Expectations (). isEmpty () ĊĠĠĠ Ġprivate Ġfun Ġde serialization Expectations Empty () Ġ= Ġde serialization Expectations (). isEmpty () ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġshared Preferences . edit () Ġ} Ġreturns Ġshared Preferences Editor ĊĠĠĠĠĠĠĠ Ġshared Preferences Returns ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġinternal Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIt Ġseems Ġmock k Ġmocks Ġdon 't Ġget Ġcleared Ġin Ġbetween Ġexecution s Ġof Ġparameter ized Ġtests ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshared Preferences Returns ( json : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġshared Preferences . all [ key ] Ġ} Ġreturns Ġjson ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġdefault Ġwhen Ġnull `() Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences Returns ( null ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( defaultValue , Ġproperty . get ( test Subject )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġdefault Ġwhen Ġcorrupt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences Returns ( CORR UP T _ VALUE ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( defaultValue , Ġproperty . get ( test Subject )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Disabled If (" de serialization Expectations Empty ") ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" de serialization Expectations ") ĊĠĠĠ Ġfun Ġ` verify Ġde serialization Ġof Ġjson `( expect ation : ĠProvider Test Expectation < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( expect ation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences Returns ( json ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( object Value , Ġproperty . get ( test Subject )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Disabled If (" serialization Expectations Empty ") ĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Method Source (" serialization Expectations ") ĊĠĠĠ Ġfun Ġ` verify Ġserialization Ġto Ġjson `( expect ation : ĠProvider Test Expectation < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( expect ation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( property Ġas ĠK Mutable Property 1 < P , ĠT >). set ( test Subject , Ġobject Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Shared Preference Sets Value ( json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġassert Shared Preference Sets Value ( json : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( json Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġshared Preferences Editor . remove ( key ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġshared Preferences Editor . putString ( key , Ġjson ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġverify SharedPreferences Editor Was Not Called () Ġ{ ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġshared Preferences Editor Ġwas Not ĠCalled Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOR R UP T _ VALUE Ġ= Ġ" CORR UP T _ VALUE _ ds fds fs df ds fd sf " ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠProvider Test Expectation < T >( ĊĠĠĠ Ġval Ġjson : ĠString ?, ĊĠĠĠ Ġval Ġobject Value : ĠT , ĊĠĠĠ Ġval Ġdirection : ĠProvider Test Expectation Direction Ġ= ĠB IDI RECTION AL Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġis Deserialization (): ĠBoolean Ġ= Ġdirection Ġ== ĠJSON _ TO _ OBJECT Ġ|| Ġdirection Ġ== ĠB IDI RECTION AL ĊĊĠĠĠ Ġfun Ġis Serialization (): ĠBoolean Ġ= Ġdirection Ġ== ĠOBJECT _ TO _ JSON Ġ|| Ġdirection Ġ== ĠB IDI RECTION AL Ċ } Ċ Ċ enum Ġclass ĠProvider Test Expectation Direction Ġ{ ĊĠĠĠ ĠJSON _ TO _ OBJECT , ĊĠĠĠ ĠOBJECT _ TO _ JSON , ĊĠĠĠ ĠB IDI RECTION AL Ċ } Ċ