/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠApp mat t us ĠLimited Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . app mat t us . kotlin fixture . resolver Ċ Ċ import Ġcom . app mat t us . kotlin fixture . TestContext Ċ import Ġcom . app mat t us . kotlin fixture . Un resolved Ċ import Ġcom . app mat t us . kotlin fixture . assertIs Random Ċ import Ġcom . app mat t us . kotlin fixture . config . Configuration Ċ import Ġcom . app mat t us . kotlin fixture . type Of Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠArray K Type Resolver Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠTest Context ( ĊĠĠĠĠĠĠĠ ĠConfiguration (), ĊĠĠĠĠĠĠĠ ĠComposite Resolver ( Array K Type Resolver (), ĠString Resolver (), ĠPrimitive Resolver (), ĠK Type Resolver ()) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Unknown Ġclass Ġreturns ĠUn resolved `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( Number :: class ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠUn resolved ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Primitive Ġarray Ġclass Ġreturns ĠUn resolved `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( IntArray :: class ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠUn resolved ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Array - Int Ġclass Ġreturns ĠUn resolved `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < Int >> ()) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠUn resolved ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Array - String Ġclass Ġreturns Ġstring Ġarray `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < String >> ()) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( result ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Array < String >:: class , Ġresult :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Array - Nullable String Ġclass Ġreturns Ġnullable Ġstring Ġarray `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Is Random Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < String ? >> ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Array < String ?> :: class , Ġresult :: class ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( result Ġas ĠArray < String ?> )[ 0 ] Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Boolean Array Ġclass Ġreturns Ġun resolved `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Boolean Array >()) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( result Ġis ĠUn resolved ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Random Ġvalues Ġreturned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Is Random Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resolve ( type Of < Array < String >> ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Length Ġof Ġarray Ġmatches Ġconfiguration Ġvalue Ġof Ġ 3 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext . copy ( configuration Ġ= ĠConfiguration ( repeat Count Ġ= Ġ{ Ġ 3 Ġ})) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < String >> ()) Ġas ĠArray < *> ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Length Ġof Ġarray Ġmatches Ġconfiguration Ġvalue Ġof Ġ 7 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext . copy ( configuration Ġ= ĠConfiguration ( repeat Count Ġ= Ġ{ Ġ 7 Ġ})) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < String >> ()) Ġas ĠArray < *> ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġresult . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Array Ġof Ġarrays `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext . copy ( configuration Ġ= ĠConfiguration ( repeat Count Ġ= Ġ{ Ġ 3 Ġ})) ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcontext . resolve ( type Of < Array < Array < String >>> ()) Ġas ĠArray < Array < String >> ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġresult . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ