package Ġtest helpers Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . test . espress o . Perform Exception Ċ import Ġandroidx . test . espress o . Ui Controller Ċ import Ġandroidx . test . espress o . View Action Ċ import Ġandroidx . test . espress o . matcher . View Matchers . isAssignableFrom Ċ import Ġandroidx . test . espress o . matcher . View Matchers . is Displayed Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġorg . hamcrest . Core Matchers . all Of Ċ import Ġorg . hamcrest . Matcher Ċ Ċ fun Ġre cycler Scroll To ( position : ĠInt ? Ġ= Ġnull ): ĠView Action Ġ= ĠRecyclerView Scroll Action ( position ) Ċ Ċ private Ġclass ĠRecyclerView Scroll Action ( private Ġval Ġposition : ĠInt ? Ġ= Ġnull ) Ġ: ĠView Action Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetDescription (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" scroll ĠRecyclerView Ġto Ġbottom " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Constraints (): ĠMatcher < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġall Of ( isAssignableFrom ( RecyclerView :: class . java ), Ġis Displayed ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform ( ui Controller : ĠUi Controller ?, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġval Ġitem Count Ġ= Ġre cyclerView . adapter ?. item Count ĊĠĠĠĠĠĠĠ Ġval Ġitem Position Ġ= Ġposition Ġ?: Ġitem Count ?. minus ( 1 ) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġre cyclerView . scrollTo Position ( item Position ) ĊĠĠĠĠĠĠĠ Ġui Controller ?. loop MainThread Until Idle () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġselect Tab At Position ( tab Index : ĠInt ): ĠView Action Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠView Action Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetDescription () Ġ= Ġ" with Ġtab Ġat Ġindex Ġ$ tab Index " ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Constraints () Ġ= Ġall Of ( is Displayed (), Ġis AssignableFrom ( Tab Layout :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform ( ui Controller : ĠUi Controller , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtab Layout Ġ= Ġview Ġas ĠTab Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtab AtIndex : ĠTab Layout . Tab Ġ= Ġtab Layout . get Tab At ( tab Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠPerform Exception . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Cause ( Throwable (" No Ġtab Ġat Ġindex Ġ$ tab Index ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab AtIndex . select () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ