package Ġcom . sk sam uel . kot est . engine . extensions . test . test extension Ċ Ċ import Ġio . kot est . core . extensions . TestCase Extension Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . core . test . Enabled Ċ import Ġio . kot est . core . test . TestCase Ċ import Ġio . kot est . core . test . TestResult Ċ import Ġio . kot est . engine . test . to TestResult Ċ import Ġkotlin . time . Duration . Companion . milliseconds Ċ Ċ // Ġthis Ġtests Ġthat Ġwe Ġcan Ġmanipulate Ġthe Ġresult Ġof Ġa Ġtest Ġcase Ġfrom Ġan Ġextension Ċ class ĠTestCase Extension Around Ad vice Test Ġ: ĠString Spec () Ġ{ ĊĠĠ Ġobject ĠMy Ext Ġ: ĠTestCase Extension Ġ{ ĊĠĠĠĠĠ Ġoverride Ġsuspend Ġfun Ġintercept ( testCase : ĠTestCase , Ġexecute : Ġsuspend Ġ( TestCase ) Ġ-> ĠTest Result ): ĠTest Result Ġ{ ĊĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( testCase . descriptor . id . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 1 " Ġ-> ĠTest Result . Ignored ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 2 " Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( execute ( testCase )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTest Result . Error , Ġis ĠTest Result . Failure Ġ-> ĠTest Result . Success ( 0 . milliseconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAssertionError (" boom "). to TestResult ( 0 . milliseconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test 3 " Ġ-> Ġexecute ( testCase . copy ( config Ġ= ĠtestCase . config . copy ( enabled Ġ= Ġ{ ĠEnabled . disabled Ġ} ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġexecute ( testCase ) ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠ Ġoverride Ġfun Ġextensions () Ġ= ĠlistOf ( My Ext ) ĊĊĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠ Ġ// Ġthis Ġexception Ġshould Ġnot Ġbe Ġthrown Ġas Ġthe Ġextension Ġwill Ġskip Ġevaluation Ġof Ġthe Ġtest ĊĠĠĠĠĠ Ġ" test 1 " Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// Ġthis Ġexception Ġwill Ġbe Ġthrown Ġbut Ġthen Ġthe Ġtest Ġextension Ġwill Ġoverride Ġthe Ġfailed Ġresult Ġto Ġreturn Ġa Ġsuccess ĊĠĠĠĠĠ Ġ" test 2 " Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// Ġconfig Ġfor Ġthis Ġtest Ġshould Ġbe Ġover rid en Ġso Ġthat Ġthe Ġtest Ġis Ġactually Ġdisabled , Ġand Ġtherefore Ġthe Ġexception Ġwill Ġnot Ġbe Ġthrown ĊĠĠĠĠĠ Ġ" test 3 ". config ( enabled Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException () ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ