package Ġcom . w atched . data . local . movie . dao Ċ Ċ import Ġcom . w atched . data . common . source . Local DataSource Ċ import Ġcom . w atched . data . local . common . Dao Test Ċ import Ġcom . w atched . data . local . factory . Movie Entity Factory Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ class ĠMovie Dao Test Ġ: ĠDao Test () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdao : ĠMovie Dao Ġ= Ġdatabase . get Movie Dao () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen _ get Paged Movies _ then _ returns _ correct _ page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠMovie Entity Factory . make List ( 3 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Page Ġ= Ġlist . sub List ( 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Page Ġ= Ġlist . sub List ( 1 0 , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġthird Page Ġ= Ġlist . sub List ( 2 0 , Ġ 3 0 ) ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġdao . save Movies ( list ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlocal Data Ġ= ĠTest Local DataSource () ĊĠĠĠĠĠĠĠ Ġval ĠpageSize Ġ= Ġ 1 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Page Offset Ġ= Ġlocal Data . get Offset ( pageSize , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . get Paged Movies ( pageSize , Ġfirst Page Offset ). contains All ( first Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Page Offset Ġ= Ġlocal Data . get Offset ( pageSize , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . get Paged Movies ( pageSize , Ġsecond Page Offset ). contains All ( second Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġthird Page Offset Ġ= Ġlocal Data . get Offset ( pageSize , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . get Paged Movies ( pageSize , Ġthird Page Offset ). contains All ( third Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen _ get Movie _ then _ returns _ correct _ movie () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠMovie Entity Factory . make () ĊĠĠĠĠĠĠĠ Ġval Ġmovie Id Ġ= Ġmovie . id ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġdao . save Movies ( listOf ( movie )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( dao . get Movie ( movie Id ), Ġmovie ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen _ clear Movies _ then _ clear s _ movie _ table (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġdao . save Movies ( Movie Entity Factory . make List ( 2 0 )) ĊĊĠĠĠĠĠĠĠ Ġdao . clear Movies () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( dao . get Movies (). isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen _ save Movies _ then _ save _ it _ to _ db (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠMovie Entity Factory . make () ĊĠĠĠĠĠĠĠ Ġdao . save Movies ( listOf ( movie )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmovies Ġ= Ġdao . get Movies () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmovies . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( movie , Ġmovies [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen _ save Movies _ and _ has Conflict _ then _ replace (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmovie Ġ= ĠMovie Entity Factory . make () ĊĠĠĠĠĠĠĠ Ġdao . save Movies ( listOf ( movie )) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Title Ġ= Ġ" new Title " ĊĠĠĠĠĠĠĠ Ġval Ġupdated Movie Ġ= Ġmovie . copy ( title Ġ= Ġnew Title ) ĊĊĠĠĠĠĠĠĠ Ġdao . save Movies ( listOf ( updated Movie )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmovies Ġ= Ġdao . get Movies () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġmovies . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( updated Movie , Ġmovies [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTest Local DataSource Ġ: ĠLocal DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdata Config Id : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġset Last Cache Time ( last Cache Time : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġis Cache Expired ( currentTime : ĠLong ): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġis Data Cached (): ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ