package Ġorg . kt orm . global Ċ Ċ import Ġorg . junit . Test Ċ import Ġorg . kt orm . dsl .* Ċ import Ġorg . kt orm . entity . aggregate Columns Ċ import Ġorg . kt orm . entity . grouping By Ċ import Ġorg . kt orm . entity . tuple Of Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġv ince Ġat ĠApr Ġ 0 5 , Ġ 2 0 2 0 . Ċ Ġ*/ Ċ @ Suppress (" DE PREC ATION ") Ċ class ĠGlobal Aggregation Test Ġ: ĠBase Global Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠEmploy ees . count Ġ{ Ġit . department Id Ġeq Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( count Ġ== Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Count All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠEmploy ees . count () ĊĠĠĠĠĠĠĠ Ġassert ( count Ġ== Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sum () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsum Ġ= ĠEmploy ees . sum By Ġ{ Ġit . salary Ġ+ Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( sum Ġ== Ġ 4 5 4 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Max () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= ĠEmploy ees . max By Ġ{ Ġit . salary Ġ- Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( max Ġ== Ġ 1 9 9 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Min () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= ĠEmploy ees . min By Ġ{ Ġit . salary Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( min Ġ== Ġ 5 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Avg () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġavg Ġ= ĠEmploy ees . average By Ġ{ Ġit . salary Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( avg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest None () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( Employees . none Ġ{ Ġit . salary Ġgt Ġ 2 0 0 L Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Any () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert (! Employees . any Ġ{ Ġit . salary Ġgt Ġ 2 0 0 L Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest All () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( Employees . all Ġ{ Ġit . salary Ġgt Ġ 0 L Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aggregate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠEmploy ees . as Sequence (). aggregate Columns Ġ{ Ġmax ( it . salary ) Ġ- Ġmin ( it . salary ) Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠ Ġassert ( result Ġ== Ġ 1 5 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Aggregate 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( max , Ġmin ) Ġ= ĠEmploy ees . as Sequence (). aggregate Columns Ġ{ Ġtuple Of ( max ( it . salary ), Ġmin ( it . salary )) Ġ} ĊĠĠĠĠĠĠĠ Ġassert ( max Ġ== Ġ 2 0 0 L ) ĊĠĠĠĠĠĠĠ Ġassert ( min Ġ== Ġ 5 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Group Aggregate 3 () Ġ{ ĊĠĠĠĠĠĠĠ ĠEmploy ees ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. grouping By Ġ{ Ġit . department Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. aggregate Columns Ġ{ Ġtuple Of ( max ( it . salary ), Ġmin ( it . salary )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġdepartment Id , Ġ( max , Ġmin ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ department Id :$ max :$ min ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }