package Ġfr . free . n rw . commons . cont ributions Ċ Ċ import Ġandroid . content . Content Provider Client Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . database . Matrix Cursor Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Remote Exception Ċ import Ġcom . n ha ar man . mockito _ kotlin .* Ċ import Ġfr . free . n rw . commons . Build Config Ċ import Ġfr . free . n rw . commons . Test Common s Application Ċ import Ġfr . free . n rw . commons . Utils Ċ import Ġfr . free . n rw . commons . cont ributions . Contribution .* Ċ import Ġfr . free . n rw . commons . cont ributions . Contribution Dao . Table Ċ import Ġfr . free . n rw . commons . cont ributions . Cont ributions Content Provider . BASE _ URI Ċ import Ġfr . free . n rw . commons . cont ributions . Cont ributions Content Provider . uri For Id Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġjava . util .* Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ @ Config ( constants Ġ= ĠBuild Config :: class , Ġsdk Ġ= Ġ[ 2 1 ], Ġapplication Ġ= ĠTest Common s Application :: class ) Ċ class ĠCont ribution Dao Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlocal Uri Ġ= Ġ" http :// example . com /" ĊĠĠĠ Ġprivate Ġval Ġclient : ĠContent Provider Client Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġdatabase : ĠSQLite Database Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġcapt or Ġ= Ġargument Captor < Content Values >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontent Uri : ĠUri ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Object : ĠCont ribution Dao ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Uri Ġ= Ġuri For Id ( 1 1 1 ) ĊĠĠĠĠĠĠĠ Ġtest Object Ġ= ĠCont ribution Dao Ġ{ Ġclient Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate Table () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . onCreate ( database ) ĊĠĠĠĠĠĠĠ Ġverify ( database ). exec SQL ( Table . CREATE _ TABLE _ STATE MENT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete Table () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . onDelete ( database ) ĊĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( database ). exec SQL ( Table . DROP _ TABLE _ STATE MENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( database ). exec SQL ( Table . CREATE _ TABLE _ STATE MENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Database _ v 1 _ to _ v 2 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 1 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ DESCRIPTION _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ CRE ATOR _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Database _ v 2 _ to _ v 3 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 2 , Ġ 3 ) ĊĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ MULTIPLE _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . SET _ DEFAULT _ MULTIPLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Database _ v 3 _ to _ v 4 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 3 , Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Database _ v 4 _ to _ v 5 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 4 , Ġ 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġupgrade Database _ v 5 _ to _ v 6 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ WIDTH _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . SET _ DEFAULT _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ HEIGHT _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . SET _ DEFAULT _ HEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ LICENSE _ FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . SET _ DEFAULT _ LICENSE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate Table Version From _ v 6 _ to _ v 7 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 6 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġ// ĠTable Ġhas Ġchanged Ġin Ġversion Ġ 7 ĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ WI KI _ DATA _ ENTITY _ ID _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate Table Version From _ v 7 _ to _ v 8 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 7 , Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġ// ĠTable Ġhas Ġchanged Ġin Ġversion Ġ 8 ĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ WI KI _ DATA _ ENTITY _ ID _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate Table Version From _ v 8 _ to _ v 9 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 8 , Ġ 9 ) ĊĠĠĠĠĠĠĠ Ġ// ĠTable Ġchanged Ġin Ġversion Ġ 9 ĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ WI KI _ DATA _ ENTITY _ ID _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmigrate Table Version From _ v 9 _ to _ v 1 0 () Ġ{ ĊĠĠĠĠĠĠĠ ĠTable . on Update ( database , Ġ 8 , Ġ 9 ) ĊĠĠĠĠĠĠĠ Ġ// ĠTable Ġchanged Ġin Ġversion Ġ 9 ĊĠĠĠĠĠĠĠ Ġin Order ( database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify < SQLite Database >( database ). exec SQL ( Table . ADD _ WI KI _ DATA _ ENTITY _ ID _ FIELD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave New Contribution _ non Null Fields () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). thenReturn ( content Uri ) ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( true , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( content Uri , Ġcontribution . content Uri ) ĊĠĠĠĠĠĠĠ Ġverify ( client ). insert ( eq ( BASE _ URI ), Ġcapt or . capture ()) ĊĠĠĠĠĠĠĠ Ġcapt or . first Value . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLong Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 2 2 L , Ġit . getAs Long ( Table . COLUMN _ LENGTH )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 2 1 L , Ġit . getAs Long ( Table . COLUMN _ TIMESTAMP )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 3 3 L , Ġit . getAs Long ( Table . COLUMN _ TRANSFER RED )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInteger Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( STATE _ COMPLETED , Ġit . getAs Integer ( Table . COLUMN _ STATE )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 4 0 , Ġit . getAs Integer ( Table . COLUMN _ WIDTH )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 8 0 , Ġit . getAs Integer ( Table . COLUMN _ HEIGHT )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠString Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( SOURCE _ CAMERA , Ġit . get AsString ( Table . COLUMN _ SOURCE )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" desc ", Ġit . get AsString ( Table . COLUMN _ DESCRIPTION )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create ", Ġit . get AsString ( Table . COLUMN _ CRE ATOR )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 7 ", Ġit . get AsString ( Table . COLUMN _ LICENSE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave New Contribution _ nullable Fields Are Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). thenReturn ( content Uri ) ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( true , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( content Uri , Ġcontribution . content Uri ) ĊĠĠĠĠĠĠĠ Ġverify ( client ). insert ( eq ( BASE _ URI ), Ġcapt or . capture ()) ĊĠĠĠĠĠĠĠ Ġcapt or . first Value . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNullable Ġfields Ġare Ġabsent Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . containsKey ( Table . COLUMN _ LOCAL _ URI )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . containsKey ( Table . COLUMN _ IMAGE _ URL )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( it . containsKey ( Table . COLUMN _ UP LOADED )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave New Contribution _ nullable Fields Are NonNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). thenReturn ( content Uri ) ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( true , ĠUri . parse ( local Uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" image ", ĠDate ( 4 5 6 L ), Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( content Uri , Ġcontribution . content Uri ) ĊĠĠĠĠĠĠĠ Ġverify ( client ). insert ( eq ( BASE _ URI ), Ġcapt or . capture ()) ĊĠĠĠĠĠĠĠ Ġcapt or . first Value . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( local Uri , Ġit . get AsString ( Table . COLUMN _ LOCAL _ URI )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" image ", Ġit . get AsString ( Table . COLUMN _ IMAGE _ URL )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 5 6 L , Ġit . getAs Long ( Table . COLUMN _ UP LOADED )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave New Contribution _ boolean En codes True () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). thenReturn ( content Uri ) ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( true , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( content Uri , Ġcontribution . content Uri ) ĊĠĠĠĠĠĠĠ Ġverify ( client ). insert ( eq ( BASE _ URI ), Ġcapt or . capture ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBoolean Ġtrue Ġ--> Ġ 1 Ġfor Ġth s Ġencoding Ġscheme ĊĠĠĠĠĠĠĠ ĠassertEquals (" Boolean Ġtrue Ġshould Ġbe Ġencoded Ġas Ġ 1 ", Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt or . first Value . getAs Integer ( Table . COLUMN _ MULTIPLE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave New Contribution _ boolean En codes False () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). thenReturn ( content Uri ) ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( content Uri , Ġcontribution . content Uri ) ĊĠĠĠĠĠĠĠ Ġverify ( client ). insert ( eq ( BASE _ URI ), Ġcapt or . capture ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBoolean Ġtrue Ġ--> Ġ 1 Ġfor Ġth s Ġencoding Ġscheme ĊĠĠĠĠĠĠĠ ĠassertEquals (" Boolean Ġfalse Ġshould Ġbe Ġencoded Ġas Ġ 0 ", Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapt or . first Value . getAs Integer ( Table . COLUMN _ MULTIPLE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsave Existing Contribution () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġcontribution . content Uri Ġ= Ġcontent Uri ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( contribution ) ĊĊĠĠĠĠĠĠĠ Ġverify ( client ). update ( eq ( content Uri ), Ġis A (), Ġis Null (), Ġis Null ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠRuntimeException :: class ) ĊĠĠĠ Ġfun Ġsave Trans lates Exceptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . insert ( is A (), Ġis A ())). then Throw ( Remote Exception ("")) ĊĊĠĠĠĠĠĠĠ Ġtest Object . save ( create Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠRuntimeException :: class ) ĊĠĠĠ Ġfun Ġdelete Trans lates Exceptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( client . delete ( any OrNull (), Ġany OrNull (), Ġany OrNull ())). then Throw ( Remote Exception ("")) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġcontribution . content Uri Ġ= Ġcontent Uri ĊĠĠĠĠĠĠĠ Ġtest Object . delete ( contribution ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠRuntimeException :: class ) ĊĠĠĠ Ġfun Ġexception Thrown When At tempting ToDelete Un saved Contribution () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Object . delete ( create Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdelete Existing Contribution () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= Ġcreate Contribution ( false , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġcontribution . content Uri Ġ= Ġcontent Uri ĊĊĠĠĠĠĠĠĠ Ġtest Object . delete ( contribution ) ĊĊĠĠĠĠĠĠĠ Ġverify ( client ). delete ( eq ( content Uri ), Ġis Null (), Ġis Null ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate From Cursor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcreated Ġ= Ġ 3 2 1 L ĊĠĠĠĠĠĠĠ Ġval Ġuploaded Ġ= Ġ 4 5 6 L ĊĠĠĠĠĠĠĠ Ġcreate Cursor ( created , Ġuploaded , Ġfalse , Ġlocal Uri ). let Ġ{ Ġmc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Object . from Cursor ( mc ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( uri For Id ( 1 1 1 ), Ġit . content Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" filePath ", Ġit . filename ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( local Uri , Ġit . local Uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" image ", Ġit . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( created , Ġit . date Created . time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( STATE _ QUE U ED , Ġit . state ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 2 2 L , Ġit . data Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( uploaded , Ġit . date Uploaded ?. time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 8 8 L , Ġit . transfer red ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( SOURCE _ G ALL ERY , Ġit . source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" desc ", Ġit . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" create ", Ġit . creator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 6 4 0 , Ġit . width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 4 8 0 , Ġit . height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" 0 0 7 ", Ġit . license ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate From Cursor _ nullable Timestamp s () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Cursor ( 0 L , Ġ 0 L , Ġfalse , Ġlocal Uri ). let Ġ{ Ġmc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Object . from Cursor ( mc ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . date Created ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . date Uploaded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate From Cursor _ nullable Local Uri () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Cursor ( 0 L , Ġ 0 L , Ġfalse , Ġ""). let Ġ{ Ġmc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Object . from Cursor ( mc ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . local Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . date Created ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . date Uploaded ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcreate From Cursor _ boolean Encoding () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmc False Ġ= Ġcreate Cursor ( 0 L , Ġ 0 L , Ġfalse , Ġlocal Uri ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( test Object . from Cursor ( mc False ). multiple ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmc H ammer Ġ= Ġcreate Cursor ( 0 L , Ġ 0 L , Ġtrue , Ġlocal Uri ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( test Object . from Cursor ( mc H ammer ). multiple ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Cursor ( created : ĠLong , Ġuploaded : ĠLong , Ġmultiple : ĠBoolean , Ġlocal Uri : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMatrix Cursor ( Table . ALL _ FIELDS , Ġ 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Row ( listOf (" 1 1 1 ", Ġ" filePath ", Ġlocal Uri , Ġ" image ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreated , ĠSTATE _ QUE U ED , Ġ 2 2 2 L , Ġuploaded , Ġ 8 8 L , ĠSOURCE _ G ALL ERY , Ġ" desc ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create ", Ġif Ġ( multiple ) Ġ 1 Ġelse Ġ 0 , Ġ 6 4 0 , Ġ 4 8 0 , Ġ" 0 0 7 ", Ġ" Q 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To First () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Contribution ( is Multiple : ĠBoolean , Ġlocal Uri : ĠUri ?, ĠimageUrl : ĠString ?, Ġdate Uploaded : ĠDate ?, Ġfilename : ĠString ?): ĠCont ribution Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontribution Ġ= ĠCont ribution ( local Uri , ĠimageUrl , Ġfilename , Ġ" desc ", Ġ 2 2 2 L , ĠDate ( 3 2 1 L ), Ġdate Uploaded , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create ", Ġ" edit ", Ġ" coords "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠSTATE _ COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransferred Ġ= Ġ 3 3 3 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSOURCE _ CAMERA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Ġ= Ġ" 0 0 7 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmultiple Ġ= Ġis Multiple ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 6 4 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 4 8 0 Ġ Ġ// ĠV GA Ġshould Ġbe Ġenough Ġfor Ġanyone , Ġright ? ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontribution . wiki Data EntityId Ġ= Ġ" Q 1 " ĊĠĠĠĠĠĠĠ Ġreturn Ġcontribution ĊĠĠĠ Ġ} Ċ } Ċ