// ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC Ċ // Ċ // Ġ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 Ġorg . b abb age b oole . bin ven io čĊč Ċ import Ġandroid . view . View č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġandroidx . test . espress o . matcher . Bounded Matcher č Ċ import Ġorg . hamcrest . Description č Ċ import Ġorg . hamcrest . Matcher č Ċ import Ġtim ber . log . Tim ber čĊč Ċ // ĠSee : Ġhttps :// stackoverflow . com / questions / 3 1 3 9 4 5 6 9 / how - to - assert - inside - a - recyclerview - in - espress o č Ċ fun Ġat Position ( position : ĠInt , Ġview Matcher : ĠMatcher < View >): ĠBo unded Matcher < View , ĠRecyclerView > Ġ{ čĊĠĠĠ Ġreturn Ġobject Ġ: ĠBo unded Matcher < View , ĠRecyclerView >( RecyclerView :: class . java ) Ġ{ čĊĠĠĠĠĠĠĠ Ġpublic Ġoverride Ġfun Ġmatches S af ely ( view : ĠRecyclerView ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġview ?. find ViewHolder For Adapter Position ( position ) Ġ?: Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview Matcher . matches ( view Holder . item View ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . append Text (" has Ġitem Ġat Ġposition Ġ$ position : Ġ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Matcher . describe To ( description ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }