Ċ @ file : Suppress (" FunctionName ") Ġ// ĠException Ġto Ġallow Ġa Ġmore Ġclose Ġexperience Ġto ĠG her kin Ċ Ċ import Ġjava . time . LocalDate Ċ Ċ class ĠFeature ( title : ĠString Ġ= Ġ"", Ġtags : ĠSet < String > Ġ= Ġempty Set (), Ġblock : ĠFeature . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊĠĠĠ Ġconstructor ( title : ĠString Ġ= Ġ"", Ġtags : ĠSet < String > Ġ= Ġempty Set (), Ġvar arg Ġscenarios : ĠScenario ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ( title , Ġtags ) Ġ{ Ġthis . scenarios Ġ= Ġscenarios . toList () Ġ} ĊĊĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġtitle ĊĠĠĠ Ġvar Ġtags : ĠSet < String > Ġ= Ġtags ĊĠĠĠ Ġvar Ġdescription : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġvar Ġbackground : ĠBackground ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġscenarios : ĠList < Scenario > Ġ= Ġempty List () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠScenario ( text : ĠString Ġ= Ġ"", Ġblock : ĠScenario . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠBackground ( text : ĠString Ġ= Ġ"", Ġblock : ĠBackground . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠExec utable Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġsteps : ĠList < Step > Ġ= ĠlistOf () ĊĊĠĠĠ Ġfun ĠGiven ( text : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġstep ( Step Type . G IV EN , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠWhen ( text : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġstep ( Step Type . WHEN , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠThen ( text : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġstep ( Step Type . THEN , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠAnd ( text : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġstep ( steps . last (). type , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠBut ( text : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġstep ( steps . last (). type , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstep ( type : ĠStep Type , Ġtext : ĠString Ġ= Ġ"", Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġsteps Ġ= Ġsteps Ġ+ ĠStep ( type , Ġtext , Ġhandler ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBackground : ĠExec utable () Ċ Ċ class ĠScenario ( ĊĠĠĠ Ġtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġtags : ĠSet < String > Ġ= Ġempty Set (), ĊĠĠĠ Ġblock : ĠScenario . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠExec utable () Ċ Ċ class ĠScenario Outline < T >( ĊĠĠĠ Ġtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġtags : ĠSet < String > Ġ= Ġempty Set (), ĊĠĠĠ Ġblock : ĠScenario Outline < T >. () Ġ-> ĠUnit Ġ= Ġ{} ): ĠExec utable () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġexamples : ĠList < T > Ġ= Ġempty List () ĊĊĠĠĠ Ġfun ĠExamples ( var arg Ġexamples : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . examples Ġ= Ġexamples . toList () ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠStep Type Ġ{ ĠG IV EN , ĠWHEN , ĠTHEN Ġ} Ċ Ċ class ĠStep ( var Ġtype : ĠStep Type , Ġvar Ġtext : ĠString , Ġval Ġhandler : ĠStep . () Ġ-> ĠUnit Ġ= Ġ{}) Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġdata Ġclass ĠCase ( val Ġid : ĠString , Ġval Ġdate : ĠLocalDate ) ĊĊĠĠĠ ĠFeature (" A Ġfeature ") Ġ{ ĊĠĠĠĠĠĠĠ ĠBackground Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven (" something ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen (" other ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen (" other ") Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnd Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBut () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠScenario (" Scenario Ġ 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠScenario Outline < Case >(" Scenario ĠOut line Ġ 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGiven () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWhen () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThen () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠExamples ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCase ( id Ġ= Ġ" id ", Ġdate Ġ= ĠLocalDate . now ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ