package Ġcom . github . ni uh f 0 4 5 2 . ex ile . inject Ċ Ċ import Ġcom . github . ni uh f 0 4 5 2 . ex ile . inject . binder . Autow ire Factory Binder Ċ import Ġcom . github . ni uh f 0 4 5 2 . ex ile . test . factory 0 . Autow ire Test Interface A Ċ import Ġcom . github . ni uh f 0 4 5 2 . ex ile . test . factory 0 . TestClass A Factory Ċ import Ġcom . github . ni uh f 0 4 5 2 . ex ile . test . factory 1 . TestClass Ċ import Ġio . kot lint est . matchers . string . should Contain Ċ import Ġio . kot lint est . should Throw Ċ import Ġio . kot lint est . specs . Fun Spec Ċ Ċ class ĠAut ow ire Factory Binder Test Ġ: ĠFun Spec ({ ĊĠĠĠ Ġfun Ġfor Correct Case (): ĠInject or Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInject or . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Package ( Autow ire Test Interface A :: class . java . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binder ( Autow ire Factory Binder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Scope () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" An ĠAut ow ire Factory Binder Ġshould Ġwork ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= Ġfor Correct Case () ĊĠĠĠĠĠĠĠ Ġinjector . getInstance ( Autow ire Test Interface A :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" An ĠAut ow ire Factory Binder Ġshould Ġbind Ġto Ġmethod ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= Ġfor Correct Case () ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġinjector . get Bindings ( Type Key ( Autow ire Test Interface A :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Single () ĊĠĠĠĠĠĠĠ Ġbinding . toString () Ġshould Contain Ġ" Method (${ TestClass A Factory :: get })" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" An ĠAut ow ire Factory Binder Ġshould ĠNOT Ġbind Ġto Ġgeneric Ġmethod ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Package ( TestClass :: class . java . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binder ( Autow ire Factory Binder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġshould Throw < Inject Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinjector . getInstance ( String :: class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ