package Ġcom . wn c _ 2 1 . k and roi dex t ensions . db Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . database . sqlite . SQLite Open Helper Ċ import Ġandroid . support . test . Instrumentation Registry Ċ import Ġandroid . support . test . runner . Android JUnit 4 Ċ import Ġcom . wn c _ 2 1 . k and roi dex t ensions . test utils . create Database Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠTest Opt Query Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhelper : ĠSQLite Open Helper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġrun BeforeEach Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠInstrument ation Registry . getTarget Context () ĊĠĠĠĠĠĠĠ Ġhelper Ġ= Ġcontext . create Database () ĊĊĠĠĠĠĠĠĠ Ġadd Users Table ( helper . writable Database ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġrun After Each Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . close () ĊĠĠĠĠĠĠĠ Ġcontext . delete Database (" test . db ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select All () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select Columns () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġcolumns Ġ= ĠarrayOf (" name ")). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . column Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select With Args () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġselection Ġ= Ġ" name = ?", Ġselection Args Ġ= ĠarrayOf (" user Ġ 1 ")). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . count ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . moveTo First () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" user Ġ 1 ", Ġit . getString (" name ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest OrderBy () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", ĠorderBy Ġ= Ġ"_ id ĠDESC "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . count ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . moveTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" 3 ", Ġit . getString ( 0 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . moveTo Last () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" 1 ", Ġit . getString ( 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Distinct () Ġ{ ĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġcolumns Ġ= ĠarrayOf (" same "), Ġdistinct Ġ= Ġtrue Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġcolumns Ġ= ĠarrayOf (" same "), Ġdistinct Ġ= Ġfalse Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġcolumns Ġ= ĠarrayOf (" same ")). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest GroupBy () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġgroup By Ġ= Ġ" same "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Having () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġhelper . readable Database . opt Query (" Users ", Ġgroup By Ġ= Ġ" same ", Ġhaving Ġ= Ġ" count ( name ) Ġ= Ġ 1 "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġit . count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Users Table ( db : ĠSQLite Database ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . beginTransaction () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . exec SQL (" CREATE ĠTABLE ĠUsers (_ id ĠINTEGER ĠPRIMARY ĠKEY , Ġname ĠTEXT ĠNOT ĠNULL , Ġsame ĠTEXT ĠNOT ĠNULL )") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . insert (" Users ", Ġnull , ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ("_ id ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" name ", Ġ" user Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" same ", Ġ" same ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . insert (" Users ", Ġnull , ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ("_ id ", Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" name ", Ġ" user Ġ 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" same ", Ġ" same ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . insert (" Users ", Ġnull , ĠContent Values (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ("_ id ", Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" name ", Ġ" user Ġ 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" same ", Ġ" same ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . set Transaction Successful () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . end Transaction () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }