/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 6 . ĠK EST I Ġco , Ġl td Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdeb op 4 k . core . collections . per mutations Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġcom . n ha ar man . mockito _ kotlin . times Ċ import Ġdeb op 4 k . core . collections . per mutations . samples . pri mes Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . assertThat Thrown By Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . BDD Mockito Ċ import Ġorg . mockito . Mockito ĊĊ Ċ class ĠDrop Test Ġ: ĠAbstract Per mutation Test () Ġ{ ĊĊĠ Ġval Ġsupplier Mock Ġ= Ġmock < () Ġ-> ĠPer mutation < Int >>() ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Thrown When Negative StartIndex On Empty Seq () Ġ{ ĊĠĠĠ Ġval Ġempty Ġ= Ġempty Per mutation < Any >() ĊĊĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠ Ġval Ġstart Inclusive Ġ= Ġ- 1 L ĊĠĠĠĠĠ Ġempty . drop ( start Inclusive ) ĊĠĠĠ Ġ}. isInstanceOf ( IllegalArgumentException :: class . java ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Throw When Negative StartIndex On Non Empty Seq () Ġ{ ĊĠĠĠ Ġval Ġnon Empty Ġ= Ġpermutation Of ( 1 , Ġ 2 , Ġ 3 ) ĊĊĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠ Ġval Ġstart Inclusive Ġ= Ġ- 1 L ĊĠĠĠĠĠ Ġnon Empty . drop ( start Inclusive ) ĊĠĠĠ Ġ}. isInstanceOf ( IllegalArgumentException :: class . java ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Throw When Negative StartIndex On Infinite Seq () Ġ{ ĊĠĠĠ Ġval Ġinfinite Ġ= Ġpri mes () ĊĊĠĠĠ ĠassertThat Thrown By Ġ{ ĊĠĠĠĠĠ Ġval Ġstart Inclusive Ġ= Ġ- 1 L ĊĠĠĠĠĠ Ġinfinite . drop ( start Inclusive ) ĊĠĠĠ Ġ}. isInstanceOf ( IllegalArgumentException :: class . java ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Return Empty Seq () Ġ{ ĊĠĠĠ ĠassertThat ( empty Per mutation < Any >(). drop ( 0 )). isEmpty () ĊĠĠĠ ĠassertThat ( empty Per mutation < Any >(). drop ( 5 )). isEmpty () ĊĠĠĠ ĠassertThat ( permutation Of ( 1 , Ġ 2 ). drop ( 2 )). isEmpty () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Return Sub stream Without Prefix () Ġ{ ĊĠĠĠ ĠassertThat ( permutation Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ). drop ( 2 )). isEqualTo ( permutation Of ( 3 , Ġ 4 , Ġ 5 )) ĊĊĠĠĠ Ġval Ġn atur als Ġ= Ġnumbers ( 0 ) ĊĠĠĠ Ġval Ġfrom Five Ġ= Ġn atur als . drop ( 5 ) ĊĠĠĠ ĠassertThat ( from Five . take ( 4 )). isEqualTo ( permutation Of ( 5 , Ġ 6 , Ġ 7 , Ġ 8 )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Not Evaluate Tail Except First Element () Ġ{ ĊĠĠĠ Ġ// Ġgiven ĊĠĠĠ Ġval Ġn atur als Ġ= Ġpermutation Of ( 1 , Ġsupplier Mock ) ĊĠĠĠ ĠB DD Mockito . given ( supplier Mock . invoke ()). willReturn ( cons ( 2 , Ġ{ Ġsupplier Mock . invoke () Ġ})) ĊĠĠĠ Ġ// Ġwhen ĊĠĠĠ Ġn atur als . drop ( 2 ) ĊĠĠĠ Ġ// Ġthen ĊĠĠĠ ĠMockito . verify ( supplier Mock , Ġtimes ( 2 )). invoke () ĊĠ Ġ} Ċ Ċ }