package Ġxyz . man o los . cub os Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġio . reactivex . android . plugins . Rx Android Plugins Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . junit .* Ċ import Ġorg . junit . runner . RunWith Ċ import Ġxyz . man o los . cub os . database . App Database Ċ import Ġxyz . man o los . cub os . database . Movie Dao Ċ import Ġxyz . man o los . cub os . database . Movie Genre Dao Ċ import Ġxyz . man o los . cub os . model . Movie Ċ import Ġxyz . man o los . cub os . model . Movie Genre Ċ Ċ @ RunWith ( android x . test . ext . junit . runners . Android JUnit 4 :: class ) ĊĊ Ċ class ĠDatabase Room Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Database : ĠApp Database ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie Dao : ĠMovie Dao ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmovie Genre Dao : ĠMovie Genre Dao ĊĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġinstant Task Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ ĠRx Android Plugins . set Init MainThread Scheduler Handler Ġ{ ĠS chedulers . tr amp oline () Ġ} ĊĠĠĠĠĠĠĠ Ġapp Database Ġ= ĠRoom . in Memory Database Builder ( app Context , ĠApp Database :: class . java ). build () ĊĠĠĠĠĠĠĠ Ġmovie Dao Ġ= Ġapp Database . movie Dao () ĊĠĠĠĠĠĠĠ Ġmovie Genre Dao Ġ= Ġapp Database . movie Genre Dao () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġclose Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Database . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Empty Movie List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall Movies Ġ= Ġmovie Dao . getAll Movies () ĊĠĠĠĠĠĠĠ Ġall Movies . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( it . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return NotEmpty Movie List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Movie >() ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 1 , Ġ" title ", Ġnull , Ġnull , Ġnull , Ġnull )) ĊĠĠĠĠĠĠĠ Ġmovie Dao . insert Movies ( list ). subscribe () ĊĠĠĠĠĠĠĠ Ġval Ġall Movies Ġ= Ġmovie Dao . getAll Movies () ĊĠĠĠĠĠĠĠ Ġall Movies . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertFalse ( it . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return 3 Movies In Movies List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Movie >() ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 1 , Ġ" title 1 ", Ġnull , Ġnull , Ġnull , Ġnull , Ġempty List ())) ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 2 , Ġ" title 2 ", Ġnull , Ġnull , Ġnull , Ġnull , Ġempty List ())) ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 3 , Ġ" title 3 ", Ġnull , Ġnull , Ġnull , Ġnull , Ġempty List ())) ĊĊĠĠĠĠĠĠĠ Ġmovie Dao . insert Movies ( list ). subscribe () ĊĠĠĠĠĠĠĠ Ġval Ġall Movies Ġ= Ġmovie Dao . getAll Movies () ĊĠĠĠĠĠĠĠ Ġall Movies . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( it . size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Return Movie By Genre Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenre List From Movie Ġ= ĠArrayList < Long >() ĊĠĠĠĠĠĠĠ Ġgenre List From Movie . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġgenre List From Movie . add ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Movie >() ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 1 , Ġ" title 1 ", Ġnull , Ġnull , Ġnull , Ġnull , Ġgenre List From Movie Ġ)) ĊĠĠĠĠĠĠĠ Ġlist . add ( Movie ( 2 , Ġ" title 1 ", Ġnull , Ġnull , Ġnull , Ġnull , Ġgenre List From Movie Ġ)) ĊĠĠĠĠĠĠĠ Ġmovie Dao . insert Movies ( list ). subscribe () ĊĊĠĠĠĠĠĠĠ Ġval Ġmovies Gen res List Ġ= ĠArrayList < Movie Genre >() ĊĠĠĠĠĠĠĠ Ġmovies Gen res List . add ( Movie Genre ( Ġ 1 , Ġ 1 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġmovies Gen res List . add ( Movie Genre ( Ġ 2 , Ġ 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġmovie Genre Dao . insert Movies Gen res ( movies Gen res List ). subscribe () ĊĊĠĠĠĠĠĠĠ Ġval Ġgen res Names List Ġ= Ġmovie Genre Dao . getAll Movies By Genre Id ( 3 ) ĊĠĠĠĠĠĠĠ Ġgen res Names List . observe Fore ver { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertTrue ( it . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }