/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠMO LO 1 7 Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mo lo 1 7 . couch base . lite Ċ Ċ import Ġcom . couch base . lite . C ouch base Lite Ċ import Ġcom . couch base . lite . DataSource Ċ import Ġcom . couch base . lite . Database Ċ import Ġcom . couch base . lite . Database Configuration Ċ import Ġcom . couch base . lite . Expression Ċ import Ġcom . couch base . lite . Ordering Ċ import Ġcom . couch base . lite . QueryBuilder Ċ import Ġcom . couch base . lite . Select Result Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . util . Date Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠD am iano ĠG i ust i Ġon Ġ 2 6 / 0 3 / 2 0 2 0 . Ċ Ġ*/ Ċ class ĠQuery Builder Extensions Kt Test Ġ{ ĊĊĠĠĠ Ġ@ Jvm Field Ġ@ Rule Ġval Ġtemp Dir Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Ġby Ġlazy Ġ{ Ġcreate Database () Ġ} ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠCouch base Lite . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠProjection ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠQuery Builder . select ( Select Result . all ()). from ( DataSource . database ( database )) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġsome Ġfields `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠQuery Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelect Result . property (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelect Result . property (" age ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database )) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect (" name ", Ġ" age ") Ġfrom Ġdatabase ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠSelection ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġnot EqualTo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: not EqualTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" type " Ġnot EqualTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġless Than `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . intValue ( 4 0 ), ĠExpression :: less Than ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " Ġless Than Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġless Than OrEqualTo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . intValue ( 4 0 ), ĠExpression :: less Than OrEqualTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " Ġless Than OrEqualTo Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġgreater Than `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . intValue ( 4 0 ), ĠExpression :: greater Than ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " Ġgreater Than Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġgreater Than OrEqualTo `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . intValue ( 4 0 ), ĠExpression :: greater Than OrEqualTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " Ġgreater Than OrEqualTo Ġ 4 0 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġlike `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" name ", ĠExpression . string (" dam "), ĠExpression :: like ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" name " Ġlike Ġ" dam " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġwith ĠAND Ġcondition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠQuery Builder . select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpression . property (" type "). equalTo ( Expression . string (" user ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( Expression . property (" name "). equalTo ( Expression . string (" dam iano "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġ(" type " ĠequalTo Ġ" user ") Ġand Ġ(" name " ĠequalTo Ġ" dam iano ") Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġwith Ġtwo ĠAND Ġcondition Ġjoined Ġwith ĠOR `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠQuery Builder . select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpression . property (" type "). equalTo ( Expression . string (" user ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( Expression . property (" name "). equalTo ( Expression . string (" dam iano "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. or ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpression . property (" type "). equalTo ( Expression . string (" pet ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( Expression . property (" name "). equalTo ( Expression . string (" kit ty "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ((" type " ĠequalTo Ġ" user ") Ġand Ġ(" name " ĠequalTo Ġ" dam iano ")) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ((" type " ĠequalTo Ġ" pet ") Ġand Ġ(" name " ĠequalTo Ġ" kit ty ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠSelection Ġdata Ġtypes ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo ĠString `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġint `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . intValue ( 2 4 ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " ĠequalTo Ġ 2 4 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġlong `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . longValue ( 2 4 ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " ĠequalTo Ġ 2 4 L Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġfloat `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . float Value ( 2 4 . 5 0 F ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " ĠequalTo Ġ 2 4 . 5 0 F Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġdouble `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" age ", ĠExpression . doubleValue ( 2 4 . 5 0 ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" age " ĠequalTo Ġ 2 4 . 5 0 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġboolean `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" is B orn ", ĠExpression . boolean Value ( true ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" is B orn " ĠequalTo Ġtrue Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >(" key " Ġto Ġ" value ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" properties ", ĠExpression . map ( map ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" properties " ĠequalTo Ġmap Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġlist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf (" key ", Ġ" value ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" channels ", ĠExpression . list ( list ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" channels " ĠequalTo Ġlist Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠequalTo Ġdate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" channels ", ĠExpression . date ( date ), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) Ġfrom Ġdatabase Ġwhere Ġ{ Ġ" channels " ĠequalTo Ġdate Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠOrdering ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠorderBy Ġascending `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Ordering . property (" name "). ascending ()) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy Ġ{ Ġ" name ". ascending () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠorderBy Ġdescending `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Ordering . property (" name "). desc ending ()) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy Ġ{ Ġ" name ". desc ending () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠLimit ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere Ġlimit `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( Expression . intValue ( 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()). from ( database ). where Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ}. limit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` select Ġall Ġwhere ĠorderBy Ġlimit `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsingle Selection Where (" type ", ĠExpression . string (" user "), ĠExpression :: equalTo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Ordering . property (" name "). ascending ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( Expression . intValue ( 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġselect ( all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( database ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġ" type " ĠequalTo Ġ" user " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy Ġ{ Ġ" name ". ascending () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . explain (), Ġactual . explain ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĠĠĠ Ġ// ĠPrivate Ġmethods ĊĠĠĠ Ġ// //////////////////////////////////////////////////////////////////////// / ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Database (): ĠDatabase Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" test - database . db " ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠDatabase Configuration (). set Directory ( temp Dir . root . absolute Path ) ĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase ( name , Ġconfig ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġsingle Selection Where ( field : ĠString , Ġvalue Expression : ĠExpression , Ġoperator : ĠExpression .( Expression ) Ġ-> ĠExpression ) Ġ= ĊĠĠĠĠĠĠĠ ĠQuery Builder . select ( Select Result . all ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( DataSource . database ( database )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( Expression . property ( field ). operator ( value Expression )) Ċ }