package Ġcom . k ame o code . any dao . test Ċ Ċ import Ġcom . k ame o code . any dao . test . helpers . Base Test Ċ import Ġcom . k ame o code . any dao . test . helpers . Task O DB Ċ import Ġcom . k ame o code . any dao . test . helpers . User O DB Ċ import Ġcom . k ame o code . any dao . wrap s . Join Wrap Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġjavax . persistence . criteria . Join Type ĊĊ Ċ class ĠSingle Select Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġplain Ġselect Ġwith Ġnullable `() Ġ{ ĊĠĠĠĠĠĠĠ Ġany Dao . persist ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser O DB ( email Ġ= Ġ" email 1 ", Ġtask Ġ= ĠTask O DB ( name Ġ= Ġ" t 1 "), Ġtask Nullable Ġ= ĠTask O DB ( name Ġ= Ġ" t 1 n ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser O DB ( email Ġ= Ġ" email 2 ", Ġtask Ġ= ĠTask O DB ( name Ġ= Ġ" t 1 ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser O DB ( email Ġ= Ġ" email 3 ", Ġtask Ġ= ĠTask O DB ( name Ġ= Ġ" t 2 "))) ĊĊĠĠĠĠĠĠĠ Ġval Ġres 1 : ĠList < Task O DB > Ġ= Ġany Dao . all ( User O DB :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( User O DB :: task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 , Ġres 1 . size ) ĊĊĊĊĠĠĠĠĠĠĠ Ġval Ġres 2 : ĠList < Task O DB ?> Ġ= Ġany Dao . all ( User O DB :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask : ĠJoin Wrap < Task O DB ?, ĠUser O DB > Ġ= Ġit . join ( User O DB :: task Nullable , ĠJoin Type . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . select Nullable ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 , Ġres 2 . size ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( res 2 [ 0 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 2 [ 1 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 2 [ 2 ]) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġres 3 : ĠList < Task O DB ?> Ġ= Ġany Dao . all ( User O DB :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask : ĠJoin Wrap < Task O DB ?, ĠUser O DB > Ġ= Ġit . join ( User O DB :: task Nullable , ĠJoin Type . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 , Ġres 3 . size ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( res 3 [ 0 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 2 [ 1 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 3 [ 2 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġres 4 : ĠList < Task O DB > Ġ= Ġany Dao . all ( User O DB :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask : ĠJoin Wrap < Task O DB , ĠUser O DB > Ġ= Ġit . join ( User O DB :: task Nullable , ĠJoin Type . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 3 , Ġres 4 . size ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( res 4 [ 0 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 4 [ 1 ]) ĊĠĠĠĠĠĠĠ ĠAssert . assertNull ( res 4 [ 2 ]) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ