package Ġcom . lo uk wn . gif sound it . util Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . test . espress o . View Assertion Ċ import Ġandroidx . test . espress o . matcher . View Matchers . assertThat Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Description Ċ import Ġorg . hamcrest . Matcher Ċ import Ġorg . hamcrest . Type Safe Matcher Ċ Ċ @ Suppress (" unused ") Ċ class ĠRecyclerView Tools ( private Ġval Ġre cyclerView Id : ĠInt ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġwith ItemCount ( expected Count : ĠInt ): ĠView Assertion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwith ItemCount (` is `( expected Count )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwith ItemCount ( matcher : ĠMatcher < Int >): ĠView Assertion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Assertion Ġ{ Ġview , Ġno View Found Exception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( no View Found Exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġno View Found Exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġre cyclerView . adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( adapter !!. item Count , Ġmatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġat Position ( position : ĠInt ): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġat Position On View ( position , Ġ- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġat Position On View ( position : ĠInt , Ġtarget View Id : ĠInt ): ĠMatcher < View > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchild View : ĠView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Description Ġ= Ġre cyclerView Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" with Ġid : Ġ$ id Description ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( view : ĠView ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview . root View . findViewById < View >( re cyclerView Id ) Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . id Ġ== Ġre cyclerView Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild View Ġ= Ġre cyclerView . find ViewHolder For Adapter Position ( position ) !!. item View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( target View Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ=== Ġchild View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget View Ġ= Ġchild View !!. findViewById < View >( target View Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ=== Ġtarget View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ