package Ġcom . sch ib st ed . sp ain . bar ista . internal . matcher Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . test . espress o . matcher . Bounded Matcher Ċ import Ġcom . sch ib st ed . sp ain . bar ista . internal . util . Color ResourceType Ċ import Ġcom . sch ib st ed . sp ain . bar ista . internal . util . color ResourceType Ċ import Ġorg . hamcrest . Description Ċ Ċ class ĠText Color Matcher ( private Ġval Ġexpected Color : ĠInt ) Ġ: ĠBo unded Matcher < View , ĠTextView >( TextView :: class . java ) Ġ{ ĊĊĠ Ġprivate Ġvar Ġcolor Name : ĠString ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġmatches S af ely ( textView : ĠTextView ): ĠBoolean Ġ{ ĊĊĠĠĠ Ġcolor Name Ġ= Ġwhen Ġ( expected Color . color ResourceType ) Ġ{ ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ RES Ġ-> ĠtextView . context . resources . getResource Entry Name ( expected Color ) ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ ATTR Ġ-> ĠtextView . context . resources . getResource Entry Name ( expected Color ) ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ INT Ġ-> Ġ"$ expected Color " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġmatches Color ( textView ) Ġ|| Ġ( expected Color . color ResourceType Ġ== ĠColor ResourceType . COLOR _ RES Ġ&& Ġmatches Color List ( textView )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmatches Color ( textView : ĠTextView ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcurrent Color Int Ġ= ĠtextView . current TextColor ĊĊĠĠĠ Ġval Ġexpected Color Int Ġ= Ġwhen Ġ( expected Color . color ResourceType ) Ġ{ ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ RES Ġ-> ĠContext Compat . getColor ( textView . context , Ġexpected Color ) ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ INT Ġ-> Ġexpected Color ĊĠĠĠĠĠ ĠColor ResourceType . COLOR _ ATTR Ġ-> ĠtextView . context . getColor Attribute ( expected Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġcurrent Color Int Ġ== Ġexpected Color Int ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠContext . getColor Attribute ( color Attr : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġout Value Ġ= ĠTyped Value () ĊĠĠĠ Ġtheme . resolve Attribute ( color Attr , Ġout Value , Ġtrue ) ĊĠĠĠ Ġreturn Ġout Value . data ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmatches Color List ( textView : ĠTextView ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcurrent Color List Ġ= ĠtextView . text Colors ĊĠĠĠ Ġval Ġexpected Color Int Ġ= ĠContext Compat . getColor State List ( textView . context , Ġexpected Color ) ĊĠĠĠ Ġreturn Ġcurrent Color List Ġ== Ġexpected Color Int ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠ Ġif Ġ( color Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġtext Ġ= Ġwhen Ġ( expected Color . color ResourceType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColor ResourceType . COLOR _ RES Ġ-> Ġ" with Ġtext Ġcolor Ġresource : Ġ[$ color Name ]" ĊĠĠĠĠĠĠĠ ĠColor ResourceType . COLOR _ INT Ġ-> Ġ" with Ġtext Ġcolor : Ġ[$ expected Color ]" ĊĠĠĠĠĠĠĠ ĠColor ResourceType . COLOR _ ATTR Ġ-> Ġ" with Ġtext Ġcolor Ġattribute : Ġ[$ color Name ]" ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġdescription . append Text ( text ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġdescription . append Text (" with Ġtext Ġcolor : Ġ[$ expected Color ]") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }