/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠJ ared ĠR um ml er Ċ Ġ* Ċ Ġ* Ġ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 . j ared rum ml er . cy ane a Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . j ared rum ml er . cy ane a . utils . Reflection Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġorg . hamcrest . Core Matchers . instance Of Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Argument Matchers . any Int Ċ import Ġorg . mockito . Argument Matchers . any String Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . junit . Mockito JUnit Runner Ċ Ċ @ RunWith ( Mockito JUnit Runner . Sil ent :: class ) Ċ class ĠCy ane a Resources Test Ġ{ ĊĊĠ Ġ@ Mock Ġprivate Ġlateinit Ġvar Ġapp : ĠApplication ĊĠ Ġ@ Mock Ġprivate Ġlateinit Ġvar Ġres : ĠResources ĊĠ Ġprivate Ġlateinit Ġvar Ġcy ane a : ĠCy ane a ĊĊĠ Ġ@ Before Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġwhenever ( app . get SharedPreferences ( any String (), Ġany Int ())) ĊĠĠĠĠĠĠĠ Ġ. thenReturn ( mock ()) ĊĠĠĠ ĠCy ane a . init ( app , Ġres ) ĊĠĠĠ Ġcy ane a Ġ= ĠCy ane a . instance ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` should Ġreturn Ġcolor Ġdraw ables Ġfor Ġbackground Ġcolors `() Ġ{ ĊĠĠĠ Ġval Ġresources Ġ= ĠCy ane a Resources ( res ) ĊĊĠĠĠ Ġval Ġdrawable Ids Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ dark , ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ dark _ light er , ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ dark _ dark er , ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ light , ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ light _ light er , ĊĠĠĠĠĠĠĠ ĠR . drawable . cy ane a _ bg _ light _ dark er ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdrawable Ids . forEach Ġ{ Ġres id Ġ-> ĊĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġresources . get Drawable ( res id ) ĊĠĠĠĠĠ ĠassertThat ( drawable , Ġinstance Of ( Color Drawable :: class . java )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` cy ane a Ġresources Ġshould Ġreturn Ġcy ane a Ġprimary Ġcolor `() Ġ{ ĊĠĠĠ Ġval Ġresources Ġ= ĠCy ane a Resources ( res ) ĊĊĠĠĠ Ġset Cy ane a Color ( 0 xFF 0 0 9 9 CC . toInt (), Ġ" primary ") ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġval Ġcolor Ġ= Ġresources . getColor ( R . color . cy ane a _ primary ) ĊĊĠĠĠ ĠassertEquals ( cy ane a . primary , Ġcolor ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġ` cy ane a Ġresources Ġshould Ġreturn Ġcy ane a Ġaccent Ġcolor `() Ġ{ ĊĠĠĠ Ġval Ġresources Ġ= ĠCy ane a Resources ( res ) ĊĊĠĠĠ Ġset Cy ane a Color ( 0 xFF 0 0 9 9 CC . toInt (), Ġ" accent ") ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġval Ġcolor Ġ= Ġresources . getColor ( R . color . cy ane a _ accent ) ĊĊĠĠĠ ĠassertEquals ( cy ane a . accent , Ġcolor ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Cy ane a Color (@ Color Int Ġcolor : ĠInt , Ġname : ĠString ) Ġ{ ĊĠĠĠ ĠReflection . getField ( cy ane a , Ġname )?. let Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠ ĠReflection . set FieldValue ( field , Ġcy ane a , Ġcolor ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ