package Ġorg . d ani lo pi an ini . kotlin qa . test Ċ Ċ import Ġcom . uch uh imo . kon f . Config Spec Ċ import Ġjava . io . File Ċ Ċ object ĠRoot Ġ: ĠConfig Spec ("") Ġ{ ĊĠĠĠ Ġval Ġtests Ġby Ġrequired < List < Test >>() Ċ } Ċ Ċ data Ġclass ĠTest ( ĊĠĠĠ Ġval Ġdescription : ĠString , ĊĠĠĠ Ġval Ġconfiguration : ĠConfiguration , ĊĠĠĠ Ġval Ġexpectation : ĠExpect ation , Ċ ) Ċ Ċ data Ġclass ĠConfiguration ( val Ġtasks : ĠList < String >, Ġval Ġoptions : ĠList < String > Ġ= Ġempty List ()) Ċ Ċ @ Suppress (" Constructor Parameter Naming ") Ċ data Ġclass ĠExpect ation ( ĊĠĠĠ Ġval Ġfile _ exists : ĠList < Existing File > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġsuccess : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġfailure : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġ` no - source `: ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġoutput _ contains : ĠList < String > Ġ= Ġempty List (), Ċ ) Ċ Ċ data Ġclass ĠExisting File ( val Ġname : ĠString , Ġval Ġcontents : ĠString Ġ= Ġ" .* ", Ġval Ġevery Line : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprivate Ġfun ĠSequence < Boolean >. matches (): ĠBoolean Ġ= Ġif Ġ( every Line ) Ġall Ġ{ Ġit Ġ} Ġelse Ġany Ġ{ Ġit Ġ} ĊĠĠĠ Ġfun ĠisValid () Ġ= Ġwith ( File ( name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġexists () Ġ&& Ġread Lines (). as Sequence (). map Ġ{ Ġit . matches ( Regex ( contents )) Ġ}. matches () ĊĠĠĠ Ġ} Ċ } Ċ