package Ġcom . y ose m ite y ss . gre entr ans it . app . main Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġcom . y ose m ite y ss . gre entr ans it . domain . use cases . location . GetDevice Location UseCase Ċ import Ġcom . y ose m ite y ss . gre entr ans it . domain . use cases . near by . Get Near by Stops UseCase Ċ import Ġcom . y ose m ite y ss . gre entr ans it . test shared . repositories . Fake Location Repository Impl Ċ import Ġcom . y ose m ite y ss . gre entr ans it . test shared . repositories . Fake Transit Repository Impl Ċ import Ġcom . y ose m ite y ss . gre entr ans it . test shared . utils . Test Coroutine Rule Ċ import Ġcom . y ose m ite y ss . gre entr ans it . test shared . utils . run Blocking Test Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġke vin Ġon Ġ 1 2 / 5 / 2 0 2 1 Ċ Ġ*/ Ċ Ċ class ĠMain ViewModel Test Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġcoroutine Rule Ġ= ĠTest Coroutine Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġenable Ġmap `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain ViewModel Ġ= Ġcreate Main ViewModel () ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . permission Granted . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( expect Item ()) ĠĠ Ġ// ĠDefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . on Permission Granted ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( expect Item ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġdisable Ġmap `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain ViewModel Ġ= Ġcreate Main ViewModel () ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . permission Granted . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( expect Item ()) ĠĠ Ġ// ĠDefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . on Permission Granted ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect No Events () ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo Ġchange Ġdue Ġto Ġstate flow ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġshow Ġtoast Ġmessage `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain ViewModel Ġ= Ġcreate Main ViewModel () ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" message " ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . toast Message . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . on Show Toast Message ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( message , Ġexpect Item ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġget Ġnearby Ġstops Ġsuccess , Ġlist Ġpopulated `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain ViewModel Ġ= Ġcreate Main ViewModel () ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . near by Stops . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( expect Item (). isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġget Ġnearby Ġstops Ġerror , Ġlist Ġremains Ġempty `() Ġ= Ġcoroutine Rule . run Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain ViewModel Ġ= Ġcreate Main ViewModel ( throw Network Error Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . near by Stops . test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( expect Item (). isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Main ViewModel ( throw Network Error : ĠBoolean Ġ= Ġfalse ): ĠMain ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMain ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Device Location UseCase Ġ= ĠGet Device Location UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Repository Ġ= ĠFake Location Repository Impl (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Dispatcher Ġ= Ġcoroutine Rule . test Dispatcher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Near by Stops UseCase Ġ= ĠGet Near by Stops UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransit Repository Ġ= ĠFake Transit Repository Impl (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Network Error ( throw Network Error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Dispatcher Ġ= Ġcoroutine Rule . test Dispatcher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }