/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġsh ig uru ik ai Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT Ġlicense Ċ Ġ* Ġhttps :// github . com / sh ig uru ik ai / combinator ics kt / blob / master / LICENSE Ċ Ġ*/ Ċ Ċ package Ġcom . github . sh ig uru ik ai . combinator ics kt Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠDer ange ment Generator Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġempty List Ġ= Ġempty List < Any >() ĊĠĠĠ Ġprivate Ġval Ġempty Array Ġ= Ġempty Array < Any >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ der ange ments _ empty () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ("[ [] ]", Ġempty List . der ange ments (). toList (). toString ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ("[ [] ]", Ġempty Array . der ange ments (). map Ġ{ Ġit . toList () Ġ}. toList (). toString ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ der ange ments () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠarrayOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ [] ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" [] ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ [ 1 , Ġ 0 ]] ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ [ 1 , Ġ 2 , Ġ 0 ], Ġ[ 2 , Ġ 0 , Ġ 1 ]] ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ [ 1 , Ġ 0 , Ġ 3 , Ġ 2 ], Ġ[ 1 , Ġ 2 , Ġ 3 , Ġ 0 ], Ġ[ 1 , Ġ 3 , Ġ 0 , Ġ 2 ], Ġ[ 2 , Ġ 0 , Ġ 3 , Ġ 1 ], Ġ[ 2 , Ġ 3 , Ġ 0 , Ġ 1 ], Ġ[ 2 , Ġ 3 , Ġ 1 , Ġ 0 ], Ġ[ 3 , Ġ 0 , Ġ 1 , Ġ 2 ], Ġ[ 3 , Ġ 2 , Ġ 0 , Ġ 1 ], Ġ[ 3 , Ġ 2 , Ġ 1 , Ġ 0 ]] ") ĊĊĠĠĠĠĠĠĠ Ġexpected . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , ĠDer ange ment Generator . indices ( index ). map Ġ{ Ġit . toList () Ġ}. toList (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġarray . take ( index ). der ange ments (). toList (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġarray . copyOf ( index ). der ange ments (). map Ġ{ Ġit . toList () Ġ}. toList (). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġ 0 .. 6 ĊĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġrange ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġrange . take ( r ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . per mutations (). filter Ġ{ Ġlist Ġ-> Ġvar Ġi Ġ= Ġ 0 ; Ġlist . all Ġ{ Ġit Ġ!= Ġi ++ Ġ} Ġ}. toList (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . der ange ments (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( x . der ange ments (). total Size , Ġx . der ange ments (). toList (). size . to BigInteger ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ