package Ġse . bar sk . park Ċ Ċ import Ġandroid . content . Context Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġse . bar sk . park . storage . Shared Prefs Ċ import Ġjava . lang . reflect . Modifier ĊĊ Ċ class ĠSharedPreferences Test Ġ: ĠRo bo lectric Test () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġthat Ġthere Ġare Ġno Ġduplicate Ġkeys Ġin ĠShared Prefs . keys Ġsince Ġthat Ġwould Ġmean ĊĠĠĠĠ Ġ* Ġdifferent Ġthings Ġare Ġwritten Ġto Ġthe Ġsame Ġkey Ġin ĠSharedPreferences . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġunique Keys Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext () ĊĠĠĠĠĠĠĠ Ġval Ġkeys : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġ// Ġbased Ġon Ġhttps :// stackoverflow . com / a / 1 7 6 0 7 4 4 9 / 1 7 3 0 9 6 6 ĊĠĠĠĠĠĠĠ ĠR . string :: class . java . declared Fields ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠModifier . is Static ( it . modifiers ) Ġ&& Ġ! Modifier . is Private ( it . modifiers ) Ġ&& Ġit . type Ġ== ĠInt :: class . java Primitive Type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name . startsWith (" key _ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Name Ġ= Ġcontext . getString ( it . getInt ( null )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Multiple Ġinstances Ġof Ġkey Ġ'$ key Name '", Ġfalse , Ġkeys . contains ( key Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys . add ( key Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegal AccessException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġprefs File Ġ= Ġ" test _ prefs _ file " ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġclear Shared Prefs () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext (). get SharedPreferences ( prefs File , ĠContext . MODE _ PRIVATE ). edit (). clear (). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġthat Ġfirst Ġand Ġcurrent Ġversion Ġcode / name Ġis Ġwritten Ġto Ġshared Ġpreferences ĊĠĠĠĠ Ġ* Ġon Ġfirst Ġinstall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshared Prefs First Install Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext () ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= Ġcontext . get SharedPreferences ( prefs File , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( shared Preferences . contains ( context . getString ( R . string . key _ first _ version _ code ))) ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( shared Preferences . contains ( context . getString ( R . string . key _ first _ version _ name ))) ĊĠĠĠĠĠĠĠ ĠAssert . assertFalse ( shared Preferences . contains ( context . getString ( R . string . key _ current _ version _ code ))) ĊĠĠĠĠĠĠĠ ĠShared Prefs ( context , Ġshared Preferences ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Build Config . VERSION _ CODE . toString (), Ġshared Preferences . getString ( context . getString ( R . string . key _ first _ version _ code ), Ġ"")) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Build Config . VERSION _ NAME , Ġshared Preferences . getString ( context . getString ( R . string . key _ first _ version _ name ), Ġ"")) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Build Config . VERSION _ CODE . toString (), Ġshared Preferences . getString ( context . getString ( R . string . key _ current _ version _ code ), Ġ"")) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġthat Ġfirst Ġand Ġcurrent Ġversion Ġcode / name Ġis Ġupdated Ġproperly Ġon Ġupgrade ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshared Prefs Upgrade Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext () ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= Ġcontext . get SharedPreferences ( prefs File , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ first _ version _ code ), Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ first _ version _ name ), Ġ" 0 . 1 ") ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ current _ version _ code ), Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ ĠShared Prefs ( context , Ġshared Preferences ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 0 ", Ġshared Preferences . getString ( context . getString ( R . string . key _ first _ version _ code ), Ġ"")) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" 0 . 1 ", Ġshared Preferences . getString ( context . getString ( R . string . key _ first _ version _ name ), Ġ"")) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Build Config . VERSION _ CODE . toString (), Ġshared Preferences . getString ( context . getString ( R . string . key _ current _ version _ code ), Ġ"")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Past 5 Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . VERSION _ CODE Ġ< Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġtest Ġcan Ġonly Ġbe Ġrun Ġwhen Ġcurrent Ġversion Ġis Ġ 6 Ġor Ġhigher . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext () ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= Ġcontext . get SharedPreferences ( prefs File , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared Preferences . edit () ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ first _ version _ code ), Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ first _ version _ name ), Ġ" 0 . 1 ") ĊĠĠĠĠĠĠĠ Ġeditor . putString ( context . getString ( R . string . key _ current _ version _ code ), Ġ" 0 ") ĊĠĠĠĠĠĠĠ Ġeditor . put Boolean ( context . getString ( R . string . key _ usage _ statistics ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġeditor . put Boolean ( context . getString ( R . string . key _ crash _ reporting ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ ĠShared Prefs ( context , Ġshared Preferences ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( false , Ġshared Preferences . getBoolean ( context . getString ( R . string . key _ usage _ statistics ), Ġfalse )) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( false , Ġshared Preferences . getBoolean ( context . getString ( R . string . key _ crash _ reporting ), Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġthat Ġthe Ġexpected Ġdefault Ġvalues Ġare Ġreported Ġon Ġclean Ġinstall Ġbefore Ġthe Ġuser ĊĠĠĠĠ Ġ* Ġhave Ġchanged Ġanything . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdefaults Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext () ĊĠĠĠĠĠĠĠ Ġval Ġshared Preferences Ġ= Ġcontext . get SharedPreferences ( prefs File , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Ġ= ĠShared Prefs ( context , Ġshared Preferences ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( context . getString ( R . string . default _ usage _ statistics ). to Boolean (), Ġshared Prefs . crash Reporting Enabled ()) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( context . getString ( R . string . default _ usage _ statistics ). to Boolean (), Ġshared Prefs . stats Enabled ()) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( context . getString ( R . string . default _ refresh _ interval ). to Long (), Ġshared Prefs . get Automatic Update Interval ()) ĊĠĠĠ Ġ} Ċ }