package Ġcom . github . wh yr ising . re compose Ċ Ċ import Ġcom . github . wh yr ising . re compose . regist rar . Kinds . C of x Ċ import Ġcom . github . wh yr ising . re compose . regist rar . Kinds . Event Ċ import Ġcom . github . wh yr ising . re compose . regist rar . Kinds . Fx Ċ import Ġcom . github . wh yr ising . re compose . regist rar . Kinds . Sub Ċ import Ġcom . github . wh yr ising . re compose . regist rar . get Handler Ċ import Ġcom . github . wh yr ising . re compose . regist rar . register Handler Ċ import Ġcom . github . wh yr ising . y . collections . core . m Ċ import Ġcom . github . wh yr ising . y . collections . core . v Ċ import Ġcom . github . wh yr ising . y . collections . vector . IP ers istent Vector Ċ import Ġio . kot est . core . spec . style . Free Spec Ċ import Ġio . kot est . matchers . ints . shouldBe Exactly Ċ import Ġio . kot est . matchers . types . shouldBe Same Instance As Ċ import Ġio . kot est . matchers . types . should Not Be Same Instance As Ċ import Ġcom . github . wh yr ising . re compose . regist rar . register Ġas Ġmy Register Ċ Ċ class ĠRegist rar Test Ġ: ĠFree Spec ({ ĊĠĠĠ Ġafter Test Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Register . reset ( m ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" register Handler ()/ get Handler ( kind )" Ġ- Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Fx Ġkind " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ": fx " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn Ġ= Ġ{ Ġ_: ĠAny Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Fn Ġ= Ġregister Handler ( id , ĠF x , Ġhandler Fn ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġget Handler ( Fx , Ġid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ĠshouldBe Same Instance As Ġhandler Fn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh Fn ĠshouldBe Same Instance As Ġhandler Fn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Event Ġkind " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ": event " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintercept ors Ġ= Ġv < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠEvent , Ġintercept ors ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġget Handler ( Event , Ġid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ĠshouldBe Same Instance As Ġintercept ors ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" C of x Ġkind " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ": co fx " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn : Ġ( Any ) Ġ-> ĠAny Ġ= Ġ{ Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠC of x , Ġhandler Fn ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġget Handler ( C of x , Ġid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Register (). count ĠshouldBe Exactly Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ĠshouldBe Same Instance As Ġhandler Fn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Sub Ġkind " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ": sub " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn : Ġ( Any , ĠIP ers istent Vector < Any >) Ġ-> ĠAny Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠSub , Ġhandler Fn ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġget Handler ( Sub , Ġid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ĠshouldBe Same Instance As Ġhandler Fn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" two Ġkinds Ġof Ġhandlers Ġwith Ġsame Ġid Ġshould Ġregister Ġseparately " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ": id " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn 1 Ġ= Ġ{ Ġ_: ĠAny Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn 2 Ġ= Ġ{ Ġ_: ĠAny Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn 3 Ġ= Ġ{ Ġ_: ĠAny Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Fn 4 Ġ= Ġ{ Ġ_: ĠAny Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠF x , Ġhandler Fn 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠC of x , Ġhandler Fn 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠEvent , Ġhandler Fn 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Handler ( id , ĠSub , Ġhandler Fn 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler 1 Ġ= Ġget Handler ( Fx , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler 2 Ġ= Ġget Handler ( C of x , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler 3 Ġ= Ġget Handler ( Event , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler 4 Ġ= Ġget Handler ( Sub , Ġid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 1 ĠshouldBe Same Instance As Ġhandler Fn 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 2 ĠshouldBe Same Instance As Ġhandler Fn 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 3 ĠshouldBe Same Instance As Ġhandler Fn 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 4 ĠshouldBe Same Instance As Ġhandler Fn 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 1 Ġshould Not Be Same Instance As Ġhandler 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 2 Ġshould Not Be Same Instance As Ġhandler 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 3 Ġshould Not Be Same Instance As Ġhandler 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler 4 Ġshould Not Be Same Instance As Ġhandler 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ