package Ġcom . kas per sky . kas press o . test cases . models Ċ Ċ import Ġcom . kas per sky . kas press o . test cases . core . test context . Base TestContext Ċ import Ġcom . kas per sky . kas press o . test cases . core . test context . TestContext Ċ Ċ internal Ġclass ĠTest Body < Init Data , ĠData >( ĊĠĠĠ Ġval Ġtest Name : ĠString , ĊĠĠĠ Ġval Ġbefore Test Actions : Ġ( Base TestContext . () Ġ-> ĠUnit )? , ĊĠĠĠ Ġval Ġafter Test Actions : Ġ( Base TestContext . () Ġ-> ĠUnit )? , ĊĠĠĠ Ġval Ġsteps : ĠTest Context < Data >. () Ġ-> ĠUnit , ĊĠĠĠ Ġval Ġinit Actions : Ġ( Init Data . () Ġ-> ĠUnit )? , ĊĠĠĠ Ġval Ġtransform Actions List : ĠList < Data . () Ġ-> ĠUnit >, ĊĠĠĠ Ġval Ġdata Producer : Ġ((( Init Data . () Ġ-> ĠUnit )? ) Ġ-> ĠData ) Ċ ) Ġ{ ĊĠĠĠ Ġinternal Ġclass ĠBuilder < Init Data , ĠData > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtest Name : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġbefore Test Actions : Ġ( Base TestContext . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġafter Test Actions : Ġ( Base TestContext . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġsteps : Ġ( TestContext < Data >. () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġinit Actions : Ġ( Init Data . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġtransform Actions List : ĠMutable List < Data . () Ġ-> ĠUnit > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġdata Producer : Ġ((( Init Data . () Ġ-> ĠUnit )? ) Ġ-> ĠData )? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠTest Body < Init Data , ĠData > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Initialization In variants () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTest Body ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( test Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Test Actions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Test Actions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( steps ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Actions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Actions List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( data Producer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcheck Initialization In variants () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transform Actions List . isNotEmpty () Ġ&& Ġinit Actions Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Init Ġdata Ġsection Ġcan Ġnot Ġbe Ġempty Ġfor Ġnon Ġempty Ġtransform Ġdata Ġsection .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }