package Ġcom . unic orp dev . kt at r act . database Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Picture Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . unic orp dev . kt at r act . models . Tr act Ċ import Ġcom . unic orp dev . kt at r act . models . Tr act Collection Ċ import Ġcom . unic orp dev . kt at r act . models . Tr act Picture Ċ import Ġcom . unic orp dev . kt at r act . utils . Database Mock Ċ import Ġcom . unic orp dev . kt at r act . utils . new Tr act Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠPicture Dao Test Ġ{ ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠProperties ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtr act Dao : ĠTr act Dao ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpicture Dao : ĠPicture Dao ĊĠĠĠ Ġprivate Ġvar Ġdb Ġ= ĠDatabase Mock () ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠInitialization ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġcreate Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . create () ĊĠĠĠĠĠĠĠ Ġtr act Dao Ġ= Ġdb . tract Dao ĊĠĠĠĠĠĠĠ Ġpicture Dao Ġ= Ġdb . picture Dao ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġclose Db () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠP ictures Ġ- ĠAdd ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Picture () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr act Ġ= Ġnew Tr act () ĊĠĠĠĠĠĠĠ Ġval Ġpicture Ġ= ĠTr act Picture ( tract Id Ġ= Ġtr act . id ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . add Picture ( picture ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). first (). id ). isEqualTo ( picture . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add Picture With Conflict () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr act Ġ= Ġnew Tr act () ĊĠĠĠĠĠĠĠ Ġval Ġpicture Ġ= ĠTr act Picture ( tract Id Ġ= Ġtr act . id , Ġphoto Filename Ġ= Ġ" first ") ĊĠĠĠĠĠĠĠ Ġval Ġpicture 2 Ġ= ĠTr act Picture ( id Ġ= Ġpicture . id , Ġtr act Id Ġ= Ġtr act . id , Ġphoto Filename Ġ= Ġ" second ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . add Picture ( picture ) ĊĠĠĠĠĠĠĠ Ġpicture Dao . add Picture ( picture 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= Ġpicture Dao . getP ictures () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Picture Ġ= Ġpictures . first () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( pictures . size ). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ Ġ// ĠNew Ġpicture Ġshould Ġreplace Ġthe Ġold Ġone ĊĠĠĠĠĠĠĠ ĠassertThat ( first Picture . id ). isEqualTo ( picture . id ) ĊĠĠĠĠĠĠĠ ĠassertThat ( first Picture . photo Filename ). isEqualTo ( picture 2 . photo Filename ) ĊĠĠĠĠĠĠĠ ĠassertThat ( first Picture . photo Filename ). isNot EqualTo ( picture . photo Filename ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠP ictures Ġ- ĠDelete ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Delete Picture () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr act Ġ= Ġnew Tr act () ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= ĠlistOf ( Tr act Picture ( tract Id Ġ= Ġtr act . id ), ĠTr act Picture ( tract Id Ġ= Ġtr act . id )) ĊĊĠĠĠĠĠĠĠ Ġpicture Dao . add P ictures ( pictures ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( pictures . size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . delete Picture ( pictures [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( pictures . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). first (). id ). isEqualTo ( pictures [ 1 ]. id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠP ictures Ġ- ĠWith ĠTr acts ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Picture For Tr act () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr acts Ġ= ĠlistOf ( new Tr act (), Ġnew Tr act ()) ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . add P ictures ( pictures ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( pictures . size ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Tr act ( tract s [ 0 ]. id ). size ). isEqualTo ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Tr act ( tract s [ 1 ]. id ). size ). isEqualTo ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Tr act ( UUID . randomUUID ()). size ). isEqualTo ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Delete Picture For Tr act () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr acts Ġ= ĠlistOf ( new Tr act (), Ġnew Tr act ()) ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpicture Dao . add P ictures ( pictures ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . delete P ictures For Tr act ( tract s [ 1 ]. id ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( pictures . size Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Tr act ( tract s [ 0 ]. id ). size ). isEqualTo ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Tr act ( tract s [ 1 ]. id ). size ). isEqualTo ( 0 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠP ictures Ġ- ĠWith ĠCollection ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet P ictures For Collection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTr act Collection () ĊĠĠĠĠĠĠĠ Ġval Ġtr acts Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Tr act (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act ( collection Id Ġ= Ġcollection . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act ( collection Id Ġ= Ġcollection . id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 2 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 2 ]. id ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġtr act Dao . add Tr acts ( tract s ) ĊĠĠĠĠĠĠĠ Ġpicture Dao . add P ictures ( pictures ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( pictures . size ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Collection ( collection . id ). size ). isEqualTo ( 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Delete P ictures For Collection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTr act Collection () ĊĠĠĠĠĠĠĠ Ġval Ġtr acts Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Tr act (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act ( collection Id Ġ= Ġcollection . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act ( collection Id Ġ= Ġcollection . id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġpictures Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 2 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 0 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 1 ]. id ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTr act Picture ( tract Id Ġ= Ġtr acts [ 2 ]. id ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtr act Dao . add Tr acts ( tract s ) ĊĠĠĠĠĠĠĠ Ġpicture Dao . add P ictures ( pictures ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġpicture Dao . delete Picture For Collection ( collection . id ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures For Collection ( collection . id ). size ). isEqualTo ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( picture Dao . getP ictures (). size ). isEqualTo ( 3 ) ĊĠĠĠ Ġ} Ċ }