package Ġch . source motion . vertx . redis . client . heim d all . testing ĊĊ Ċ import Ġio . vertx . core . Context Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . event bus . EventBus Ċ import Ġio . vertx . junit 5 . Checkpoint Ċ import Ġio . vertx . junit 5 . Vert x Extension Ċ import Ġio . vertx . junit 5 . Vert x TestContext Ċ import Ġio . vertx . kotlin . coroutines . dispatcher Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Vert x Extension :: class ) Ċ internal Ġabstract Ġclass ĠAbstract Vert x Test Ġ{ ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġvert x : ĠVert x ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġtest Scope : ĠCor outine Scope ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġevent Bus : ĠEvent Bus ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġinternal Ġfun ĠsetUp Vert x ( vertx : ĠVert x ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . vertx Ġ= Ġvert x ĊĠĠĠĠĠĠĠ Ġevent Bus Ġ= Ġvert x . event Bus () ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġvert x . or Create Context ĊĠĠĠĠĠĠĠ Ġtest Scope Ġ= ĠCor outine Scope ( context . dispatcher ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBecause Ġ@ Before * Ġand Ġ@ After * Ġcan Ġget Ġstarted Ġconcurrent ly Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġasync Before Or After ( block : Ġsuspend ĠCor outine Scope . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking ( context . dispatcher ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġfun ĠVert x TestContext . async ( block : Ġsuspend ĠCor outine Scope . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ Ġblock () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġcomplete Now () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġfail Now ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠVert x TestContext . async ( ĊĠĠĠĠĠĠĠ Ġcheckpoint : ĠCheck point , ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠCor outine Scope .( Checkpoint ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ Ġblock ( checkpoint ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġcheckpoint . flag () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġfail Now ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠVert x TestContext . async ( ĊĠĠĠĠĠĠĠ Ġcheck points : ĠInt , ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠCor outine Scope .( Checkpoint ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ= Ġasync ( checkpoint ( check points Ġ+ Ġ 1 ), Ġblock ) ĊĊĠĠĠ Ġprotected Ġfun ĠVert x TestContext . async Delayed ( ĊĠĠĠĠĠĠĠ Ġcheck points : ĠInt , ĊĠĠĠĠĠĠĠ Ġdelay : ĠLong Ġ= Ġ 2 0 0 0 , ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠCor outine Scope .( Checkpoint ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ= Ġasync ( checkpoint ( check points Ġ+ Ġ 1 )) Ġ{ Ġcheckpoint Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġcontrol Checkpoint Ġ= Ġcheckpoint () ĊĠĠĠĠĠĠĠ Ġblock ( checkpoint ) ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġstart Ġan Ġown Ġcoroutine Ġfor Ġthe Ġcontrol Ġcheckpoint , Ġso Ġthe Ġusual Ġtest Ġblock Ġcan Ġend Ġand Ġjust Ġthe Ġcontrol ĊĠĠĠĠĠĠĠ Ġ// Ġcheckpoint Ġis Ġpending . ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( delay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Checkpoint . flag () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ