package Ġcc . pop k orn Ċ Ċ import Ġcc . pop k orn . core . Injector Ċ import Ġcc . pop k orn . core . exceptions . Ass isted NotFoundException Ċ import Ġcc . pop k orn . data .* Ċ import Ġkotlin . test .* Ċ Ċ /** Ċ Ġ* ĠClass Ġto Ġtest Ġcre ations Ċ Ġ* Ċ Ġ* Ġ@ author ĠP au ĠCor b ella Ċ Ġ* Ġ@ since Ġ 2 . 1 . 0 Ċ Ġ*/ Ċ internal Ġclass ĠCreation Tests Ġ: ĠPop K orn Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Plain Ok () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance 1 Ġ= Ġinjector . create ( TestClass By App :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġinstance 2 Ġ= Ġinjector . create ( TestClass By App :: class ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( instance 1 Ġ!== Ġinstance 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Override Ok () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj 1 Ġ= Ġinjector . create ( Test Cascade Class :: class ) ĊĠĠĠĠĠĠĠ Ġval Ġobj 2 Ġ= Ġinjector . create ( Test Cascade Class :: class ) ĊĠĠĠĠĠĠĠ ĠassertSame ( obj 1 . param 1 , Ġobj 2 . param 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuse Ġ= ĠTest Class By App ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġobj 3 Ġ= Ġinjector . create ( Test Cascade Class :: class ) Ġ{ Ġoverride ( use ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertSame ( use , Ġobj 3 . param 1 ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( obj 1 . param 1 , Ġobj 3 . param 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Params Not Ass isted () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Ass isted NotFoundException > Ġ{ Ġinjector . create ( TestClass By New Ass isted :: class ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Params Missing Ass isted () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Ass isted NotFoundException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinjector . create ( TestClass By New Ass isted :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassist ( 3 4 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Params Ok () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj 1 Ġ= Ġinjector . create ( TestClass By New Ass isted :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" test ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist ( 3 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġobj 1 . param 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 4 , Ġobj 1 . param 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj 2 Ġ= Ġinjector . create ( Test Interface :: class , Ġ" assist 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" test ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist ( 3 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( obj 1 :: class , Ġobj 2 :: class ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( obj 1 Ġ!== Ġobj 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Params Same Type Params Not Ass isted () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Ass isted NotFoundException > Ġ{ Ġinjector . create ( TestClass By New Ass isted 2 :: class ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Params Same Type Ok () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠInject or ( Test Resolver Pool (), ĠTest Provider Pool ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj 1 Ġ= Ġinjector . create ( TestClass By New Ass isted 2 :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" test ", Ġ" env 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" more ", Ġ" env 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġobj 1 . param 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" more ", Ġobj 1 . param 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . resolvers . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj 2 Ġ= Ġinjector . create ( Test Interface :: class , Ġ" assist 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" test ", Ġ" env 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassist (" more ", Ġ" env 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( obj 1 :: class , Ġobj 2 :: class ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( obj 1 Ġ!== Ġobj 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġinjector . instances . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġinjector . resolvers . size ) Ġ// ĠResolver s Ġhave Ġto Ġbe Ġcached ĊĠĠĠ Ġ} Ċ Ċ } Ċ