package Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . as LiveData Ċ // import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . test . internal . runner . junit 4 . Android JUnit 4 Class Runner Ċ // import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data . database . Feed Database Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data . database . feed . Item Dao Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data . database . feed . Feed Dao Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data . database . feed . Group Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . data . database . feed . Group Dao Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . utilities . Cor outines Test Rule Ċ import Ġcom . blogspot . fd bo zz o . lect or feed sr ss . util . getValue Ċ import Ġkotlinx . coroutines .* Ċ import Ġorg . junit .* Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . io . IOException Ċ Ċ @ RunWith ( Android JUnit 4 Class Runner :: class ) Ċ @ Experimental Cor outines Api Ċ class ĠGroup Dao Table Tests Ġ{ ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule : ĠTest Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġcor outines Test Rule Ġ= ĠCor outines Test Rule () ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgroup Dao : ĠGroup Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfeed Dao : ĠFeed Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem Dao : ĠItem Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdb : ĠFeed Database ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġ// ĠUsing Ġan Ġin - memory Ġdatabase Ġbecause Ġthe Ġinformation Ġstored Ġhere Ġdis appe ars Ġwhen Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġprocess Ġis Ġkilled . ĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠRoom . in Memory Database Builder ( context , ĠFeed Database :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAllow ing Ġmain Ġthread Ġqueries , Ġjust Ġfor Ġtesting . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġgroup Dao Ġ= Ġdb . getGroup Dao () ĊĠĠĠĠĠĠĠ Ġfeed Dao Ġ= Ġdb . get Feed Dao () ĊĠĠĠĠĠĠĠ Ġitem Dao Ġ= Ġdb . getItem Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġclose Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġde ber ia Insert ar Un Grup o Vac io Y Ob t ener El Nombre Por Def ecto _ Un categor ized () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Id 1 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Group Ġ= Ġgroup Dao . getLast Group () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( Group . DEFAULT _ NAME , Ġlast Group ?. groupName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġde ber ia Insert ar Un Grup o Vac io Por D uplic ado Y Ob t ener Un Ret orno _ men os Uno (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠEn Ġvez Ġde Ġerror Ġse Ġdev uel ve Ġ- 1 Ġporque Ġhay Ġun ĠÃŃ nd ice Ġque Ġimp ide Ġnom bres Ġd uplic ados Ġ**/ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġassert Fails With < SQLite Constraint Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġins Id 1 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġins Id 2 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Id 1 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 2 ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Id 2 Ġ= Ġgroup Dao . insert ( group ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (- 1 , Ġins Id 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġde ber ia Insert ar Dos Grup os Con Dist into Nombre Y Ob t ener Un Rec uento De _ 2 (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Id 1 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 2 ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġgroup . groupName Ġ= Ġ" ot ro ĠmÃ¡s " ĊĠĠĠĠĠĠĠ Ġval Ġins Id 2 Ġ= Ġgroup Dao . insert ( group ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest ĊĠĠĠĠĠĠĠ Ġval Ġvalores Ġ= ĠgetValue ( group Dao . getAll Groups Flow (). as LiveData ()) Ġ?: Ġthrow ĠException (" val ores Ġes Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠVerify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġvalores . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġde ber ia Insert ar Un Grup o Y Bor rar lo Y Ob t ener Un Rec uento De _ 0 (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Vals Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Group Ġ= Ġgroup Dao . getLast Group () Ġ?: Ġthrow ĠException (" last Group Ġes Ġnull ") ĊĠĠĠĠĠĠĠ Ġgroup Dao . delete ( last Group ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest ĊĠĠĠĠĠĠĠ Ġval Ġvalores Ġ= ĠgetValue ( group Dao . getAll Groups Flow (). as LiveData ()) Ġ?: Ġthrow ĠException (" val ores Ġes Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠVerify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 , Ġvalores . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġde ber ia Insert ar Dos Grup os Con Dist into Nombre Y Ob t ener El Id Del Seg undo Grup o (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġval Ġins Id 1 Ġ= Ġgroup Dao . insert ( group ) ĊĠĠĠĠĠĠĠ Ġ// Ġgrupo Ġ 2 ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGroup () ĊĠĠĠĠĠĠĠ Ġgroup . groupName Ġ= Ġ" ot ro ĠmÃ¡s " ĊĠĠĠĠĠĠĠ Ġval Ġins Id 2 Ġ= Ġgroup Dao . insert ( group ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest ĊĠĠĠĠĠĠĠ Ġgroup Ġ= Ġgroup Dao . getGroup ById ( 2 ) ?: ĠGroup () ĊĊĠĠĠĠĠĠĠ Ġ// ĠVerify ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġgroup . id ) ĊĠĠĠ Ġ} ĊĊ Ċ }