package Ġru . m rf iring . shift weather app . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġjunit . framework . Assert . assertEquals Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġru . m rf iring . shift weather app . data . database .* Ċ import Ġjava . io . IOException Ċ Ċ class ĠWeather Dao Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweather Dao : ĠWeather Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠWeather Database ĊĊĠĠĠ Ġprivate Ġval Ġcontainer Ġ= ĠDatabase Weather Container ( ĊĠĠĠĠĠĠĠĠ 0 , Ġ" M os cow ", Ġ" hello ", Ġ 1 5 5 7 9 9 , Ġ 4 4 8 8 8 8 9 , Ġ 9 0 . 0 , ĊĠĠĠĠĠĠĠ Ġweather Ġ= ĠDatabase Weather ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 1 0 , Ġ" Clear ", Ġ" Clear ", Ġ" 1 0 d " ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġmain Params Ġ= ĠDatabase Main Weather Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 1 0 0 , Ġ 1 0 . 0 , Ġ 1 , Ġ 1 ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġwind Ġ= ĠDatabase Wind ( 0 , Ġ 0 . 0 , Ġ 0 . 0 , Ġ 0 . 0 ), ĊĠĠĠĠĠĠĠ Ġrain Ġ= ĠDatabase Rain ( 0 , Ġ 0 . 0 , Ġ 0 . 0 ), ĊĠĠĠĠĠĠĠ Ġsnow Ġ= ĠDatabase Snow ( 0 , Ġ 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠApplication Provider . getApplicationContext < Context >() ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= ĠRoom . in Memory Database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Database :: class . java ĊĠĠĠĠĠĠĠ Ġ). build () ĊĊĠĠĠĠĠĠĠ Ġweather Dao Ġ= Ġdatabase . weather Dao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġclose Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Container AndGet It () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert Weather Container ( container ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . get Weather Container ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( container . name , Ġresult . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Weather Expect Weather List Is NotEmpty () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert All Weather ( listOf ( container . weather )) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . get Weather List ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġresult . isNotEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Main Weather AndGet It () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert Main Weather Parameters ( container . main Params ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . get Main Weather Parameters ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( container . main Params . temp , Ġresult . temp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Wind AndGet It () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert Wind ( container . wind ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . get Wind ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( container . wind . deg , Ġresult . deg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Rain AndGet It () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert Rain ( container . rain ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . get Rain ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( container . rain . for Last One Hour , Ġresult . for Last One Hour ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġinsert Snow AndGet It () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Dao . insert Snow ( container . snow ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġweather Dao . getS now ById ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( container . snow . for Last One Hour , Ġresult . for Last One Hour ) ĊĠĠĠ Ġ} Ċ Ċ }