package Ġio . kot lint est . runner . jvm Ċ Ċ import Ġio . kot lint est . Description Ċ import Ġio . kot lint est . Spec Ċ import Ġio . kot lint est . TestResult Ċ import Ġio . kot lint est . TestCase Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠImplement ations Ġof Ġthis Ġinterface Ġwill Ġbe Ġnotified Ġof Ġevents Ċ Ġ* Ġthat Ġoccur Ġas Ġpart Ġof Ġthe Ġ[ Test Engine ] Ġlifecycle . Ċ Ġ*/ Ċ interface ĠTest Engine Listener Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIs Ġinvoked Ġwhen Ġthe Ġ[ Test Engine ] Ġis Ġstarting Ġexecution . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġclasses Ġthe Ġ[ Spec ] Ġclasses Ġthat Ġwill Ġbe Ġused Ġby Ġthe Ġ[ Test Engine ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġengine Started ( classes : ĠList < K Class < out ĠSpec >>) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIs Ġinvoked Ġwhen Ġthe Ġ[ Test Engine ] Ġhas Ġfinished Ġexecution . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġan Ġun recover able Ġerror Ġwas Ġdetected Ġduring Ġexecution Ġthen Ġit Ġwill Ġbe Ġpassed ĊĠĠ Ġ* Ġas Ġthe Ġparameter Ġto Ġthe Ġengine . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġengine Finished ( t : ĠThrowable ?) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIs Ġinvoked Ġonce Ġper Ġ[ Spec ] Ġwhen Ġthe Ġ[ Test Engine ] Ġis Ġpre paring ĊĠĠ Ġ* Ġto Ġsubmit Ġthe Ġspec Ġfor Ġexecution Ġto Ġa Ġ[ Spec Runner ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġprepare Spec ( description : ĠDescription , Ġklass : ĠK Class < out ĠSpec >) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠIs Ġinvoked Ġonce Ġper Ġ[ Spec ] Ġto Ġindicate Ġthat Ġall Ġ[ TestCase ] Ġinstances ĊĠĠ Ġ* Ġof Ġthe Ġspec Ġhave Ġreturned Ġand Ġthe Ġ[ Spec Runner ] Ġhas Ġcompleted . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġcomplete Spec ( description : ĠDescription , Ġklass : ĠK Class < out ĠSpec >, Ġt : ĠThrowable ?) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExec uted Ġeach Ġtime Ġa Ġ[ TestCase ] Ġhas Ġbeen Ġentered Ġfrom Ġa Ġparent Ġtest . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġa Ġparent Ġtest Ġhas Ġbeen Ġconfigured Ġwith Ġmultiple Ġinv ocations , Ġthen Ġthis ĊĠĠ Ġ* Ġfunction Ġwill Ġbe Ġexecuted Ġonce Ġper Ġparent Ġinvocation . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġprepare TestCase ( testCase : ĠTestCase ) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExec uted Ġeach Ġtime Ġa Ġ[ TestCase ] Ġhas Ġcompleted . ĊĠĠ Ġ* ĠThis Ġfunction Ġwill Ġalways Ġbe Ġexecuted Ġeven Ġif Ġthe Ġscope Ġis Ġskipped . ĊĠĠ Ġ* ĠThe Ġresult Ġpassed Ġin Ġhere Ġwill Ġbe Ġafter Ġtest Ġscope Ġinter ception . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġa Ġparent Ġscope Ġhas Ġbeen Ġconfigured Ġwith Ġmultiple Ġinv ocations , Ġthen Ġthis ĊĠĠ Ġ* Ġfunction Ġwill Ġbe Ġexecuted Ġonce Ġper Ġparent Ġinvocation . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġcomplete TestCase ( testCase : ĠTestCase , Ġresult : ĠTest Result ) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInv oked Ġfor Ġeach Ġexecution Ġof Ġthe Ġtest Ġinside Ġa Ġ[ Test Set ]. ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġa Ġscope Ġis Ġconfigured Ġwith Ġinv ocations Ġ= Ġk , Ġthen Ġthis Ġfunction ĊĠĠ Ġ* Ġwill Ġbe Ġinvoked Ġk Ġtimes . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġk Ġindicates Ġwhich Ġposition Ġin Ġthe Ġ[ Test Set ] Ġthis Ġexecution Ġis . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġtest Run ( set : ĠTest Set , Ġk : ĠInt ) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInv oked Ġwhen Ġall Ġthe Ġruns Ġof Ġa Ġ[ Test Set ] Ġhave Ġcompleted . ĊĠĠ Ġ* ĠThis Ġfunction Ġwill Ġonly Ġbe Ġinvoked Ġif Ġa Ġtest Ġscope Ġis Ġactually Ġbeing Ġexecuted . ĊĠĠ Ġ* ĠThe Ġresult Ġpassed Ġin Ġhere Ġis Ġthe Ġresult Ġdirectly Ġfrom Ġthe Ġtest Ġrun , Ġbefore Ġany Ġinter ception . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġcomplete Test Set ( set : ĠTest Set , Ġresult : ĠTest Result ) Ġ{} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInv oked Ġeach Ġtime Ġan Ġinstance Ġof Ġa Ġ[ Spec ] Ġis Ġcreated . ĊĠĠ Ġ* ĠA Ġspec Ġmay Ġbe Ġcreated Ġonce Ġper Ġclass , Ġor Ġone Ġper Ġ[ TestCase ]. ĊĠĠ Ġ*/ ĊĠ Ġfun Ġspec Created ( spec : ĠSpec ) Ġ{} Ċ Ċ }