package Ġio . kot est . extensions . junit 5 Ċ Ċ import Ġio . kot est . core . config . Project Configuration Ċ import Ġio . kot est . core . descriptors . to Descriptor Ċ import Ġio . kot est . core . spec . Spec Ċ import Ġio . kot est . core . test . TestCase Ċ import Ġio . kot est . engine . test . names . get DisplayName Formatter Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . extension . Extension Context Ċ import Ġorg . junit . jupiter . api . extension . Test Instances Ċ import Ġjava . lang . reflect . Annotated Element Ċ import Ġjava . lang . reflect . Method Ċ import Ġjava . util . Optional Ċ import Ġjava . util . function . Function Ċ Ċ class ĠK ot est Extension Context ( ĊĠĠ Ġprivate Ġval Ġspec : ĠSpec , ĊĠĠ Ġprivate Ġval ĠtestCase : ĠTestCase ? Ċ ) Ġ: ĠExtension Context Ġ{ ĊĊĠĠ Ġprivate Ġval Ġformatter Ġ= Ġget DisplayName Formatter ( Project Configuration (). registry , ĠProject Configuration ()) ĊĊĠĠ Ġoverride Ġfun ĠgetParent (): ĠOptional < Extension Context > Ġ= ĠOptional . empty () ĊĠĠ Ġoverride Ġfun Ġget Root (): ĠExtension Context Ġ= Ġthis ĊĊĠĠ Ġoverride Ġfun Ġget UniqueId (): ĠString Ġ= Ġspec :: class . to Descriptor (). id . value ĊĊĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny ?> Ġget Configuration Parameter ( key : ĠString ?, Ġtransformer : ĠFunction < String , ĠT >? ): ĠOptional < T > Ġ{ ĊĠĠĠĠĠ Ġreturn ĠOptional . empty () ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ= Ġwhen Ġ( testCase ) Ġ{ ĊĠĠĠĠĠ Ġnull Ġ-> Ġformatter . format ( spec :: class ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġformatter . format ( testCase ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġget Tags (): ĠMutable Set < String > Ġ= Ġspec . tags (). map Ġ{ Ġit . name Ġ}. to Mutable Set () ĊĊĠĠ Ġoverride Ġfun Ġget Element (): ĠOptional < Annotated Element > Ġ= ĠOptional . empty () ĊĊĠĠ Ġoverride Ġfun Ġget TestClass (): ĠOptional < Class <* >> Ġ= ĠOptional . of ( spec :: class . java ) ĊĠĠ Ġoverride Ġfun Ġget TestMethod (): ĠOptional < Method > Ġ= ĠOptional . empty () ĊĊĠĠ Ġoverride Ġfun Ġget Test Instance Lifecycle (): ĠOptional < Test Instance . Lifecycle > Ġ= ĊĠĠĠĠĠ ĠOptional . of ( Test Instance . Lifecycle . PER _ CLASS ) ĊĊĠĠ Ġoverride Ġfun Ġget Test Instance (): ĠOptional < Any > Ġ= Ġwhen Ġ( testCase ) Ġ{ ĊĠĠĠĠĠ Ġnull Ġ-> ĠOptional . of ( spec ) ĊĠĠĠĠĠ Ġelse Ġ-> ĠOptional . of ( testCase ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġget Test Instances (): ĠOptional < Test Instances > Ġ= ĠOptional . of ( K ot est Test Instances ( spec )) ĊĊĠĠ Ġoverride Ġfun Ġget ExecutionException (): ĠOptional < Throwable > Ġ= ĠOptional . empty () ĊĠĠ Ġoverride Ġfun Ġget Configuration Parameter ( key : ĠString ?): ĠOptional < String > Ġ= ĠOptional . empty () ĊĊĠĠ Ġoverride Ġfun Ġpublish Report Entry ( map : ĠMutable Map < String , ĠString > ?) Ġ{} ĊĊĠĠ Ġoverride Ġfun Ġget Store ( namespace : ĠExtension Context . Namespace ): ĠExtension Context . Store Ġ{ ĊĠĠĠĠĠ Ġreturn ĠExtension Store ( namespace ) ĊĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠK ot est Test Instances ( private Ġval Ġinstance : ĠSpec ) Ġ: ĠTest Instances Ġ{ ĊĠĠ Ġoverride Ġfun Ġget Inner most Instance (): ĠAny Ġ= Ġinstance ĊĠĠ Ġoverride Ġfun Ġget En closing Instances (): ĠMutable List < Any > Ġ= Ġmutable ListOf ( instance ) ĊĠĠ Ġoverride Ġfun ĠgetAll Instances (): ĠMutable List < Any > Ġ= Ġmutable ListOf ( instance ) ĊĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny > Ġfind Instance ( required Type : ĠClass < T >): ĠOptional < T > Ġ= ĊĠĠĠĠĠ Ġwhen Ġ( required Type . name ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġinstance :: class . java . name Ġ-> ĠOptional . of ( instance Ġas ĠT ) ĊĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠOptional . empty () ĊĠĠĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠExtension Store ( private Ġval Ġnamespace : ĠExtension Context . Namespace ) Ġ: ĠExtension Context . Store Ġ{ ĊĊĠĠ Ġprivate Ġval Ġmap Ġ= Ġmutable Map Of < Pair < Extension Context . Namespace , ĠAny >, ĠAny ?> () ĊĊĠĠ Ġoverride Ġfun Ġget ( key : ĠAny ): ĠAny ? Ġ= Ġmap [ key ] ĊĊĠĠ Ġoverride Ġfun Ġ< V Ġ: ĠAny > Ġget ( key : ĠAny , Ġrequired Type : ĠClass < V >): ĠV ? Ġ{ ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap [ namespace Ġto Ġkey ] ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠ Ġvalue Ġ== Ġnull Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠ Ġvalue :: class . java . name Ġ== Ġrequired Type . name Ġ-> Ġvalue Ġas ĠV ĊĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Value Ġis Ġnot Ġof Ġrequired Ġtype Ġ$ required Type ") ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġ< K Ġ: ĠAny , ĠV Ġ: ĠAny > Ġget Or Compute If Absent ( key : ĠK , Ġdefault Creator : ĠFunction < K , ĠV >): ĠAny ? Ġ{ ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġvalue Ġ= Ġmap [ namespace Ġto Ġkey ]) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġdefault Creator . apply ( key ) ĊĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġ< K Ġ: ĠAny , ĠV Ġ: ĠAny > Ġget Or Compute If Absent ( ĊĠĠĠĠĠ Ġkey : ĠK , ĊĠĠĠĠĠ Ġdefault Creator : ĠFunction < K , ĠV >, ĊĠĠĠĠĠ Ġrequired Type : ĠClass < V > ĊĠĠ Ġ): ĠV ? Ġ{ ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap [ namespace Ġto Ġkey ] ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠ Ġvalue Ġ== Ġnull Ġ-> Ġdefault Creator . apply ( key ) ĊĠĠĠĠĠĠĠĠ Ġvalue :: class . java . name Ġ== Ġrequired Type . name Ġ-> Ġvalue Ġas ĠV ĊĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Value Ġis Ġnot Ġof Ġrequired Ġtype Ġ$ required Type ") ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġput ( key : ĠAny , Ġvalue : ĠAny ?) Ġ{ ĊĠĠĠĠĠ Ġmap [ namespace Ġto Ġkey ] Ġ= Ġvalue ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġremove ( key : ĠAny ): ĠAny ? Ġ{ ĊĠĠĠĠĠ Ġreturn Ġmap . remove ( key ) ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġ< V Ġ: ĠAny > Ġremove ( key : ĠAny , Ġrequired Type : ĠClass < V >): ĠV ? Ġ{ ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmap [ namespace Ġto Ġkey ] ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠ Ġvalue Ġ== Ġnull Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠ Ġvalue :: class . java . name Ġ== Ġrequired Type . name Ġ-> Ġmap . remove ( namespace Ġto Ġkey ) Ġas ĠV ĊĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Value Ġis Ġnot Ġof Ġrequired Ġtype Ġ$ required Type ") ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ