/* Ċ Ġ* Ġ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 Ġcom . github . o he ger . location t eller . server . Current Time Service Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . matchers . types . shouldBe InstanceOf Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Static Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Obsolete Cor outines Api Ċ import Ġkotlinx . coroutines . channels . Send Channel Ċ Ċ /** Ċ Ġ* ĠTest Ġclass Ġfor Ġthe Ġseveral Ġfactory Ġclasses . Ċ Ġ*/ Ċ @ Obsolete Cor outines Api Ċ class ĠFact ories Spec Ġ: ĠString Spec () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Updater Actor Factory Ġshould Ġcreate Ġa Ġcorrect Ġactor " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr Scope Ġ= Ġmock k < Coroutine Scope >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġmock k < Send Channel < Location Update >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Handler Ġ= ĠTrack TestHelper . prepare Preferences () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Static (" com . github . o he ger . location t eller . track . Location Updater Kt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġlocation Updater Actor ( any (), Ġcr Scope ) Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupload Controller Ġ= Ġarg < Upload Controller >( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġupload Controller . track Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . dav Client . config ĠshouldBe ĠTrack TestHelper . def Server Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Controller . pref Handler ĠshouldBe Ġpref Handler ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Controller . track Config ĠshouldBe ĠTrack TestHelper . def Track Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Controller . offline Storage . capacity ĠshouldBe ĠTrack TestHelper . def Track Config . offline Storage Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Controller . offline Storage . min Track Interval ĠshouldBe ĠTrack TestHelper . def Track Config . min Track Interval Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Controller . time Service ĠshouldBe ĠCurrent Time Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠUp dater Actor Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . create Actor ( pref Handler , ĠTrack TestHelper . def Track Config , Ġcr Scope ) ĠshouldBe Ġactor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Update Actor Factory Ġshould Ġreturn Ġnull Ġif Ġno Ġserver Ġconfig Ġis Ġdefined " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Handler Ġ= ĠTrack TestHelper . prepare Preferences ( svr Conf Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠUp dater Actor Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . create Actor ( pref Handler , ĠTrack TestHelper . def Track Config , Ġmock k ()) ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Location Retriever Factory Ġshould Ġcreate Ġa Ġcorrect Ġretrie ver Ġobject " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġmock k < Context >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Client Ġ= Ġmock k < F used Location Provider Client >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Static ( Location Services :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠLocation Services . getF used Location Provider Client ( context ) Ġ} Ġreturns Ġlocation Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠLocation Retriever Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= Ġfactory . create Retriever ( context , ĠTrack TestHelper . def Track Config , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . shouldBe InstanceOf < Location Retriever Impl >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . location Client ĠshouldBe Ġlocation Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . timeout ĠshouldBe ĠTrack TestHelper . def Track Config . gps Timeout Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Location Retriever Factory Ġshould Ġcreate Ġa Ġvalidating Ġretrie ver Ġobject " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġmock k < Context >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Client Ġ= Ġmock k < F used Location Provider Client >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Static ( Location Services :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠLocation Services . getF used Location Provider Client ( context ) Ġ} Ġreturns Ġlocation Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠLocation Retriever Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= Ġfactory . create Retriever ( context , ĠTrack TestHelper . def Track Config , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . shouldBe InstanceOf < Valid ating Location Retriever >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrapped Retriever Ġ= Ġretrie ver . wrapped Retriever ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Retriever . shouldBe InstanceOf < Location Retriever Impl >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Retriever . location Client ĠshouldBe Ġlocation Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Retriever . timeout ĠshouldBe ĠTrack TestHelper . def Track Config . gps Timeout Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . max Speed Increase ĠshouldBe ĠTrack TestHelper . def Track Config . max Speed Increase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . walk ing Speed ĠshouldBe ĠTrack TestHelper . def Track Config . walk ing Speed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . time Service ĠshouldBe ĠE lapsed Time Service ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Location Processor Factory Ġshould Ġcreate Ġa Ġcorrect Ġprocessor Ġobject " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= Ġmock k < Location Retriever >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġmock k < Send Channel < Location Update >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠLocation Processor Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocessor Ġ= Ġfactory . create Processor ( retrie ver , Ġactor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . location Retriever ĠshouldBe Ġretrie ver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . location Update Actor ĠshouldBe Ġactor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . time Service ĠshouldBe ĠCurrent Time Service ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ