@ file : Suppress (" USE LESS _ IS _ CHECK ") Ċ Ċ package Ġcom . sk sam uel . kot est . properties Ċ Ċ import Ġcom . sk sam uel . kot est . properties . X . A Ċ import Ġcom . sk sam uel . kot est . properties . X . B Ċ import Ġio . kot est . inspect ors . for All Ċ import Ġio . kot est . matchers . b ooleans . shouldBe True Ċ import Ġio . kot est . matchers . collections . contain Ċ import Ġio . kot est . matchers . collections . should Contain Ċ import Ġio . kot est . matchers . collections . should Contain All Ċ import Ġio . kot est . matchers . collections . should Contain Any Of Ċ import Ġio . kot est . matchers . collections . should Have At Most Size Ċ import Ġio . kot est . matchers . comp ar ables . be GreaterThan Ċ import Ġio . kot est . matchers . comp ar ables . gte Ċ import Ġio . kot est . matchers . comp ar ables . lt Ċ import Ġio . kot est . matchers . double s . shouldBe GreaterThan OrEqual Ċ import Ġio . kot est . matchers . double s . shouldBe LessThan OrEqual Ċ import Ġio . kot est . matchers . float s . shouldBe GreaterThan OrEqual Ċ import Ġio . kot est . matchers . float s . shouldBe LessThan OrEqual Ċ import Ġio . kot est . matchers . ints . shouldBe LessThan OrEqual Ċ import Ġio . kot est . matchers . sequences . should Contain All In Any Order Ċ import Ġio . kot est . matchers . string . include Ċ import Ġio . kot est . properties . Gen Ċ import Ġio . kot est . properties . assert All Ċ import Ġio . kot est . properties . bind Ċ import Ġio . kot est . properties . choose Ċ import Ġio . kot est . properties . constant Ċ import Ġio . kot est . properties . create Ċ import Ġio . kot est . properties . default Ċ import Ġio . kot est . properties . double Ċ import Ġio . kot est . properties . duration Ċ import Ġio . kot est . properties . file Ċ import Ġio . kot est . properties . for All Ċ import Ġio . kot est . properties . for ClassName Ċ import Ġio . kot est . properties . from Ċ import Ġio . kot est . properties . generate Infinite Sequence Ċ import Ġio . kot est . properties . int Ċ import Ġio . kot est . properties . list Ċ import Ġio . kot est . properties . local Date Ċ import Ġio . kot est . properties . local DateTime Ċ import Ġio . kot est . properties . local Time Ċ import Ġio . kot est . properties . map Ċ import Ġio . kot est . properties . negative Inte gers Ċ import Ġio . kot est . properties . next Ċ import Ġio . kot est . properties . next Print able String Ċ import Ġio . kot est . properties . numeric Doubles Ċ import Ġio . kot est . properties . numeric Float s Ċ import Ġio . kot est . properties . one Of Ċ import Ġio . kot est . properties . period Ċ import Ġio . kot est . properties . positive Inte gers Ċ import Ġio . kot est . properties . samples Ċ import Ġio . kot est . properties . set Ċ import Ġio . kot est . properties . take Ċ import Ġio . kot est . properties . unique Random s Ċ import Ġio . kot est . shouldBe Ċ import Ġio . kot est . should Have Ċ import Ġio . kot est . should Not Be Ċ import Ġio . kot est . should Throw Ċ import Ġio . kot est . specs . Word Spec Ċ import Ġio . kot est . tables . headers Ċ import Ġio . kot est . tables . row Ċ import Ġio . kot est . tables . table Ċ import Ġjava . io . File Ċ import Ġjava . time . Duration Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Period Ċ import Ġjava . util . Random Ċ Ċ class ĠGen Test Ġ: ĠWord Spec () Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġ" next Print able String " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" give Ġout Ġa Ġargument Ġlong Ġstring ". config ( inv ocations Ġ= Ġ 1 0 0 , Ġthreads Ġ= Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= Ġkotlin . random . Random . Default ĊĠĠĠĠĠĠĠ Ġvar Ġrand Ġ= Ġrandom . nextInt ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( rand Ġ<= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠ Ġrand Ġ= Ġ 0 Ġ- Ġrand ĊĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġrandom . next Print able String ( rand ) ĊĊĠĠĠĠĠĠĠ Ġstring . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . toInt () ĠshouldBe Ġg te ( 3 2 ) ĊĠĠĠĠĠĠĠĠĠ Ġit . toInt () ĠshouldBe Ġlt ( 1 2 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstring . length ĠshouldBe Ġrand ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ" Gen . for ClassName " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" g ives Ġthe Ġright Ġresult " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtable 1 Ġ= Ġtable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . String "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Integer "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Short "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Byte "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Long "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Boolean "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Float "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Double ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġio . kot est . tables . for All ( table 1 ) Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠGen . for ClassName ( clazz ). random (). first OrNull ()?. java Class ?. name ĠshouldBe Ġclazz ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtable 2 Ġ= Ġtable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . String "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Short "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Byte "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Long "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Boolean "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Float "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Double ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġio . kot est . tables . for All ( table 2 ) Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġclazz . split (". "). last () ĊĠĠĠĠĠĠĠĠĠ ĠGen . for ClassName ( clazz ). random (). first OrNull ()?. java Class ?. name ĠshouldBe Ġ" java . lang .$ tmp " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGen . for ClassName (" kotlin . Int "). random (). first OrNull ()?. java Class ?. name ĠshouldBe Ġ" java . lang . Integer " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" throw Ġan Ġexception , Ġwith Ġa Ġwrong Ġclass " Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠGen . for ClassName (" This . is . not . a . valid . class ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ" Gen . create " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" create Ġa ĠGenerator Ġwith Ġthe Ġgiven Ġfunction " Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . create Ġ{ Ġ 5 Ġ}. random (). take ( 1 0 ). toList () ĠshouldBe ĠList ( 1 0 ) Ġ{ Ġ 5 Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġgen Ġ= ĠGen . create Ġ{ Ġi ++ Ġ} ĊĠĠĠĠĠĠĠ Ġgen . random (). take ( 1 5 0 ). toList () ĠshouldBe ĠList ( 1 5 0 ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ" Gen . default " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" generate Ġthe Ġdefaults Ġfor Ġlist " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgen Ġ= ĠGen . default < List < Int >>() ĊĠĠĠĠĠĠĠ Ġfor All ( 1 0 , Ġgen ) Ġ{ Ġinst Ġ-> ĊĠĠĠĠĠĠĠĠĠĠ Ġinst . for All Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( i Ġis ĠInt ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" generate Ġthe Ġdefaults Ġfor Ġset " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgen Ġ= ĠGen . default < Set < String >>() ĊĠĠĠĠĠĠĠ Ġfor All ( gen ) Ġ{ Ġinst Ġ-> ĊĠĠĠĠĠĠĠĠĠĠ Ġinst . for All Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( i Ġis ĠString ) ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" use Ġfor Class Ġfor Ġeverything Ġelse " Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġtable ( headers (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . String "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . String "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Integer "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Int "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Short "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Short "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Byte "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Byte "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Long "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Long "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Boolean "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Boolean "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Float "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Float "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" java . lang . Double "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" kotlin . Double ")) ĊĊĠĠĠĠĠĠĠ Ġio . kot est . tables . for All ( table ) Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġclazz . split (".") ĊĠĠĠĠĠĠĠĠĠ ĠGen . for ClassName ( clazz ). random (). first OrNull ()?. java Class ?. name Ġshould Have Ġinclude ( tmp [ tmp . size Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" throw Ġan Ġexe ption , Ġwith Ġa Ġwrong Ġclass " Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠGen . for ClassName (" This . is . not . a . valid . class ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Const Gen Ġ" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" always Ġgenerate Ġthe Ġsame Ġthing " Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All ( Gen . constant ( 5 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġ== Ġ 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . or Null Ġ" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" have Ġboth Ġvalues Ġand Ġnull s Ġgenerated " Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . constant ( 5 ). or Null (). constants (). toSet () ĠshouldBe Ġset Of ( 5 , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > ĠGen < T >. toList ( size : ĠInt ): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList < T >( size ). also Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġrandom (). take ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGen . constant ( 5 ). or Null (). take ( 1 0 0 ). toList (). toSet () ĠshouldBe Ġset Of ( 5 , Ġnull ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . filter Ġ" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" prevent Ġvalues Ġfrom Ġbeing Ġgenerated " Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All ( Gen . from ( listOf ( 1 , Ġ 2 , Ġ 5 )). filter Ġ{ Ġit Ġ!= Ġ 2 Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġ!= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . map Ġ" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" correct ly Ġtransform Ġthe Ġvalues " Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All ( Gen . constant ( 5 ). map Ġ{ Ġit Ġ+ Ġ 7 Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġ== Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . from Ġ" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" correct ly Ġhandle Ġnull Ġvalues " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf ( null , Ġ 1 , 2 , 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġgen Ġ= ĠGen . from ( list ) ĊĠĠĠĠĠĠĠ Ġval Ġfirst Elements Ġ= Ġgen . random (). take ( 1 0 0 ). toList () ĊĠĠĠĠĠĠĠ Ġfirst Elements Ġshould Have Ġcontain ( null Ġas ĠInt ?) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . constant " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" handle Ġnull Ġvalue " Ġ{ ĊĠĠĠĠĠĠĠ Ġfor All ( Gen . constant ( null Ġas ĠInt ? )) Ġ{ n Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġn Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . one Of " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" correct ly Ġhandle Ġmultiple Ġgenerators " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgen Ġ= ĠGen . one Of ( Gen . positive Inte gers (), ĠGen . negative Inte gers ()) ĊĠĠĠĠĠĠĠ Ġvar Ġpositive Numbers Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġnegative Numbers Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor All ( gen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Numbers ++ ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Numbers ++ ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġit Ġshould Not Be Ġ 0 ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpositive Numbers ĠshouldBe Ġbe GreaterThan ( 1 ) ĊĠĠĠĠĠĠĠ Ġnegative Numbers ĠshouldBe Ġbe GreaterThan ( 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" support Ġcovariance " Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . one Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen . bind ( Gen . int (), ĠX :: A ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen . bind ( Gen . int (), ĠX :: B ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen . bind ( Gen . int (), ĠX :: C ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . numeric Doubles ( min , Ġmax )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġmin Ġ= Ġ 1 . 0 ĊĠĠĠĠĠ Ġval Ġmax Ġ= Ġ 1 0 0 . 0 ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġonly Ġnumbers " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Doubles ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . is Finite (). shouldBe True () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġeverything Ġ>= Ġmin " Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmin Generated Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Doubles ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ== Ġmin ) Ġmin Generated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġit ĠshouldBe GreaterThan OrEqual Ġmin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmin Generated . shouldBe True () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġeverything Ġ<= Ġmax " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Doubles ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit ĠshouldBe LessThan OrEqual Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . numeric Float s ( min , Ġmax )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġmin Ġ= Ġ 1 . 0 f ĊĠĠĠĠĠ Ġval Ġmax Ġ= Ġ 1 0 0 . 0 f ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġonly Ġnumbers " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Float s ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . is Finite (). shouldBe True () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġeverything Ġ>= Ġmin " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Float s ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit ĠshouldBe GreaterThan OrEqual Ġmin ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Should Ġgenerate Ġeverything Ġ<= Ġmax " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . numeric Float s ( min , Ġmax )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit ĠshouldBe LessThan OrEqual Ġmax ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . local Date ( min Year , Ġmax Year )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġvalid ĠLocal Dates Ġ( no Ġexceptions )" Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . local Date (). random (). take ( 1 0 _ 0 0 0 ). toList () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Generate ĠLocal Dates Ġbetween Ġmin Year Ġand Ġmax Year " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyears Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġmonths Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġdays Ġ= Ġmutable Set Of < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . local Date ( 1 9 9 8 , Ġ 1 9 9 9 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġyears Ġ+= Ġit . year ĊĠĠĠĠĠĠĠĠĠ Ġmonths Ġ+= Ġit . month Value ĊĠĠĠĠĠĠĠĠĠ Ġdays Ġ+= Ġit . day OfMonth ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġyears ĠshouldBe Ġset Of ( 1 9 9 8 , Ġ 1 9 9 9 ) ĊĠĠĠĠĠĠĠ Ġmonths ĠshouldBe Ġ( 1 .. 1 2 ). toSet () ĊĠĠĠĠĠĠĠ Ġdays ĠshouldBe Ġ( 1 .. 3 1 ). toSet () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Contain ĠFeb Ġ 2 9 th Ġif Ġle ap Ġyear " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġle ap Year Ġ= Ġ 2 0 1 6 ĊĠĠĠĠĠĠĠ ĠGen . local Date ( le ap Year , Ġle ap Year ). constants (). toList () Ġshould Contain ĠLocalDate . of ( 2 0 1 6 , Ġ 2 , Ġ 2 9 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Contain Ġthe Ġconstants ĠFeb Ġ 2 8 , ĠJan Ġ 0 1 Ġand ĠDec Ġ 3 1 " Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . local Date ( 2 0 1 9 , Ġ 2 0 2 0 ). constants (). toList () Ġshould Contain All ĠlistOf ( LocalDate . of ( 2 0 1 9 , Ġ 1 , Ġ 1 ), ĠLocalDate . of ( 2 0 2 0 , Ġ 1 2 , Ġ 3 1 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Be Ġthe Ġdefault Ġgenerator Ġfor ĠLocalDate " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 ) Ġ{ Ġ_: ĠLocalDate Ġ-> Ġ/* ĠNo Ġuse . ĠW on 't Ġreach Ġhere Ġif Ġunsupported Ġ*/ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . local Time ()" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġvalid ĠLocal Times ( no Ġexceptions )" Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . local Time (). random (). take ( 1 0 _ 0 0 0 ). toList () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Be Ġthe Ġdefault Ġgenerator Ġfor ĠLocal Time " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 ) Ġ{ Ġ_: ĠLocal Time Ġ-> Ġ/* ĠNo Ġuse . ĠW on 't Ġreach Ġhere Ġif Ġunsupported Ġ*/ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . local DateTime ( min Year , Ġmax Year )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġvalid ĠLocalDateTime s ( no Ġexceptions )" Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . local DateTime (). random (). take ( 1 0 _ 0 0 0 ). toList () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Generate ĠLocalDateTime s Ġbetween Ġmin Year Ġand Ġmax Year " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyears Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġmonths Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġdays Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġmutable Set Of < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . local DateTime ( 1 9 9 8 , Ġ 1 9 9 9 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġyears Ġ+= Ġit . year ĊĠĠĠĠĠĠĠĠĠ Ġmonths Ġ+= Ġit . month Value ĊĠĠĠĠĠĠĠĠĠ Ġdays Ġ+= Ġit . day OfMonth ĊĠĠĠĠĠĠĠĠĠ Ġhours Ġ+= Ġit . hour ĊĠĠĠĠĠĠĠĠĠ Ġminutes Ġ+= Ġit . minute ĊĠĠĠĠĠĠĠĠĠ Ġseconds Ġ+= Ġit . second ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġyears ĠshouldBe Ġset Of ( 1 9 9 8 , Ġ 1 9 9 9 ) ĊĠĠĠĠĠĠĠ Ġmonths ĠshouldBe Ġ( 1 .. 1 2 ). toSet () ĊĠĠĠĠĠĠĠ Ġdays ĠshouldBe Ġ( 1 .. 3 1 ). toSet () ĊĠĠĠĠĠĠĠ Ġhours ĠshouldBe Ġ( 0 .. 2 3 ). toSet () ĊĠĠĠĠĠĠĠ Ġminutes ĠshouldBe Ġ( 0 .. 5 9 ). toSet () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Be Ġthe Ġdefault Ġgenerator Ġfor ĠLocalDateTime " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 ) Ġ{ Ġ_: ĠLocalDateTime Ġ-> Ġ/* ĠNo Ġuse . ĠW on 't Ġreach Ġhere Ġif Ġunsupported Ġ*/ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . duration ( max Duration )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġonly Ġdur ations Ġ<= Ġmax Duration " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Duration Ġ= ĠDuration . of Seconds ( 1 2 0 ) ĊĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . duration ( max Duration )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġ<= Ġmax Duration ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Generate Ġall Ġpossible Ġdur ations Ġin Ġthe Ġinterval Ġ[ 0 , Ġmax Duration [" Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax Duration Ġ= ĠDuration . of Seconds ( 1 2 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġseconds List Ġ= Ġmutable Set Of < Long >() ĊĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . duration ( max Duration )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġseconds List Ġ+= Ġit . seconds ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġseconds List ĠshouldBe Ġ( 0 L .. 1 1 9 L ). toSet () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Be Ġthe Ġdefault Ġgenerator Ġfor ĠDuration " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 ) Ġ{ Ġ_: ĠDuration Ġ-> Ġ/* ĠNo Ġuse . ĠW on 't Ġreach Ġhere Ġif Ġunsupported Ġ*/ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . period ( max Years )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġonly Ġperiods Ġwith Ġyears Ġ<= Ġmax Years " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . period ( 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . years Ġ<= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Generate Ġall Ġpossible Ġyears Ġin Ġthe Ġinterval Ġ[ 0 , Ġmax Years ]" Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . period ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgenerated Ġ+= Ġit . years ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgenerated ĠshouldBe Ġ( 0 .. 1 0 ). toSet () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Generate Ġall Ġpossible Ġintervals Ġfor ĠMonth s Ġand ĠDays " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Days Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġgenerated Months Ġ= Ġmutable Set Of < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . period ( 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgenerated Days Ġ+= Ġit . days ĊĠĠĠĠĠĠĠĠĠ Ġgenerated Months Ġ+= Ġit . months ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgenerated Days ĠshouldBe Ġ( 0 .. 3 1 ). toSet () ĊĠĠĠĠĠĠĠ Ġgenerated Months ĠshouldBe Ġ( 0 .. 1 1 ). toSet () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Be Ġthe Ġdefault Ġgenerator Ġfor ĠDuration " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 ) Ġ{ Ġ_: ĠPeriod Ġ-> Ġ/* ĠNo Ġuse . ĠW on 't Ġreach Ġhere Ġif Ġunsupported Ġ*/ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . take ( n )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġmocked Gen Ġ= Ġobject Ġ: ĠGen < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants () Ġ= ĠlistOf ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?) Ġ= Ġgenerate Infinite Sequence Ġ{ Ġ 3 Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġmocked Gen 2 Ġ= Ġobject Ġ: ĠGen < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants () Ġ= ĠlistOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?) Ġ= Ġgenerate Infinite Sequence Ġ{ Ġ" 4 2 " Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Take Ġconstants Ġfirst " Ġ{ ĊĠĠĠĠĠĠĠ Ġmocked Gen . take ( 2 ) ĠshouldBe ĠlistOf ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġmocked Gen 2 . take ( 4 ) ĠshouldBe ĠlistOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Populate Ġwith Ġconstants Ġ+ Ġrandom Ġvalues Ġif Ġconstants Ġare Ġnot Ġenough " Ġ{ ĊĠĠĠĠĠĠĠ Ġmocked Gen . take ( 5 ) ĠshouldBe ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 3 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġmocked Gen 2 . take ( 8 ) ĠshouldBe ĠlistOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ", Ġ" 4 2 ", Ġ" 4 2 ", Ġ" 4 2 ", Ġ" 4 2 ") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Throw Ġexception Ġif Ġthe Ġgenerator Ġcan 't Ġgenerate Ġthe Ġamount Ġrequested " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsmall Gen Ġ= Ġobject Ġ: ĠGen < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants () Ġ= ĠlistOf (" 1 ", Ġ" 2 ", Ġ" 3 ", Ġ" 4 ") ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?) Ġ= Ġsequence Of (" 4 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= Ġshould Throw < IllegalStateException > Ġ{ Ġsmall Gen . take ( 1 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġthrown . message ĠshouldBe Ġ" Gen Ġcould Ġonly Ġgenerate Ġ 5 Ġvalues Ġwhile Ġyou Ġrequested Ġ 1 0 ." ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Throw Ġexception Ġif Ġamount Ġ<= Ġ 0 " Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ Ġmocked Gen . take ( 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ Ġmocked Gen . take (- 1 ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . next ( predicate )" Ġshould Ġ{ ĊĊĠĠĠĠĠ Ġval Ġmocked Gen Ġ= Ġobject Ġ: ĠGen < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants () Ġ= ĠlistOf ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġseq Ġ= ĠlistOf ( 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?) Ġ= Ġgenerate Infinite Sequence Ġ{ Ġseq . random () Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Take Ġa Ġrandom Ġvalue Ġstraight Ġfrom Ġrandom () Ġby Ġdefault " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccumulated Values Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġaccumulated Values . add ( mocked Gen . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġaccumulated Values ĠshouldBe Ġset Of ( 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" Allow s Ġto Ġspecify Ġa Ġpredicate Ġto Ġfilter Ġon Ġthe Ġvalue " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccumulated Values Ġ= Ġmutable Set Of < Int >() ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġaccumulated Values . add ( mocked Gen . next Ġ{ Ġit Ġ> Ġ 4 Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġaccumulated Values ĠshouldBe Ġset Of ( 5 , Ġ 6 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . list ( maxSize )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġlists Ġof Ġlength Ġup Ġto Ġ 1 0 0 Ġby Ġdefault " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . list ( Gen . double ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . should Have At Most Size ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" Generate Ġlists Ġup Ġto Ġthe Ġgiven Ġlength " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 5 0 , ĠGen . choose ( 1 , Ġ 5 0 0 )) Ġ{ Ġsize : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġassert All ( 1 0 0 0 , ĠGen . list ( Gen . double (), Ġsize )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . should Have At Most Size ( size ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . set ( maxSize )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" Generate Ġsets Ġof Ġlength Ġup Ġto Ġ 1 0 0 Ġby Ġdefault " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . set ( Gen . double ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . should Have At Most Size ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" Generate Ġsets Ġup Ġto Ġthe Ġgiven Ġlength " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 5 0 , ĠGen . choose ( 1 , Ġ 5 0 0 )) Ġ{ Ġsize : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġassert All ( 1 0 0 0 , ĠGen . set ( Gen . double (), Ġsize )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . should Have At Most Size ( size ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . map ( key Gen , Ġvalue Gen , ĠmaxSize )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Gen Ġ= ĠGen . int () ĊĠĠĠĠĠ Ġval Ġvalue Gen Ġ= ĠGen . double () ĊĠĠĠĠĠ Ġ" Generate Ġmaps Ġof Ġup Ġto Ġ 1 0 0 Ġelements Ġby Ġdefault " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . map ( key Gen , Ġvalue Gen )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . size . shouldBe LessThan OrEqual ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" Generate Ġmaps Ġof Ġup Ġto Ġthe Ġgiven Ġsize " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 5 0 , ĠGen . choose ( 1 , Ġ 5 0 0 )) Ġ{ Ġsize : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġassert All ( 1 0 0 0 , ĠGen . map ( key Gen , Ġvalue Gen , Ġsize )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . size . shouldBe LessThan OrEqual ( size ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . map ( key Value Gen , ĠmaxSize )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġkey Value Gen Ġ= ĠGen . int (). map Ġ{ ĠPair ( it , Ġit . toString ()) Ġ} ĊĠĠĠĠĠ Ġ" Generate Ġmaps Ġof Ġup Ġto Ġ 1 0 0 Ġelements Ġby Ġdefault " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 1 0 _ 0 0 0 , ĠGen . map ( key Value Gen )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . size . shouldBe LessThan OrEqual ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" Generate Ġmaps Ġof Ġup Ġto Ġthe Ġgiven Ġsize " Ġ{ ĊĠĠĠĠĠĠĠ Ġassert All ( 5 0 , ĠGen . choose ( 1 , Ġ 5 0 0 )) Ġ{ Ġsize : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġassert All ( 1 0 0 0 , ĠGen . map ( key Value Gen , Ġsize )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . size . shouldBe LessThan OrEqual ( size ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . samples ( sample Values )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" create Ġgen Ġfor Ġmore Ġthan Ġone Ġsample Ġvalues " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgen Samples Ġ= ĠGen . samples ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġgen Samples . random (). take ( 1 0 ). toList () ĠshouldBe ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" create Ġgen Ġfor Ġno Ġsample Ġvalues " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġempty Gen Sample Ġ= ĠGen . samples < Any >() ĊĠĠĠĠĠĠĠ Ġempty Gen Sample . random (). take ( 1 0 ). toList () ĠshouldBe Ġempty List < Any >() ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" create Ġgen Ġfor Ġnullable Ġtype " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgen With Nullable Values Ġ= ĠGen . samples ( 1 , Ġ 2 , Ġnull , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġgen With Nullable Values . random (). take ( 9 ). toList () ĠshouldBe ĠlistOf ( 1 , Ġ 2 , Ġnull , Ġ 4 , Ġ 1 , Ġ 2 , Ġnull , Ġ 4 , Ġ 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . file ( directory Name , Ġrecursive )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" g ives Ġan Ġempty Ġsequence " Ġ{ ĊĠĠĠĠĠĠĠ ĠGen . file (" non - existing - dir "). random (). toList () ĠshouldBe Ġempty List () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" g ives Ġfiles Ġfrom Ġa Ġgiven Ġdirectory Ġwithout Ġrecursive Ġsearch " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom TopLevel File In Jvm Test Ġ= ĠGen . file (" src / jvm Test "). random (). take ( 2 0 ). toList () ĊĠĠĠĠĠĠĠ Ġval Ġtop Level Files In Jvm Test Ġ= ĠFile (" src / jvm Test "). list Files () !!. toList () ĊĊĠĠĠĠĠĠĠ Ġrandom TopLevel File In Jvm Test Ġshould Contain All Ġtop Level Files In Jvm Test ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" g ives Ġfiles Ġfrom Ġa Ġgiven Ġdirectory Ġwith Ġrecursive Ġsearch " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreflection Test Directory Ġ= Ġ" src / jvm Test / kotlin / com / sk sam uel / kot est / matchers / reflection " ĊĠĠĠĠĠĠĠ Ġval Ġrandom Files From Reflection Directory Ġ= ĠGen . file ( reflection Test Directory , Ġrecursive Ġ= Ġtrue ). random (). take ( 1 0 0 ). toList () ĊĠĠĠĠĠĠĠ Ġval Ġclasses Files In Reflection Test Directory Ġ= ĠFile ("$ reflection Test Directory / classes "). list Files () !!. toList () ĊĊĠĠĠĠĠĠĠ Ġrandom Files From Reflection Directory Ġshould Contain Any Of Ġclasses Files In Reflection Test Directory ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . concat ( gen )" Ġshould Ġ{ ĊĠĠĠĠĠ Ġval Ġgen Of Class A Ġ= Ġobject Ġ: ĠGen < X > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants (): ĠIterable < X > Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?): ĠSequence < X > Ġ= Ġsequence Of ( A ( 1 ), ĠA ( 2 ), ĠA ( 3 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġgen Of Class B Ġ= Ġobject Ġ: ĠGen < X > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants (): ĠIterable < X > Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?): ĠSequence < X > Ġ= Ġsequence Of ( B ( 1 ), ĠB ( 2 ), ĠB ( 3 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" given Ġelements Ġfrom Ġit Ġself Ġwhen Ġits Ġelements Ġare Ġnot Ġex hausted " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġthree Elements From Concat en ated Gen Ġ= Ġgen Of Class A . concat ( gen Of Class B ). random (). take ( 3 ). toList () ĊĠĠĠĠĠĠĠ Ġthree Elements From Concat en ated Gen ĠshouldBe ĠlistOf ( A ( 1 ), ĠA ( 2 ), ĠA ( 3 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" given Ġelements Ġfrom Ġthe Ġother Ġgen Ġwhen Ġits Ġelements Ġare Ġex hausted " Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsix Elements From Concat en ated Gen Ġ= Ġgen Of Class A . concat ( gen Of Class B ). random (). take ( 6 ). toList () ĊĠĠĠĠĠĠĠ Ġsix Elements From Concat en ated Gen ĠshouldBe ĠlistOf ( A ( 1 ), ĠA ( 2 ), ĠA ( 3 ), ĠB ( 1 ), ĠB ( 2 ), ĠB ( 3 )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Gen . unique Random s " Ġshould Ġ{ ĊĊĠĠĠĠĠ Ġ" return Ġunique Ġvalues Ġfrom Ġ` random `" Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa 1 Ġ= ĠA ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġb 1 Ġ= ĠB ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= Ġobject : ĠGen < X > Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconstants (): ĠIterable < X > Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrandom ( seed : ĠLong ?): ĠSequence < X > Ġ= Ġsequence Of ( a 1 , Ġa 1 , Ġb 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġunique Elements Ġ= Ġgenerator . unique Random s () ĊĠĠĠĠĠĠĠ Ġunique Elements Ġshould Contain All In Any Order Ġsequence Of ( a 1 , b 1 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠX Ġ{ ĊĠ Ġdata Ġclass ĠA ( val Ġa : ĠInt ) Ġ: ĠX () ĊĠ Ġdata Ġclass ĠB ( val Ġb : ĠInt ) Ġ: ĠX () ĊĠ Ġdata Ġclass ĠC ( val Ġc : ĠInt ) Ġ: ĠX () Ċ } ĊĊ