package Ġcom . mu h ron . kotlin q Ċ Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ class ĠGroup By Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest A () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsequence Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 ). groupBy Ġ{ Ġit Ġ}. toList () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . size , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 0 ). key , Ġ 1 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 0 ). as Sequence (). toList (), ĠlistOf ( 1 , Ġ 1 , Ġ 1 )); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 1 ). key , Ġ 2 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 1 ). as Sequence (). toList (), ĠlistOf ( 2 , Ġ 2 )); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 2 ). key , Ġ 3 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 2 ). as Sequence (). toList (), ĠlistOf ( 3 , Ġ 3 )); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 3 ). key , Ġ 4 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 3 ). as Sequence (). toList (), ĠlistOf ( 4 )); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 4 ). key , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 4 ). as Sequence (). toList (), ĠlistOf ( 5 )); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest B () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsequence Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġelement Selector Ġ= Ġ{ Ġit . toString () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . size , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 0 ). key , Ġ 1 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 0 ). as Sequence (). toList (), ĠlistOf (" 1 ", Ġ" 1 ", Ġ" 1 ")); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 1 ). key , Ġ 2 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 1 ). as Sequence (). toList (), ĠlistOf (" 2 ", Ġ" 2 ")); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 2 ). key , Ġ 3 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 2 ). as Sequence (). toList (), ĠlistOf (" 3 ", Ġ" 3 ")); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 3 ). key , Ġ 4 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 3 ). as Sequence (). toList (), ĠlistOf (" 4 ")); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 4 ). key , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . elementAt ( 4 ). as Sequence (). toList (), ĠlistOf (" 5 ")); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest C () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsequence Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġresult Selector Ġ= Ġ{ Ġkey , Ġsequences Ġ-> Ġsequences . sum () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . size , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , ĠlistOf ( 3 , Ġ 4 , Ġ 6 , Ġ 4 , Ġ 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest D () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsequence Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġelement Selector Ġ= Ġ{ Ġit . toString () Ġ}, Ġresult Selector Ġ= Ġ{ Ġkey , Ġsequences Ġ-> Ġsequences . join ToString () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result . size , Ġ 5 ); ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( result , ĠlistOf (" 1 , Ġ 1 , Ġ 1 ", Ġ" 2 , Ġ 2 ", Ġ" 3 , Ġ 3 ", Ġ" 4 ", Ġ" 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Thrown Exception 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġexception Sequence < Int >(). groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠ Ġexception Sequence < Int >(). groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġresult Selector Ġ= Ġ{ Ġkey , Ġsequences Ġ-> Ġkey Ġ}) ĊĠĠĠĠĠĠĠ Ġexception Sequence < Int >(). groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġelement Selector Ġ= Ġ{ Ġit Ġ}) ĊĠĠĠĠĠĠĠ Ġexception Sequence < Int >(). groupBy ( key Selector Ġ= Ġ{ Ġit Ġ}, Ġelement Selector Ġ= Ġ{ Ġit Ġ}, Ġresult Selector Ġ= Ġ{ Ġkey , Ġsequences Ġ-> Ġkey Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ