package Ġcom . ud acity . project 4 . location rem inders . sa ver em inder Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . ud acity . project 4 . location rem inders . Main Coroutine Rule Ċ import Ġcom . ud acity . project 4 . location rem inders . data . Fake DataSource Ċ import Ġcom . ud acity . project 4 . location rem inders . data . dto . Result Ċ import Ġcom . ud acity . project 4 . location rem inders . rem inders list . Reminder Data Item Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . k oin . core . context . stop K oin Ċ import Ġorg . ro bo lectric . annotation . Config Ċ Ċ @ Experimental Cor outines Api Ċ @ Config ( sdk Ġ= Ġ[ Build . VERSION _ CODES . O _ MR 1 ]) Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠSave Reminder ViewModel Test Ġ{ ĊĠĠĠ Ġ// Ġdone ĠTODO : Ġprovide Ġtesting Ġto Ġthe ĠSave Reminder View Ġand Ġits Ġlive Ġdata Ġobjects ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsave Reminder ViewModel : ĠSave Reminder ViewModel ĊĠĠĠ Ġprivate Ġval Ġfake DataSource Ġ= ĠFake DataSource () ĊĊĠĠĠ Ġ@ get : ĠRule ĊĠĠĠ Ġvar Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ get : ĠRule ĊĠĠĠ Ġvar Ġmain Coroutine Rule Ġ= ĠMain Coroutine Rule () ĊĊĠĠĠ Ġprivate Ġval Ġreminder Data Item 1 Ġ= ĠRem inder Data Item ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 1 0 0 0 ", ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Title Ġ 1 ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Description Ġ 1 ", ĊĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ" Location Ġ 1 ", ĊĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 3 8 . 9 7 6 5 6 0 , ĊĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ- 7 7 . 3 5 5 7 6 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop K oin () ĊĊĠĠĠĠĠĠĠ Ġsave Reminder ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSave Reminder ViewModel ( Application Provider . getApplicationContext (), Ġfake DataSource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave Reminder Result Success () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup ĊĠĠĠĠĠĠĠ Ġsave Reminder ViewModel . save Reminder ( reminder Data Item 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠVerify Ġreminder Ġitem Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġresult Reminder Data Item 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake DataSource . get Reminder ( reminder Data Item 1 . id ) Ġas ĠResult . Success ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssertions ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . id , Ġ` is `( reminder Data Item 1 . id )) ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . title , Ġ` is `( reminder Data Item 1 . title )) ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . description , Ġ` is `( reminder Data Item 1 . description )) ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . location , Ġ` is `( reminder Data Item 1 . location )) ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . latitude , Ġ` is `( reminder Data Item 1 . latitude )) ĊĠĠĠĠĠĠĠ ĠassertThat ( result Reminder Data Item 1 . data . longitude , Ġ` is `( reminder Data Item 1 . longitude )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Set Location () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup ĊĠĠĠĠĠĠĠ Ġval Ġlat Long Ġ= ĠLat Lng ( reminder Data Item 1 . latitude !! , Ġreminder Data Item 1 . longitude !! ) ĊĊĠĠĠĠĠĠĠ Ġsave Reminder ViewModel . setLocation ( lat Long ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssertions ĊĠĠĠĠĠĠĠ Ġval Ġlat Ġ= Ġsave Reminder ViewModel . latitude . value ĊĠĠĠĠĠĠĠ Ġval Ġlon Ġ= Ġsave Reminder ViewModel . longitude . value ĊĠĠĠĠĠĠĠ ĠassertThat ( lat , Ġ` is `( reminder Data Item 1 . latitude !! )) ĊĠĠĠĠĠĠĠ ĠassertThat ( lon , Ġ` is `( reminder Data Item 1 . longitude !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Set Selected Location String () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup ĊĠĠĠĠĠĠĠ Ġval Ġtest Str Ġ= Ġ" this Ġis Ġmy Ġstring " ĊĠĠĠĠĠĠĠ Ġsave Reminder ViewModel . setSelected Location String ( test Str ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssertions ĊĠĠĠĠĠĠĠ Ġval Ġverify Str Ġ= Ġsave Reminder ViewModel . reminder Selected Location Str . value ĊĠĠĠĠĠĠĠ ĠassertThat ( test Str , Ġ` is `( verify Str )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Validate No Title () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup ĊĠĠĠĠĠĠĠ Ġreminder Data Item 1 . title Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġsave Reminder ViewModel . validate Entered Data ( reminder Data Item 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssertions ĊĠĠĠĠĠĠĠ ĠassertThat ( res , Ġ` is `( false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Validate No Location Data () Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup ĊĠĠĠĠĠĠĠ Ġreminder Data Item 1 . location Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġsave Reminder ViewModel . validate Entered Data ( reminder Data Item 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssertions ĊĠĠĠĠĠĠĠ ĠassertThat ( res , Ġ` is `( false )) ĊĠĠĠ Ġ} Ċ }