package Ġcom . mir u ken . callback . policy Ċ Ċ import Ġcom . mir u ken . callback .* Ċ import Ġcom . mir u ken . callback . policy . bindings . Member Binding Ċ import Ġio . github . class graph . Class Graph Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertSame Ċ Ċ class ĠMutable Handler Descriptor Factory Test Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfactory : ĠHandler Descriptor Factory ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġfactory Ġ= ĠMutable Handler Descriptor Factory () ĊĠĠĠĠĠĠĠ ĠHandler Descriptor Factory . use Factory ( factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Cannot Ġcreate Ġdescriptors Ġfor Ġinterfaces `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Handling >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Cannot Ġcreate Ġdescriptors Ġfor Ġprimitive Ġtypes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Int >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Cannot Ġcreate Ġdescriptors Ġfor Ġcollection Ġclasses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < List < Foo >>() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Ob t ains Ġsame Ġdescriptor Ġper ĠHandler Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfactory . register Descriptor < Test Handler . Good >() ĊĠĠĠĠĠĠĠ ĠassertNotNull ( descriptor ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Test Handler . Good :: class , Ġdescriptor . handler Class ) ĊĠĠĠĠĠĠĠ ĠassertSame ( descriptor , Ġfactory . register Descriptor < Test Handler . Good >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Ob t ains Ġdescriptor Ġwith ĠHandles Ġmethod Ġusing Ġopen Ġgener ics `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfactory . register Descriptor < Test Handler . Open Gener ics >() ĊĠĠĠĠĠĠĠ ĠassertNotNull ( descriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Reject s Ġdescriptor Ġwith ĠHandles Ġmethod Ġwith Ġno Ġparameters `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Policy Rejected Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Test Handler . No Parameters >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Reject s Ġdescriptor Ġwith ĠHandles Ġmethod Ġwith ĠNothing Ġparameter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Policy Rejected Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Test Handler . Nothing Parameter >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Ob t ains Ġsame Ġdescriptor Ġper ĠProvider Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfactory . register Descriptor < Test Provider . Good >() ĊĠĠĠĠĠĠĠ ĠassertSame ( descriptor , Ġfactory . register Descriptor < Test Provider . Good >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Ob t ains Ġdescriptor Ġfor ĠProvider Ġwith Ġproperties `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfactory . register Descriptor < Test Provider . Properties >() ĊĠĠĠĠĠĠĠ ĠassertNotNull ( descriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Ob t ains Ġdescriptor Ġfor ĠProvider Ġwith Ġgeneric Ġproperties `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġfactory . register Descriptor < Test Provider . Generic Properties < Test Provider . Foo >>() ĊĠĠĠĠĠĠĠ ĠassertNotNull ( descriptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Reject s Ġdescriptor Ġwith ĠProvides Ġmethod Ġreturning ĠNothing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Policy Rejected Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Test Provider . Returns Nothing >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Reject s Ġdescriptor Ġwith ĠProvides Ġmethod Ġreturning ĠNothing Ġtaking Ġcallback `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Policy Rejected Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Test Provider . Returns Nothing With Callback >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Reject s Ġdescriptor Ġwith ĠProvides Ġmethod Ġreturning ĠUnit `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Policy Rejected Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Test Provider . Returns Unit >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Vis its Ġall Ġdescriptor Ġmember Ġbindings `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbindings Ġ= Ġmutable ListOf < Member Binding >() ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ Ġ= ĠMutable Handler Descriptor Factory Ġ{ Ġdescriptor , Ġbinding Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor . handler Class Ġ=== ĠExample Handler :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbindings . add ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfactory . register Descriptor < Example Handler >() ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġbindings . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` Sc ans Ġclasspath `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandling Ġ= ĠHandling :: class . java . name ĊĠĠĠĠĠĠĠ ĠClass Graph () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable All Info () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. whitelist Packages ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample Handler :: class . java .` package `. name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandling :: class . java .` package `. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scan (). use Ġ{ Ġscan Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandlers Ġ= Ġscan . get Classes Implement ing ( handling ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( handler Ġin Ġhandlers ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġclass ĠExample Handler Ġ@ Provides Ġconstructor () Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Handles ĊĠĠĠĠĠĠĠ Ġfun Ġhello ( foo : ĠFoo ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġ@ get : Provides ĊĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= ĠFoo () ĊĠĠĠ Ġ} Ċ }