package Ġcom . pu dd le alley . splash Ċ Ċ import Ġio . kot lint est . TestCase Ċ import Ġio . kot lint est . matchers . boolean . shouldBe False Ċ import Ġio . kot lint est . matchers . boolean . shouldBe True Ċ import Ġio . kot lint est . matchers . types . should Not BeNull Ċ import Ġio . kot lint est . should Throw Ċ import Ġio . kot lint est . specs . Describe Spec Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . spy k Ċ import Ġio . mock k . verify Ċ import Ġjava . lang . IllegalStateException ĊĊ Ġclass ĠExample State Ġ: ĠState Ċ Ġclass ĠChange State Ġ: ĠPayload Ċ Ġclass ĠIgnore State Ġ: ĠPayload Ċ Ċ private Ġclass ĠTest Flux Store ( dispatcher : ĠDispatcher ) Ġ: ĠFlux Store ( dispatcher ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Dispatch ( payload : ĠPayload ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( payload ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChange State Ġ-> Ġemit Change () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġ Ġclass ĠIllegal Flux Store ( dispatcher : ĠDispatcher ) Ġ: ĠFlux Store ( dispatcher ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Dispatch ( payload : ĠPayload ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġillegal Emit () Ġ= Ġemit Change () Ċ } Ċ Ċ class ĠFlux Store Test Ġ: ĠDescribe Spec () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdispatcher Ġ= Ġspy k < Dispatcher >() ĊĠĠĠ Ġprivate Ġvar Ġflux Store Ġ= ĠTest Flux Store ( dispatcher ) ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Test ( testCase : ĠTestCase ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . before Test ( testCase ) ĊĠĠĠĠĠĠĠ Ġdispatcher Ġ= Ġspy k < Dispatcher >() ĊĠĠĠĠĠĠĠ Ġflux Store Ġ= ĠTest Flux Store ( dispatcher ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdescribe (" Flux Store ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" registers Ġa Ġcallback Ġwith Ġthe Ġdispatcher ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . register ( any ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" throws Ġwhen Ġ__ emit Change () Ġis Ġinvoked Ġoutside Ġof Ġa Ġdispatch ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġillegal Store Ġ= ĠIllegal Flux Store ( dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġillegal Store . il legal Emit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" throws Ġwhen Ġhas Changed () Ġis Ġinvoked Ġoutside Ġof Ġa Ġdispatch ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . has Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġan Ġevent Ġon Ġstate Ġchange ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ Ġdispatcher . is Dispatch ing () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ: ĠStore Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . addListener ( callback ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Change State ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" ex poses Ġwhether Ġthe Ġstate Ġhas Ġchanged Ġduring Ġcurrent Ġdispatch ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ Ġdispatcher . is Dispatch ing () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Change State ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . has Changed (). shouldBe True () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Ignore State ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . has Changed (). shouldBe False () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" ex poses Ġthe Ġdispatch Ġtoken Ġin Ġa Ġgetter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . get Dispatch Token (). should Not BeNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" calls Ġtwo Ġlisteners Ġwhen Ġattached ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ Ġdispatcher . is Dispatch ing () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ: ĠStore Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback 1 Ġ: ĠStore Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . addListener ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . addListener ( callback 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Change State ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ Ġcallback 1 . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" re moves Ġlistener ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġ Ġdispatcher . is Dispatch ing () Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback Ġ: ĠStore Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback 1 Ġ: ĠStore Callback Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . addListener ( callback )() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflux Store . addListener ( callback 1 )() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Change State ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġcallback . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ){ Ġcallback 1 . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }