/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - 2 0 2 1 ĠThe ĠDevelopers . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License ") Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . github . o he ger . location t eller . track Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . github . o he ger . location t eller . server . Server Config Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . long s . shouldBe LessThan OrEqual Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . mock k . Ordering Ċ import Ġio . mock k . every Ċ import Ġio . mock k . just Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Static Ċ import Ġio . mock k . runs Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . verify Ċ import Ġio . mock k . verify Order Ċ import Ġkotlin . math . abs Ċ Ċ /** Ċ Ġ* ĠTest Ġclass Ġfor Ġ[ Preferences Handler ]. Ċ Ġ*/ Ċ class ĠPreferences Handler Spec Ġ: ĠString Spec () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġsupport Ġupdates Ġon Ġpreferences " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . putString (" foo ", Ġ" bar ") Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . update Ġ{ Ġput String (" foo ", Ġ" bar ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġcurrent Ġtracking Ġstate " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ TRACK _ STATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Many ĠlistOf ( true , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . is Tracking Enabled () ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . is Tracking Enabled () ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġallow Ġsetting Ġthe Ġtracking Ġstate Ġto Ġtrue " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġslot StartTime Ġ= Ġslot < Long >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Boolean ( Preferences Handler . PROP _ TRACK _ STATE , Ġtrue ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ TRACK ING _ START , Ġany ()) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ TRACK ING _ END ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . set Tracking Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Preferences Handler . PROP _ TRACK _ STATE , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ TRACK ING _ START , Ġcapture ( slot StartTime )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ TRACK ING _ END ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Current Time ( slot StartTime . captured ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġallow Ġsetting Ġthe Ġtracking Ġstate Ġto Ġfalse " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġslot EndTime Ġ= Ġslot < Long >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Boolean ( Preferences Handler . PROP _ TRACK _ STATE , Ġfalse ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ TRACK ING _ END , Ġany ()) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . set Tracking Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Preferences Handler . PROP _ TRACK _ STATE , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ TRACK ING _ END , Ġcapture ( slot EndTime )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Current Time ( slot EndTime . captured ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġcorrect Ġf ading Ġmode " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getInt ( Preferences Handler . PROP _ F ADING _ MODE , Ġ 0 ) Ġ} Ġreturns Many ĠlistOf ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . getF ading Mode () ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . getF ading Mode () ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġallow Ġupdating Ġthe Ġf ading Ġmode " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Mode Ġ= Ġ 4 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Int ( Preferences Handler . PROP _ F ADING _ MODE , Ġnew Mode ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . set F ading Mode ( new Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( ordering Ġ= ĠOrdering . ORDER ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Preferences Handler . PROP _ F ADING _ MODE , Ġnew Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġidentify Ġconfiguration Ġproperties " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Props Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ BASE _ PATH , ĠPreferences Handler . PROP _ IDLE _ INCREMENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ VALID ITY , ĠPreferences Handler . PROP _ MAX _ TRACK _ INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MIN _ TRACK _ INTERVAL , ĠPreferences Handler . PROP _ PASSWORD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ USER , ĠPreferences Handler . PROP _ SERVER _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ UPDATE _ THRESHOLD , ĠPreferences Handler . PROP _ RETRY _ ON _ ERROR _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ GPS _ TIMEOUT , ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SYNC _ TIME , ĠPreferences Handler . PROP _ MULTI _ UPLOAD _ CHUNK _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MAX _ SPEED _ INCRE ASE , ĠPreferences Handler . PROP _ WAL K ING _ SPEED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Props . forEach Ġ{ Ġprop Ġ-> ĠPreferences Handler . is Config Property ( prop ) ĠshouldBe Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġidentify Ġnon - configuration Ġproperties " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnon Config Props Ġ= ĠlistOf ( Preferences Handler . PROP _ TRACK _ STATE , Ġ" foo ", Ġ" bar ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnon Config Props . forEach Ġ{ Ġprop Ġ-> ĠPreferences Handler . is Config Property ( prop ) ĠshouldBe Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġrecord Ġan Ġerror " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Time Ġ= Ġ 2 0 1 9 0 7 0 4 2 1 3 3 4 8 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Count Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ ERROR , Ġerror Time ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Int ( Preferences Handler . PROP _ ERROR _ COUNT , Ġerror Count ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . record Error ( error Time , Ġerror Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ ERROR , Ġerror Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Preferences Handler . PROP _ ERROR _ COUNT , Ġerror Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġrecord Ġan Ġupdate " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Time Ġ= Ġ 2 0 1 9 0 7 0 4 2 1 3 7 5 2 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Count Ġ= Ġ 4 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġ 1 1 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Distance Ġ= Ġ 2 0 2 0 0 1 1 8 1 6 1 2 4 9 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ UPDATE , Ġupdate Time ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Int ( Preferences Handler . PROP _ UPDATE _ COUNT , Ġupdate Count ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Int ( Preferences Handler . PROP _ LAST _ DISTANCE , Ġdistance ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ TOTAL _ DISTANCE , Ġtotal Distance ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . record Update ( update Time , Ġupdate Count , Ġdistance , Ġtotal Distance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ UPDATE , Ġupdate Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Preferences Handler . PROP _ UPDATE _ COUNT , Ġupdate Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Preferences Handler . PROP _ LAST _ DISTANCE , Ġdistance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ TOTAL _ DISTANCE , Ġtotal Distance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġrecord Ġa Ġcheck " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Time Ġ= Ġ 2 0 1 9 0 7 1 1 2 2 2 1 2 2 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Count Ġ= Ġ 1 2 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ CHECK , Ġcheck Time ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . put Int ( Preferences Handler . PROP _ CHECK _ COUNT , Ġcheck Count ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . record Check ( check Time , Ġcheck Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Long ( Preferences Handler . PROP _ LAST _ CHECK , Ġcheck Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Preferences Handler . PROP _ CHECK _ COUNT , Ġcheck Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġlast Ġerror Ġtime " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Time Ġ= Ġ 2 0 1 9 0 7 0 5 1 8 0 4 2 2 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ LAST _ ERROR , Ġerror Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Date Ġ= Ġhandler . last Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Date !!. time ĠshouldBe Ġerror Time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġnull Ġfor Ġthe Ġlast Ġerror Ġif Ġundefined " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . contains ( Preferences Handler . PROP _ LAST _ ERROR ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . last Error () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġlast Ġupdate Ġtime " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Time Ġ= Ġ 2 0 1 9 0 7 0 5 1 8 1 1 0 4 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ LAST _ UPDATE , Ġupdate Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Date Ġ= Ġhandler . last Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Date !!. time ĠshouldBe Ġupdate Time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġnull Ġfor Ġthe Ġlast Ġupdate Ġif Ġundefined " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . contains ( Preferences Handler . PROP _ LAST _ UPDATE ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . last Update () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġlast Ġcheck Ġtime " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Time Ġ= Ġ 2 0 1 9 0 7 1 1 2 2 2 6 1 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ LAST _ CHECK , Ġcheck Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Date Ġ= Ġhandler . last Check () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Date !!. time ĠshouldBe Ġcheck Time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġhandle Ġa Ġdate Ġin Ġthe Ġlong Ġpast " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ LAST _ CHECK , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Date Ġ= Ġhandler . last Check () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġnull Ġfor Ġthe Ġlast Ġcheck Ġif Ġundefined " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . contains ( Preferences Handler . PROP _ LAST _ CHECK ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . last Check () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġdistance Ġof Ġthe Ġlast Ġlocation Ġupdate " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġ 1 5 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getInt ( Preferences Handler . PROP _ LAST _ DISTANCE , Ġ 0 ) Ġ} Ġreturns Ġdistance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . last Distance () ĠshouldBe Ġdistance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġtracking Ġstart Ġtime " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= Ġ 2 0 2 0 0 1 1 7 2 1 5 1 4 3 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ TRACK ING _ START , ĠstartTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= Ġhandler . tracking StartDate () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate !!. time ĠshouldBe ĠstartTime ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġtracking Ġstop Ġtime " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= Ġ 2 0 2 0 0 1 1 7 2 2 0 4 5 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Date Property Access ( pref , ĠPreferences Handler . PROP _ TRACK ING _ END , ĠendTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= Ġhandler . tracking EndDate () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendDate !!. time ĠshouldBe ĠendTime ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġtotal Ġdistance " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġ 2 0 2 0 0 1 1 8 1 6 0 1 4 8 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getLong ( Preferences Handler . PROP _ TOTAL _ DISTANCE , Ġ 0 ) Ġ} Ġreturns Ġdistance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Distance Ġ= Ġhandler . total Distance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Distance ĠshouldBe Ġdistance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġerror Ġcount " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 6 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getInt ( Preferences Handler . PROP _ ERROR _ COUNT , Ġ 0 ) Ġ} Ġreturns Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Count Ġ= Ġhandler . error Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Count ĠshouldBe Ġcount ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġcheck Ġcount " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 7 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getInt ( Preferences Handler . PROP _ CHECK _ COUNT , Ġ 0 ) Ġ} Ġreturns Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Count Ġ= Ġhandler . check Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Count ĠshouldBe Ġcount ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġthe Ġupdate Ġcount " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 9 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getInt ( Preferences Handler . PROP _ UPDATE _ COUNT , Ġ 0 ) Ġ} Ġreturns Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Count Ġ= Ġhandler . update Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Count ĠshouldBe Ġcount ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġallow Ġreset ting Ġstatistics Ġdata " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ ERROR _ COUNT ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ TOTAL _ DISTANCE ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ DISTANCE ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ CHECK ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ ERROR ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ UPDATE ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ CHECK _ COUNT ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . remove ( Preferences Handler . PROP _ UPDATE _ COUNT ) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . reset Statistics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ ERROR _ COUNT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ TOTAL _ DISTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ DISTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ CHECK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ LAST _ UPDATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ CHECK _ COUNT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . remove ( Preferences Handler . PROP _ UPDATE _ COUNT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġsupport Ġthe Ġregistration Ġof Ġchange Ġlisteners " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Static ( Preference Manager :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġmock k < Context >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġmock k < SharedPreferences . On Shared Preference ChangeListener >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠPreference Manager . getDefault SharedPreferences ( context ) Ġ} Ġreturns Ġpref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . register On Shared Preference ChangeListener ( listener ) Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . register Listener ( context , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġpref . register On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġsupport Ġremoving Ġof Ġchange Ġlisteners " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Static ( Preference Manager :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġmock k < Context >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġmock k < SharedPreferences . On Shared Preference ChangeListener >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠPreference Manager . getDefault SharedPreferences ( context ) Ġ} Ġreturns Ġpref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . unregister On Shared Preference ChangeListener ( listener ) Ġ} Ġjust Ġruns ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . unregister Listener ( context , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġpref . unregister On Shared Preference ChangeListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġcreate Ġa Ġtrack Ġconfiguration " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrack Config Ġ= ĠTrack Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 0 , Ġ 6 0 0 , Ġ 1 2 0 , Ġ 3 6 0 0 , Ġ 1 5 , Ġ 2 7 , Ġ 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 , Ġ 3 0 , Ġ 2 , Ġtrue , Ġ 2 . 5 , Ġ 1 . 1 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġpreferences From Track Config ( track Config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . create Track Config () ĠshouldBe Ġtrack Config ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġdefault Ġvalues Ġfor Ġa ĠTrack Config Ġif Ġproperties Ġare Ġundefined " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MAX _ TRACK _ INTERVAL , ĠPreferences Handler . PROP _ MIN _ TRACK _ INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ IDLE _ INCREMENT , ĠPreferences Handler . PROP _ LOCATION _ VALID ITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ UPDATE _ THRESHOLD , ĠPreferences Handler . PROP _ RETRY _ ON _ ERROR _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ GPS _ TIMEOUT , ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SYNC _ TIME , ĠPreferences Handler . PROP _ MULTI _ UPLOAD _ CHUNK _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MAX _ SPEED _ INCRE ASE , ĠPreferences Handler . PROP _ WAL K ING _ SPEED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , Ġit , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getBoolean ( Preferences Handler . PROP _ AUTO _ RESET _ STATS , Ġfalse ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġhandler . create Track Config () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . min Track Interval ĠshouldBe ĠPreferences Handler . DEFAULT _ MIN _ TRACK _ INTERVAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . max Track Interval ĠshouldBe ĠPreferences Handler . DEFAULT _ MAX _ TRACK _ INTERVAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . interval Increment On Idle ĠshouldBe ĠPreferences Handler . DEFAULT _ IDLE _ INCREMENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . location Validity ĠshouldBe ĠPreferences Handler . DEFAULT _ LOCATION _ VALID ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . location Update Threshold ĠshouldBe ĠPreferences Handler . DEFAULT _ LOCATION _ UPDATE _ THRESHOLD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . retry OnError Time ĠshouldBe ĠPreferences Handler . DEFAULT _ RETRY _ ON _ ERROR _ TIME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . gps Timeout ĠshouldBe ĠPreferences Handler . DEFAULT _ GPS _ TIMEOUT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . offline Storage Size ĠshouldBe ĠPreferences Handler . DEFAULT _ OFF LINE _ STORAGE _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . max Offline Storage Sync Time ĠshouldBe ĠPreferences Handler . DEFAULT _ OFF LINE _ STORAGE _ SYNC _ TIME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . multi Upload Chunk Size ĠshouldBe ĠPreferences Handler . DEFAULT _ MULTI _ UPLOAD _ CHUNK _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . max Speed Increase ĠshouldBe ĠPreferences Handler . DEFAULT _ MAX _ SPEED _ INCRE ASE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . walk ing Speed ĠshouldBe ĠPreferences Handler . DEFAULT _ WAL K ING _ SPEED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . auto Reset Stats ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġinit Ġshared Ġpreferences Ġwith Ġtrack Ġconfig Ġdefaults " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmock k < SharedPreferences . Editor >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . edit () Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . contains ( any ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . putString ( any (), Ġany ()) Ġ} Ġreturns Ġeditor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġeditor . apply () Ġ} Ġjust Ġruns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . init Track Config Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MIN _ TRACK _ INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Preferences Handler . DEFAULT _ MIN _ TRACK _ INTERVAL Ġ/ Ġ 6 0 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ MAX _ TRACK _ INTERVAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Preferences Handler . DEFAULT _ MAX _ TRACK _ INTERVAL Ġ/ Ġ 6 0 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ IDLE _ INCREMENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Preferences Handler . DEFAULT _ IDLE _ INCREMENT Ġ/ Ġ 6 0 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ VALID ITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Preferences Handler . DEFAULT _ LOCATION _ VALID ITY Ġ/ Ġ 6 0 ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ UPDATE _ THRESHOLD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . DEFAULT _ LOCATION _ UPDATE _ THRESHOLD . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ RETRY _ ON _ ERROR _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . DEFAULT _ RETRY _ ON _ ERROR _ TIME . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ GPS _ TIMEOUT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . DEFAULT _ GPS _ TIMEOUT . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġnot Ġoverride Ġalready Ġdefined Ġproperties Ġof Ġthe Ġtrack Ġconfig " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . contains ( any ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( pref ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . init Track Config Defaults () Ġ Ġ// Ġshould Ġbe Ġnoop ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġcreate Ġa Ġcorrect Ġserver Ġconfiguration " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( preferences From Server Config ( def Server Config )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . create Server Config () ĠshouldBe Ġdef Server Config ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġa Ġnull Ġserver Ġconfig Ġif Ġthe ĠURI Ġis Ġmissing " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Undefined Server Config ( def Server Config . copy ( server Uri Ġ= Ġ"")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġa Ġnull Ġserver Ġconfig Ġif Ġthe Ġbase Ġpath Ġis Ġmissing " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Undefined Server Config ( def Server Config . copy ( basePath Ġ= Ġ"")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġa Ġnull Ġserver Ġconfig Ġif Ġthe Ġuser Ġname Ġis Ġmissing " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Undefined Server Config ( def Server Config . copy ( user Ġ= Ġ"")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Preferences Handler Ġshould Ġreturn Ġa Ġnull Ġserver Ġconfig Ġif Ġthe Ġpassword Ġis Ġmissing " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Undefined Server Config ( def Server Config . copy ( password Ġ= Ġ"")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠA Ġdefault Ġserver Ġconfiguration .*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdef Server Config Ġ= ĠServer Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// track . tst ", Ġ"/ my Tracks ", Ġ" s cott ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" t iger " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrep ares Ġthe Ġgiven Ġmock Ġfor Ġa Ġ_ SharedPreferences _ Ġobject Ġto Ġreturn Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġvalue Ġfor Ġa Ġspecific Ġnumeric Ġproperty . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpref Ġthe Ġ_ SharedPreferences _ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġproperty Ġthe Ġname Ġof Ġthe Ġproperty ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġvalue Ġto Ġbe Ġreturned Ġfor Ġthis Ġproperty ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinit Num Property ( pref : ĠSharedPreferences , Ġproperty : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . getString ( property , Ġ"- 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġvalue . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrep ares Ġthe Ġgiven Ġmock Ġfor Ġa Ġ_ SharedPreferences _ Ġobject Ġto Ġreturn Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġvalue Ġfor Ġa Ġspecific Ġstring Ġproperty . ĠEmpty Ġstrings Ġare Ġmapped Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* null * Ġvalues . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpref Ġthe Ġ_ SharedPreferences _ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġproperty Ġthe Ġname Ġof Ġthe Ġproperty ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġvalue Ġto Ġbe Ġreturned Ġfor Ġthis Ġproperty ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġinit Property ( pref : ĠSharedPreferences , Ġproperty : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġpref . getString ( property , Ġnull ) Ġ} Ġreturns Ġif Ġ( value . isEmpty ()) Ġnull Ġelse Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġmock Ġfor Ġa Ġ_ SharedPreferences _ Ġobject Ġthat Ġis Ġprepared Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġreturn Ġthe Ġproperties Ġfrom Ġthe Ġgiven Ġtrack Ġconfiguration . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtrack Config Ġthe Ġtrack Ġconfiguration ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmock Ġ_ SharedPreferences _ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpreferences From Track Config ( track Config : ĠTrack Config ): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ MIN _ TRACK _ INTERVAL , Ġtrack Config . min Track Interval Ġ/ Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ MAX _ TRACK _ INTERVAL , Ġtrack Config . max Track Interval Ġ/ Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ IDLE _ INCREMENT , Ġtrack Config . interval Increment On Idle Ġ/ Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ LOCATION _ VALID ITY , Ġtrack Config . location Validity Ġ/ Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ LOCATION _ UPDATE _ THRESHOLD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Config . location Update Threshold ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ RETRY _ ON _ ERROR _ TIME , Ġtrack Config . retry OnError Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ GPS _ TIMEOUT , Ġtrack Config . gps Timeout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SIZE , Ġtrack Config . offline Storage Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ OFF LINE _ STORAGE _ SYNC _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Config . max Offline Storage Sync Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ MULTI _ UPLOAD _ CHUNK _ SIZE , Ġtrack Config . multi Upload Chunk Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ MAX _ SPEED _ INCRE ASE , Ġtrack Config . max Speed Increase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Num Property ( pref , ĠPreferences Handler . PROP _ WAL K ING _ SPEED , Ġtrack Config . walk ing Speed Ġ* Ġ 3 . 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreferences Handler . PROP _ AUTO _ RESET _ STATS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġtrack Config . auto Reset Stats ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpref ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġmock Ġfor Ġa Ġ_ SharedPreferences _ Ġobject Ġthat Ġis Ġprepared Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġreturn Ġthe Ġproperties Ġfrom Ġthe Ġgiven Ġserver Ġconfiguration . ĠIf Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġstring Ġproperty Ġof Ġthe Ġconfiguration Ġis Ġan Ġempty Ġstring , Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġproperty Ġis Ġnot Ġset . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġpreferences From Server Config ( server Config : ĠServer Config ): ĠSharedPreferences Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= Ġmock k < SharedPreferences >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Property ( pref , ĠPreferences Handler . PROP _ SERVER _ URI , Ġserver Config . server Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Property ( pref , ĠPreferences Handler . PROP _ BASE _ PATH , Ġserver Config . basePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Property ( pref , ĠPreferences Handler . PROP _ USER , Ġserver Config . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Property ( pref , ĠPreferences Handler . PROP _ PASSWORD , Ġserver Config . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpref ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTests Ġwhether Ġa Ġ* null * Ġserver Ġconfig Ġis Ġreturned Ġin Ġcase Ġof Ġmissing ĊĠĠĠĠĠĠĠĠ Ġ* Ġproperties . ĠShared Ġpreferences Ġare Ġcreated Ġbased Ġon Ġthe Ġpassed Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġconfiguration . ĠThen Ġit Ġis Ġtested Ġwhether Ġbased Ġon Ġthe Ġpreferences Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* null * Ġconfiguration Ġis Ġcreated . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġconfig Ġthe Ġconfiguration ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcheck Undefined Server Config ( config : ĠServer Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠPreferences Handler ( preferences From Server Config ( config )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . create Server Config () ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrep ares Ġthe Ġgiven Ġmock Ġfor Ġa Ġpreferences Ġobject Ġto Ġreturn Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġgiven Ġvalue Ġwhen Ġasked Ġfor Ġa Ġdata Ġproperty . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġprefs Ġthe Ġpreferences Ġmock ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġthe Ġkey Ġof Ġthe Ġproperty ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe Ġvalue Ġto Ġbe Ġreturned ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġexpect Date Property Access ( prefs : ĠSharedPreferences , Ġkey : ĠString , Ġvalue : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġprefs . contains ( key ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġprefs . getLong ( key , Ġ 0 ) Ġ} Ġreturns Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHelper Ġfunction Ġthat Ġchecks Ġwhether Ġa Ġtime Ġvalue Ġis Ġclose Ġto Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġcurrent Ġsystem Ġtime . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtime Ġthe Ġtime Ġvalue Ġto Ġbe Ġchecked ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġassert Current Time ( time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( System . currentTimeMillis () Ġ- Ġtime ) ĠshouldBe LessThan OrEqual Ġ 3 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ