package Ġh us ay nh ake em . io . un connect ify re . data Ċ Ċ import Ġandroid . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroid . arch . persistence . room . Room Ċ import Ġandroid . support . test . Instrumentation Registry Ċ import Ġandroid . support . test . runner . Android JUnit 4 Ċ import Ġh us ay nh ake em . io . un connect ify re . data . database . Alarm Ċ import Ġh us ay nh ake em . io . un connect ify re . data . database . Alarm Dao Ċ import Ġh us ay nh ake em . io . un connect ify re . data . database . Alarm Database Ċ import Ġh us ay nh ake em . io . un connect ify re . data . database . Time Ċ import Ġh us ay nh ake em . io . un connect ify re . getValue Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith ĊĊ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠAlarm Database Should Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġrule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠAlarm Database ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdao : ĠAlarm Dao ĊĊĠĠĠ Ġprivate Ġval Ġalarm A Ġ= ĠAlarm ( 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime ( 1 0 , Ġ 1 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime ( 1 1 , Ġ 1 0 , Ġ 3 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Connectivity . WIFI . value ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Day . S ATUR DAY . value , ĠDay . S UND AY . value )) ĊĊĠĠĠ Ġprivate Ġval Ġalarm B Ġ= ĠAlarm ( 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime ( 1 2 , Ġ 1 1 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime ( 1 3 , Ġ 1 2 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Connectivity . HOT SP OT . value , ĠConnect ivity . BL U ETO OTH . value ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Day . MON DAY . value )) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . getTarget Context () ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= ĠRoom . in Memory Database Builder ( context , ĠAlarm Database :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġdao Ġ= Ġdatabase . alarm Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate An Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . getAll Al arms () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠgetValue ( result ). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( alarm A . id , ĠgetValue ( result )[ 0 ]. id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Multiple Al arms () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm B ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . getAll Al arms () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , ĠgetValue ( result ). size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( getValue ( result ). contains All ( listOf ( alarm A , Ġalarm B ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete An Existing Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĠĠĠĠĠĠĠ Ġdao . delete Alarm ( alarm A . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . getAll Al arms () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠgetValue ( result ). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnot Delete AN on Existing Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĠĠĠĠĠĠĠ Ġdao . delete Alarm ( alarm B . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . getAll Al arms () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , ĠgetValue ( result ). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfind An Existing Alarm By It sId () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm B ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . find Alarm ById ( alarm A . id ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( alarm A , ĠgetValue ( result )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturn Null When Finding AN on Existing Alarm By It sId () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . find Alarm ById ( alarm B . id ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( getValue ( result )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupdate An Existing Alarm () Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . create Alarm ( alarm A ) ĊĊĠĠĠĠĠĠĠ Ġdao . update Alarm ( alarm A . copy ( startTime Ġ= ĠTime ( 2 0 , Ġ 2 , Ġ 3 0 ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdao . find Alarm ById ( alarm A . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Time ( 2 0 , Ġ 2 , Ġ 3 0 ), ĠgetValue ( result ). startTime ) ĊĠĠĠ Ġ} Ċ }