package Ġtest . collections Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . test .* Ċ import Ġorg . junit . Test Ġas Ġtest Ċ Ċ class ĠCollection Test Ġ{ ĊĊĠĠĠ Ġtest Ġfun Ġjoin To () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġdata . join To ( buffer , Ġ"-", Ġ"{ ", Ġ" }") ĊĠĠĠĠĠĠĠ ĠassertEquals ("{ foo - bar }", Ġbuffer . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġjoin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdata . join ("- ", Ġ"< ", Ġ"> ") ĊĠĠĠĠĠĠĠ ĠassertEquals ("< foo - bar >", Ġtext ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbig Ġ= Ġarray ListOf (" a ", Ġ" b ", Ġ" c ", Ġ" d ", Ġ" e ", Ġ" f ") ĊĠĠĠĠĠĠĠ Ġval Ġtext 2 Ġ= Ġbig . join ( limit Ġ= Ġ 3 , Ġtruncated Ġ= Ġ"* ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" a , Ġb , Ġc , Ġ* ", Ġtext 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfilter NotNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf ( null , Ġ" foo ", Ġnull , Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġdata . filter NotNull () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfoo . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar "), Ġfoo ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo Ġis ĠList < String > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmap NotNull () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf ( null , Ġ" foo ", Ġnull , Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġdata . map NotNull Ġ{ Ġit . length Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfoo . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf ( 3 , Ġ 3 ), Ġfoo ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo Ġis ĠList < Int > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfilter Into Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġdata . filter To ( hash Set Of < String >()) Ġ{ Ġit . startsWith (" f ") Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo . all Ġ{ Ġit . startsWith (" f ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfoo . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( hash Set Of (" foo "), Ġfoo ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfoo Ġis ĠHashSet < String > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlets Ġcalculate Ġthe Ġsum Ġof Ġsome Ġnumbers ĊĠĠĠĠĠĠĠ Ġexpect ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold ( 0 ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġexpect ( 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold ( 0 ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġlets Ġconcatenate Ġsome Ġstrings ĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . map Ġ{ Ġit . toString () Ġ}. fold ("") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold With Different Types () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf (" a ", Ġ" ab ", Ġ" abc ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold ( 1 ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb . size Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold ("") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold With Non Com mut ative Operation () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold ( 7 ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ- Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold Right () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . map Ġ{ Ġit . toString () Ġ}. fold Right ("") Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold Right With Different Types () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold Right ("") Ġ{ Ġa , Ġb Ġ-> Ġ"" Ġ+ Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfold Right With Non Com mut ative Operation () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect (- 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġarray ListOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . fold Right ( 7 ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ- Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġpartition () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ", Ġ" something ", Ġ" xyz ") ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġdata . partition Ġ{ Ġit . size Ġ== Ġ 3 Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" xyz "), Ġpair . first , Ġ" pair . first ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" something "), Ġpair . second , Ġ" pair . second ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġreduce () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfails With ( java Class < Unsupported OperationException >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf < Int >(). reduce Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġreduce Right () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect (" 1 2 3 4 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . reduce Right Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfails With ( java Class < Unsupported OperationException >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf < Int >(). reduce Right Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġgroup By () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwords Ġ= Ġarray ListOf (" a ", Ġ" ab ", Ġ" abc ", Ġ" def ", Ġ" abcd ") ĊĠĠĠĠĠĠĠ Ġval Ġby Length Ġ= Ġwords . groupBy Ġ{ Ġit . length Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġby Length . size ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġl 3 Ġ= Ġby Length . getOrElse ( 3 , Ġ{ ĠArrayList < String >() Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġl 3 . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġplus Ranges () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrange 1 Ġ= Ġ 1 .. 3 ĊĠĠĠĠĠĠĠ Ġval Ġrange 2 Ġ= Ġ 4 .. 7 ĊĠĠĠĠĠĠĠ Ġval Ġcombined Ġ= Ġrange 1 Ġ+ Ġrange 2 ĊĠĠĠĠĠĠĠ ĠassertEquals (( 1 .. 7 ). toList (), Ġcombined ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmap Ranges () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 1 .. 3 Ġmap Ġ{ Ġit Ġ* Ġ 2 Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 2 , Ġ 4 , Ġ 6 ), Ġrange ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġplus () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġlist 2 Ġ= Ġlist Ġ+ Ġ" che ese " ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar "), Ġlist ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" che ese "), Ġlist 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlets Ġuse Ġa Ġmutable Ġvariable ĊĠĠĠĠĠĠĠ Ġvar Ġlist 3 Ġ= Ġarray ListOf (" a ", Ġ" b ") ĊĠĠĠĠĠĠĠ Ġlist 3 Ġ+= Ġ" c " ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" a ", Ġ" b ", Ġ" c "), Ġlist 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġplus Collection Bug () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf (" foo ", Ġ" bar ") Ġ+ Ġarray ListOf (" che ese ", Ġ" wine ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" che ese ", Ġ" wine "), Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġplus Collection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġarray ListOf (" che ese ", Ġ" wine ") ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġa Ġ+ Ġb ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" che ese ", Ġ" wine "), Ġlist ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlets Ġuse Ġa Ġmutable Ġvariable ĊĠĠĠĠĠĠĠ Ġvar Ġml Ġ= Ġa ĊĠĠĠĠĠĠĠ Ġml Ġ+= Ġ" beer " ĊĠĠĠĠĠĠĠ Ġml Ġ+= Ġb ĊĠĠĠĠĠĠĠ Ġml Ġ+= Ġ" z " ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" beer ", Ġ" che ese ", Ġ" wine ", Ġ" z "), Ġml ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġrequire No Null s () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf < String ?> (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġnot Null Ġ= Ġdata . require No Null s () ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar "), Ġnot Null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Null s Ġ= Ġarray ListOf (" foo ", Ġnull , Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġfails With ( java Class < IllegalArgumentException >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow Ġan Ġexception Ġas Ġwe Ġhave Ġa Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Null s . require No Null s () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġreverse () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġrev Ġ= Ġdata . reverse () ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" bar ", Ġ" foo "), Ġrev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġreverse Function Should Return Re versed Copy For List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠList < Int > Ġ= Ġarray ListOf ( 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 1 , Ġ 3 , Ġ 2 )) Ġ{ Ġlist . reverse () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 2 , Ġ 3 , Ġ 1 )) Ġ{ Ġlist Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġreverse Function Should Return Re versed Copy For Iterable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiterable : ĠIterable < Int > Ġ= Ġarray ListOf ( 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 1 , Ġ 3 , Ġ 2 )) Ġ{ Ġiterable . reverse () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 2 , Ġ 3 , Ġ 1 )) Ġ{ Ġiterable Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġtest Ġfun Ġdrop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoll Ġ= Ġarray ListOf (" foo ", Ġ" bar ", Ġ" abc ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" bar ", Ġ" abc "), Ġcoll . drop ( 1 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" abc "), Ġcoll . drop ( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġdrop While () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoll Ġ= Ġarray ListOf (" foo ", Ġ" bar ", Ġ" abc ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" bar ", Ġ" abc "), Ġcoll . drop While Ġ{ Ġit . startsWith (" f ") Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġtake () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoll Ġ= Ġarray ListOf (" foo ", Ġ" bar ", Ġ" abc ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo "), Ġcoll . take ( 1 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar "), Ġcoll . take ( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġtake While () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoll Ġ= Ġarray ListOf (" foo ", Ġ" bar ", Ġ" abc ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo "), Ġcoll . take While Ġ{ Ġit . startsWith (" f ") Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" foo ", Ġ" bar ", Ġ" abc "), Ġcoll . take While Ġ{ Ġit . size Ġ== Ġ 3 Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġto Array () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġdata . toArray () ĊĠĠĠĠĠĠĠ Ġprintln (" Got Ġarray Ġ${ arr }") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġarr . size ) ĊĠĠĠĠĠĠĠ Ġtodo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarr Ġis ĠArray < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġcount () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġdata . count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġhash Set Of ( 1 2 , Ġ 1 4 , Ġ 1 5 ). count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠArrayList < Double >(). count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġfirst () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 9 , ĠTree Set ( array ListOf ( 9 0 , Ġ 4 7 , Ġ 1 9 )). first ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġlast () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" bar ", Ġdata . last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 5 , Ġarray ListOf ( 1 5 , Ġ 1 9 , Ġ 2 0 , Ġ 2 5 ). last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (' a ', Ġarray ListOf (' a '). last ()) ĊĠĠĠĠĠĠĠ Ġfails Ġ{ Ġarray ListOf < Int >(). last () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġsub script () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo ", Ġlist [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" bar ", Ġlist [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlists Ġthrow Ġan Ġexception Ġif Ġout Ġof Ġrange ĊĠĠĠĠĠĠĠ Ġfails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġlist [ 2 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġlets Ġtry Ġupdate Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġlist [ 0 ] Ġ= Ġ" new " ĊĠĠĠĠĠĠĠ Ġlist [ 1 ] Ġ= Ġ" thing " ĊĊĠĠĠĠĠĠĠ Ġ// Ġlists Ġdon 't Ġallow Ġyou Ġto Ġset Ġpast Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠĠĠĠ Ġfails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ 2 ] Ġ= Ġ" works " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlist . add (" works ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( array ListOf (" new ", Ġ" thing ", Ġ" works "), Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġindices () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġarray ListOf (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġval Ġindices Ġ= Ġdata . indices ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġindices . start ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġindices . end ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( indices , Ġdata . size . indices ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġcontains () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( hash Set Of < Int >(). contains ( 1 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( array ListOf ( 1 5 , Ġ 1 9 , Ġ 2 0 ). contains ( 1 5 )) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( Iterable Wrapper ( hash Set Of ( 4 5 , Ġ 1 4 , Ġ 1 3 )). contains ( 1 4 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( Iterable Wrapper ( link edList Of < Int > ()). contains ( 1 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġsort For Mutable Iterable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠMutable Iterable < Int > Ġ= Ġarray ListOf ( 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 1 , Ġ 2 , Ġ 3 )) Ġ{ Ġlist . sort () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 2 , Ġ 3 , Ġ 1 )) Ġ{ Ġlist Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġsort For Iterable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠIterable < Int > Ġ= ĠlistOf ( 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 1 , Ġ 2 , Ġ 3 )) Ġ{ Ġlist . sort () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( array ListOf ( 2 , Ġ 3 , Ġ 1 )) Ġ{ Ġlist Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmin () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 1 ). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 2 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 2 0 0 0 0 0 0 0 0 0 0 0 0 , Ġ{ ĠlistOf ( 3 0 0 0 0 0 0 0 0 0 0 0 0 , Ġ 2 0 0 0 0 0 0 0 0 0 0 0 0 ). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (' a ', Ġ{ ĠlistOf (' a ', Ġ' b '). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (" a ", Ġ{ ĠlistOf (" a ", Ġ" b "). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). stream (). min () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 2 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). stream (). min () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmax () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 1 ). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 3 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 3 0 0 0 0 0 0 0 0 0 0 0 0 , Ġ{ ĠlistOf ( 3 0 0 0 0 0 0 0 0 0 0 0 0 , Ġ 2 0 0 0 0 0 0 0 0 0 0 0 0 ). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (' b ', Ġ{ ĠlistOf (' a ', Ġ' b '). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (" b ", Ġ{ ĠlistOf (" a ", Ġ" b "). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). stream (). max () Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 3 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). stream (). max () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmin By () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). min By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 1 ). min By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 3 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). min By Ġ{ Ġ- it Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (' a ', Ġ{ ĠlistOf (' a ', Ġ' b '). min By Ġ{ Ġ" x $ it " Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (" b ", Ġ{ ĠlistOf (" b ", Ġ" abc "). min By Ġ{ Ġit . length Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). stream (). min By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 3 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). stream (). min By Ġ{ Ġ- it Ġ} Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmax By () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). max By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 1 ). max By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 2 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). max By Ġ{ Ġ- it Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (' b ', Ġ{ ĠlistOf (' a ', Ġ' b '). max By Ġ{ Ġ" x $ it " Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect (" abc ", Ġ{ ĠlistOf (" b ", Ġ" abc "). max By Ġ{ Ġit . length Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( null , Ġ{ ĠlistOf < Int >(). stream (). max By Ġ{ Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġexpect ( 2 , Ġ{ ĠlistOf ( 2 , Ġ 3 ). stream (). max By Ġ{ Ġ- it Ġ} Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmin By Evaluate Once () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 5 , Ġ 4 , Ġ 3 , Ġ 2 , Ġ 1 ). min By Ġ{ Ġc ++; Ġit Ġ* Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġc ) ĊĠĠĠĠĠĠĠ Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġexpect ( 1 , Ġ{ ĠlistOf ( 5 , Ġ 4 , Ġ 3 , Ġ 2 , Ġ 1 ). stream (). min By Ġ{ Ġc ++; Ġit Ġ* Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġmax By Evaluate Once () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġexpect ( 5 , Ġ{ ĠlistOf ( 5 , Ġ 4 , Ġ 3 , Ġ 2 , Ġ 1 ). max By Ġ{ Ġc ++; Ġit Ġ* Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġc ) ĊĠĠĠĠĠĠĠ Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġexpect ( 5 , Ġ{ ĠlistOf ( 5 , Ġ 4 , Ġ 3 , Ġ 2 , Ġ 1 ). stream (). max By Ġ{ Ġc ++; Ġit Ġ* Ġit Ġ} Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġsum () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( 0 ) Ġ{ Ġarray ListOf < Int >(). sum () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 1 4 ) Ġ{ Ġarray ListOf ( 2 , Ġ 3 , Ġ 9 ). sum () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 3 . 0 ) Ġ{ Ġarray ListOf ( 1 . 0 , Ġ 2 . 0 ). sum () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 3 0 0 0 0 0 0 0 0 0 0 0 0 ) Ġ{ Ġarray ListOf < Long >( 1 0 0 0 0 0 0 0 0 0 0 0 0 , Ġ 2 0 0 0 0 0 0 0 0 0 0 0 0 ). sum () Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 3 . 0 . toFloat ()) Ġ{ Ġarray ListOf < Float >( 1 . 0 . toFloat (), Ġ 2 . 0 . toFloat ()). sum () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġfun Ġtake Returns First N Elements () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 )) Ġ{ Ġ( 1 .. 1 0 ) Ġtake Ġ 5 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 )) Ġ{ Ġ( 1 .. 1 0 ). toList (). take ( 5 ) Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 , Ġ 2 )) Ġ{ Ġ( 1 .. 1 0 ) Ġtake Ġ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 , Ġ 2 )) Ġ{ Ġ( 1 .. 1 0 ). toList (). take ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf < Long >()) Ġ{ Ġ( 0 L .. 5 L ) Ġtake Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf < Long >()) Ġ{ ĠlistOf ( 1 L ) Ġtake Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 )) Ġ{ Ġ( 1 .. 1 ) Ġtake Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( listOf ( 1 )) Ġ{ ĠlistOf ( 1 ) Ġtake Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( set Of ( 1 , Ġ 2 )) Ġ{ Ġsorted Set Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ). take ( 2 ). toSet () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ