package Ġme . li u wj . kt orm . dsl Ċ Ċ import Ġme . li u wj . kt orm . Base Test Ċ import Ġme . li u wj . kt orm . expression . Scalar Expression Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġv ince Ġon ĠDec Ġ 0 7 , Ġ 2 0 1 8 . Ċ Ġ*/ Ċ class ĠQuery Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase . from ( Depart ments ). select () ĊĠĠĠĠĠĠĠ Ġassert ( query . row Set . size () Ġ== Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġquery ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( row [ Depart ments . name ] Ġ+ Ġ": Ġ" Ġ+ Ġrow [ Depart ments . location ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Select Distinct () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Distinct ( Employees . department Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getInt ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted Descending () ĊĊĠĠĠĠĠĠĠ Ġassert ( ids . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( ids [ 0 ] Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( ids [ 1 ] Ġ== Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Where () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Employees . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠEmploy ees . manager Id . isNull () Ġand Ġ( Employees . department Id Ġeq Ġ 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getString ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĊĠĠĠĠĠĠĠ Ġassert ( name Ġ== Ġ" vince ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Where With Conditions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠEmploy ees . ali ased (" t ") ĊĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( t . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where With Conditions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġt . manager Id . isNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġt . department Id Ġeq Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getString ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĊĠĠĠĠĠĠĠ Ġassert ( name Ġ== Ġ" vince ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Combine Conditions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠEmploy ees . ali ased (" t ") ĊĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( t . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġempty List < Scalar Expression < Boolean >> (). combine Conditions () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( t . id . asc ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getString ( 1 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( names . size Ġ== Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġassert ( names [ 0 ] Ġ== Ġ" vince ") ĊĠĠĠĠĠĠĠ Ġassert ( names [ 1 ] Ġ== Ġ" m arry ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest OrderBy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Employees . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠEmploy ees . department Id Ġeq Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Employees . salary . desc ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getString ( 1 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( names . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( names [ 0 ] Ġ== Ġ" vince ") ĊĠĠĠĠĠĠĠ Ġassert ( names [ 1 ] Ġ== Ġ" m arry ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aggregation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠEmploy ees ĊĊĠĠĠĠĠĠĠ Ġval Ġsal aries Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( t . department Id , Ġsum ( t . salary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( t . department Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġit . getInt ( 1 ) Ġto Ġit . getLong ( 2 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( sal aries . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries [ 1 ] !! Ġ== Ġ 1 5 0 L ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries [ 2 ] !! Ġ== Ġ 3 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Having () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠEmploy ees ĊĊĠĠĠĠĠĠĠ Ġval Ġsal aries Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( t . department Id , Ġavg ( t . salary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( t . department Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. having Ġ{ Ġavg ( t . salary ) Ġgreater Ġ 1 0 0 . 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġit . getInt ( 1 ) Ġto Ġit . getDouble ( 2 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ( sal aries ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . keys . first () Ġ== Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Column Alias () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdept Id Ġ= ĠEmploy ees . department Id . ali ased (" dept _ id ") ĊĠĠĠĠĠĠĠ Ġval Ġsalary Avg Ġ= Ġavg ( Employees . salary ). ali ased (" salary _ avg ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsal aries Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( dept Id , Ġsalary Avg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( dept Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. having Ġ{ Ġsalary Avg Ġgreater Ġ 1 0 0 . 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow [ dept Id ] Ġto Ġrow [ salary Avg ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ( sal aries ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . keys . first () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . values . first () Ġ== Ġ 1 5 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Column Alias 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsalary Ġ= Ġ( Employees . salary Ġ+ Ġ 1 0 0 ). ali ased ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsal aries Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( salary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġsalary Ġgreater Ġ 2 0 0 L Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getLong ( 1 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ( sal aries ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġassert ( sal aries . first () Ġ== Ġ 3 0 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Limit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase . from ( Employees ). select (). orderBy ( Employees . id . desc ()). limit ( 0 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( query . total Records Ġ== Ġ 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġquery . map Ġ{ Ġit [ Employees . id ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( ids [ 0 ] Ġ== Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( ids [ 1 ] Ġ== Ġ 3 ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupportedOperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠExpected , Ġpagination Ġshould Ġbe Ġprovided Ġby Ġdialect s ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Between () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Employees . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠEmploy ees . salary Ġbetween Ġ 1 0 0 L .. 2 0 0 L Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . getString ( 1 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( names . size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġprintln ( names ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest In List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠEmploy ees . id . in List ( 1 , Ġ 2 , Ġ 3 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( query . count () Ġ== Ġ 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest In Nested Query () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdepartment Ids Ġ= Ġdatabase . from ( Depart ments ). select Distinct ( Depart ments . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠEmploy ees . department Id Ġin List Ġdepartment Ids Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( query . count () Ġ== Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġprintln ( query . sql ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Exists () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmploy ees . id . isNotNull () Ġand Ġexists ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Depart ments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ ĠDep art ments . id Ġeq ĠEmploy ees . department Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert ( query . count () Ġ== Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġprintln ( query . sql ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Union () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( Employees ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ( Employees . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. union All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . from ( Depart ments ). select ( Depart ments . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. union All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . from ( Depart ments ). select ( Depart ments . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Employees . id . desc ()) ĊĊĠĠĠĠĠĠĠ Ġassert ( query . count () Ġ== Ġ 8 ) ĊĊĠĠĠĠĠĠĠ Ġprintln ( query . sql ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Mod () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase . from ( Employees ). select (). where Ġ{ ĠEmploy ees . id Ġ% Ġ 2 Ġeq Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( query . count () Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġprintln ( query . sql ) ĊĠĠĠ Ġ} Ċ }