package Ġworld . ph ant asm al . web . quest Editor . controllers Ċ Ċ import Ġworld . ph ant asm al . observable . cell . observe Now Ċ import Ġworld . ph ant asm al . web . quest Editor . models . Quest Event Action Model Ċ import Ġworld . ph ant asm al . web . quest Editor . models . Quest Event Model Ċ import Ġworld . ph ant asm al . web . test . Web TestSuite Ċ import Ġworld . ph ant asm al . web . test . create Quest Model Ċ import Ġkotlin . test .* Ċ Ċ class ĠEvents Controller Tests Ġ: ĠWeb TestSuite Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Event () Ġ= Ġtest Async Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup . ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġcomponents . quest Editor Store ĊĠĠĠĠĠĠĠ Ġval Ġquest Ġ= Ġcreate Quest Model ( map Design ations Ġ= Ġmap Of ( 1 Ġto Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Quest ( quest ) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Area ( quest . area Variants . value . first (). area ) ĊĠĠĠĠĠĠĠ Ġstore . make Main Undo Current () ĊĊĠĠĠĠĠĠĠ Ġval Ġctrl Ġ= Ġdis poser . add ( Events Controller ( store )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġan Ġevent . ĊĠĠĠĠĠĠĠ Ġctrl . add Event () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquest . events . value . size ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUndo . ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Undo . value ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( store . can Redo . value ) ĊĊĠĠĠĠĠĠĠ Ġstore . undo () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( quest . events . value . isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRed o . ĊĠĠĠĠĠĠĠ ĠassertFalse ( store . can Undo . value ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Redo . value ) ĊĊĠĠĠĠĠĠĠ Ġstore . redo () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquest . events . value . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Undo . value ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( store . can Redo . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Action () Ġ= Ġtest Async Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup . ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġcomponents . quest Editor Store ĊĠĠĠĠĠĠĠ Ġval Ġquest Ġ= Ġcreate Quest Model ( map Design ations Ġ= Ġmap Of ( 1 Ġto Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Quest ( quest ) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Area ( quest . area Variants . value . first (). area ) ĊĠĠĠĠĠĠĠ Ġstore . make Main Undo Current () ĊĊĠĠĠĠĠĠĠ Ġval Ġctrl Ġ= Ġdis poser . add ( Events Controller ( store )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġan Ġevent Ġand Ġan Ġaction . ĊĠĠĠĠĠĠĠ Ġctrl . add Event () ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġctrl . events . value . first () ĊĠĠĠĠĠĠĠ Ġctrl . addAction ( event , ĠQuest Event Action Model . Door . Unlock . SHORT _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠUndo . ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Undo . value ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( store . can Redo . value ) ĊĊĠĠĠĠĠĠĠ Ġstore . undo () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( event . actions . value . isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRed o . ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Undo . value ) Ġ// ĠCan Ġstill Ġundo Ġevent Ġcreation Ġat Ġthis Ġpoint . ĊĠĠĠĠĠĠĠ ĠassertTrue ( store . can Redo . value ) ĊĊĠĠĠĠĠĠĠ Ġstore . redo () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġevent . actions . value . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Go To Event () Ġ= Ġtest Async Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSetup . ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġcomponents . quest Editor Store ĊĠĠĠĠĠĠĠ Ġ// ĠQuest Ġwith Ġtwo Ġevents , Ġthe Ġfirst Ġevent Ġtriggers Ġthe Ġsecond Ġevent . ĊĠĠĠĠĠĠĠ Ġval Ġquest Ġ= Ġcreate Quest Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Design ations Ġ= Ġmap Of ( 1 Ġto Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuest Event Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Id Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection Id Ġ= Ġ 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwave Id Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunknown Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġmutable ListOf ( Quest Event Action Model . Trigger Event ( 1 0 1 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuest Event Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Id Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection Id Ġ= Ġ 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwave Id Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunknown Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġmutable ListOf ( Quest Event Action Model . Door . Unlock ( 7 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Quest ( quest ) ĊĠĠĠĠĠĠĠ Ġstore . setCurrent Area ( quest . area Variants . value . first (). area ) ĊĊĠĠĠĠĠĠĠ Ġval Ġctrl Ġ= Ġdis poser . add ( Events Controller ( store )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcan Go To Event Ġ= Ġctrl . can Go To Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ctrl . events [ 0 ]. actions [ 0 ] Ġas ĠQuest Event Action Model . Trigger Event ). eventId ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġtest Ġthe Ġobserved Ġvalue Ġinstead Ġof Ġthe Ġcell 's Ġvalue Ġproperty . ĊĠĠĠĠĠĠĠ Ġvar Ġcan Go To Event Value : ĠBoolean ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġdis poser . add ( can Go To Event . observe Now Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( can Go To Event Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Go To Event Value Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġcan Go To Event Value ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠLet Ġevent Ġ 1 0 0 Ġpoint Ġto Ġnon existent Ġevent Ġ 1 0 2 . ĊĠĠĠĠĠĠĠ Ġcan Go To Event Value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġctrl . set ActionEvent Id ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctrl . events [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctrl . events [ 0 ]. actions [ 0 ] Ġas ĠQuest Event Action Model . Trigger Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 2 , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġcan Go To Event Value ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġevent Ġ 1 0 2 . ĊĠĠĠĠĠĠĠ Ġcan Go To Event Value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġctrl . select Event ( null ) Ġ// ĠDe select Ġso Ġthe Ġnext Ġevent Ġwill Ġbe Ġadded Ġat Ġthe Ġend Ġof Ġthe Ġlist . ĊĠĠĠĠĠĠĠ Ġctrl . add Event () ĊĠĠĠĠĠĠĠ Ġctrl . setId ( ctrl . events . value . last (), Ġ 1 0 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġcan Go To Event Value ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġevent Ġ 1 0 2 . ĊĠĠĠĠĠĠĠ Ġcan Go To Event Value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġctrl . remove Event ( ctrl . events . value . last ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġcan Go To Event Value ) ĊĠĠĠ Ġ} Ċ } Ċ