package Ġsoftware . n inet of ive . review . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . pm . Package Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġcom . n ha ar man . mock it ok otlin 2 .* Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito Ċ Ċ class ĠAsk For Review SharedPreferences Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĠĠĠ Ġval Ġversion : ĠString Ġ= Ġ" 4 2 3 " ĊĊĠĠĠ Ġlateinit Ġvar Ġpreferences : ĠAsk For Review SharedPreferences ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġpackage Info : ĠPackage Info Ġ= ĠPackage Info (). apply Ġ{ Ġversion Name Ġ= Ġversion Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpackage Manager Mock : ĠPackage Manager Ġ= Ġmock Ġ{ Ġon Ġ{ Ġthis . get Package Info (" name ", Ġ 0 ) Ġ} Ġdo Return Ġpackage Info Ġ} ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġmock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . packageName Ġ} Ġdo Return Ġ" name " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . package Manager Ġ} Ġdo Return Ġpackage Manager Mock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġthis . get SharedPreferences ( any (), Ġany ()) Ġ} Ġdo Return Ġshared Preferences ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpreferences Ġ= ĠAsk For Review SharedPreferences ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Launch Count _ returns Launch Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Count Ġ= Ġ 4 3 ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getInt ( any (), Ġeq ( 0 ))). do Return ( launch Count ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpreferences . get Launch Count () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( launch Count , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Days TimeStamp In Milliseconds _ returns TimeStamp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtimes T amp Ġ= Ġ 4 3 5 1 3 5 1 3 9 2 5 L ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getLong ( any (), Ġeq (- 1 L ))). do Return ( times T amp ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpreferences . get Days TimeStamp In Milliseconds () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( times T amp , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Already Show ed _ returns Already Show ed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalready Show ed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getBoolean ( any (), Ġeq ( false ))). do Return ( already Show ed ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpreferences . get Already Show ed () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( already Show ed , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġincrement Launch Count _ in crements Value In Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor : ĠSharedPreferences . Editor Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Count Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . edit ()). do Return ( editor ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( editor . put Int ( any (), Ġeq ( launch Count Ġ+ Ġ 1 ))). do Return ( editor ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getInt ( any (), Ġeq ( 0 ))). do Return ( launch Count ) ĊĊĠĠĠĠĠĠĠ Ġpreferences . increment Launch Count () ĊĊĠĠĠĠĠĠĠ Ġverify ( editor ). apply () ĊĠĠĠĠĠĠĠ Ġverify ( editor ). put Int ( any (), Ġeq ( launch Count Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġverify ( shared Preferences ). edit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Days _ does Nothing When Already Has Days () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġ 3 2 4 3 L ĊĠĠĠĠĠĠĠ Ġval Ġtimes T amp Ġ= Ġ 4 3 5 1 3 5 1 3 9 2 5 L ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getLong ( any (), Ġeq (- 1 L ))). do Return ( times T amp ) ĊĠĠĠĠĠĠĠ Ġpreferences . set Days ( now ) ĊĊĠĠĠĠĠĠĠ Ġverify ( shared Preferences , Ġtimes ( 0 )). edit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Days _ sets New Days IfNot Already Has Days () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġ 3 2 4 3 L ĊĠĠĠĠĠĠĠ Ġval Ġeditor : ĠSharedPreferences . Editor Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . getLong ( any (), Ġeq (- 1 L ))). do Return (- 1 L ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . edit ()). do Return ( editor ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( editor . put Long ( any (), Ġeq ( now ))). do Return ( editor ) ĊĠĠĠĠĠĠĠ Ġpreferences . set Days ( now ) ĊĊĠĠĠĠĠĠĠ Ġverify ( editor ). apply () ĊĠĠĠĠĠĠĠ Ġverify ( editor ). put Long ( any (), Ġeq ( now )) ĊĠĠĠĠĠĠĠ Ġverify ( shared Preferences ). edit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Already Show ed _ puts True As Boolean In Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor : ĠSharedPreferences . Editor Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Preferences . edit ()). do Return ( editor ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( editor . put Boolean ( any (), Ġeq ( true ))). do Return ( editor ) ĊĊĠĠĠĠĠĠĠ Ġpreferences . set Already Show ed () ĊĊĠĠĠĠĠĠĠ Ġverify ( editor ). apply () ĊĠĠĠĠĠĠĠ Ġverify ( editor ). put Boolean ( any (), Ġeq ( true )) ĊĠĠĠĠĠĠĠ Ġverify ( shared Preferences ). edit () ĊĠĠĠ Ġ} ĊĊ Ċ }