package Ġcom . sk sam uel . kot est . property . ar bitrary Ċ Ċ import Ġio . kot est . core . spec . style . Fun Spec Ċ import Ġio . kot est . matchers . collections . should Contain Exactly Ċ import Ġio . kot est . property . Ar b Ċ import Ġio . kot est . property . Edge Config Ċ import Ġio . kot est . property . Random Source Ċ import Ġio . kot est . property . ar bitrary . double Ċ import Ġio . kot est . property . ar bitrary . flatMap Ċ import Ġio . kot est . property . ar bitrary . int Ċ import Ġio . kot est . property . ar bitrary . map Ċ import Ġio . kot est . property . ar bitrary . string Ċ import Ġio . kot est . property . ar bitrary . take Ċ import Ġio . kot est . property . ar bitrary . with Edge cases Ċ Ċ class ĠFlat Map Test Ġ: ĠFun Spec () Ġ{ ĊĠĠ Ġinit Ġ{ ĊĠĠĠĠĠ Ġtest (" Ar b . flatMap Ġshould Ġcompute Ġprob abil istic Ġedge cases ") Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġar b String Ġ= ĠA rb . int ( 1 .. 1 0 ). with Edge cases ( 1 , Ġ 2 ). flatMap Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA rb . double (). with Edge cases ( 1 . 0 , Ġ 2 . 0 ). flatMap Ġ{ Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA rb . string (). with Edge cases (" foo ", Ġ" bar "). map Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ a Ġ$ b Ġ$ c " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġval Ġedges Ġ= Ġar b String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. generate ( Random Source . see ded ( 1 2 3 4 L ), ĠEdge Config ( edge cases Generation Probability Ġ= Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠĠ Ġedges Ġshould Contain Exactly ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 2 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 2 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 1 . 0 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 1 . 0 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 2 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 2 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 2 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 1 . 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 2 . 0 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 Ġ 1 . 0 Ġbar " ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġtest (" Ar b . flatMap Ġshould Ġpreserve Ġedge cases Ġif Ġany Ġof Ġedge cases Ġwere Ġnone ") Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġar b String Ġ= ĠA rb . int ( 1 .. 1 0 ). with Edge cases ( emptyList ()). flatMap Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA rb . int ( 1 1 .. 2 0 ). with Edge cases ( emptyList ()). flatMap Ġ{ Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA rb . string (). with Edge cases (" foo ", Ġ" bar "). map Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ a Ġ$ b Ġ$ c " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġval Ġedges Ġ= Ġar b String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. generate ( Random Source . see ded ( 1 2 3 4 L ), ĠEdge Config ( edge cases Generation Probability Ġ= Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠĠĠĠĠĠ Ġedges Ġshould Contain Exactly ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 0 Ġ 1 9 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 Ġ 2 0 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 Ġ 1 9 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 1 2 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 Ġ 1 3 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 1 5 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġ 1 3 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 0 Ġ 1 2 Ġfoo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 Ġ 1 3 Ġbar ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 Ġ 1 8 Ġbar " ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠ Ġtest (" Ar b . flatMap Ġshould Ġgenerate Ġdependent ĠA rb ") Ġ{ ĊĠĠĠĠĠĠĠĠ ĠA rb . int ( 1 .. 1 0 ). flatMap Ġ{ ĠA rb . int ( 1 .. it Ġ* Ġit ) Ġ}. take ( 1 5 , ĠRandom Source . see ded ( 3 2 4 2 3 4 4 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () Ġshould Contain Exactly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ