/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠKevin ĠH err on Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . digital pe tri . strict machine . dsl Ċ Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean ĊĊ Ċ class ĠAction From Builder Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Action Ġbuilt Ġwith Ġon Transition From Ġusing Ġto ĠInstance `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest On Transition From Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto ( State . S 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Action Ġbuilt Ġwith Ġon Transition From Ġusing Ġto ĠPredicate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest On Transition From Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ{ Ġs Ġ-> Ġs Ġ== ĠState . S 2 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Action Ġbuilt Ġwith Ġon Transition From Ġusing Ġto ĠAny `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest On Transition From Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Any () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest On Transition From ( configure To : ĠAction From Builder < State , ĠEvent >. () Ġ-> ĠV ia Builder < State , ĠEvent >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfb Ġ= ĠF sm Builder < State , ĠEvent >() ĊĊĠĠĠĠĠĠĠ Ġfb .` when `( State . S 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on ( Event . E 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transition To ( State . S 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexecuted Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction From Builder Ġ= Ġfb . on Transition From ( State . S 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġvia Builder Ġ= Ġaction From Builder . configure To () ĊĊĠĠĠĠĠĠĠ Ġvia Builder . via ( Event . E 1 ). execute Ġ{ Ġexecuted . set ( true ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfb . build ( State . S 1 ). fire Event Blocking ( Event . E 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( executed . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" expected Ġexecute Ġcallback Ġto Ġset Ġexecuted = true " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ