package Ġcom . j ord ans il va . blue bank . helper Ċ Ċ import Ġandroidx . compose . ui . input . key . KeyEvent Ċ import Ġandroidx . compose . ui . input . key . Native KeyEvent Ċ import Ġandroidx . compose . ui . semantics . Role Ċ import Ġandroidx . compose . ui . semantics . Semantics Properties Ċ import Ġandroidx . compose . ui . test . Semantics Matcher Ċ import Ġandroidx . compose . ui . test . Semantics Node Interaction Ċ import Ġandroidx . compose . ui . test . assert Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp ĊĊ Ċ val ĠMin Touch Area Height Ġ= Ġ 4 8 . dp Ċ val ĠMin Touch Area Width Ġ= Ġ 4 8 . dp Ċ Ċ private Ġval ĠN ATIVE _ DP AD _ DOWN Ġ= ĠNative KeyEvent ( Native KeyEvent . ACTION _ DOWN , ĠNative KeyEvent . KEYCODE _ DP AD _ DOWN ) Ċ val ĠNavigate Down KeyEvent Ġ= ĠKeyEvent ( NATIVE _ DP AD _ DOWN ) Ċ Ċ fun Ġhas Min Touch Area ( width : ĠD p , Ġheight : ĠD p ): ĠSem antics Matcher Ġ= ĊĠĠĠ ĠSem antics Matcher (" has Ġtouch Ġarea Ġless Ġthan Ġ$ width Ġx Ġ$ height ") Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠ Ġwith ( node . root !!. density ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtouch Bounds Ġ= Ġnode . touch Bounds In Root ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġ(( touch Bounds . width . to Dp () Ġ>= Ġwidth Ġ&& Ġtouch Bounds . height . to Dp () Ġ>= Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( node . size . width . to Dp () Ġ>= Ġwidth Ġ&& Ġnode . size . height . to Dp () Ġ>= Ġheight )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġhas Any Content Description (): ĠSem antics Matcher Ġ= ĊĠĠĠ ĠSem antics Matcher ("${ Semantics Properties . Content Description . name } Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit . config . contains ( Semantics Properties . Content Description ) Ġ|| Ġit . config . contains ( Semantics Properties . Text ) ĊĠĠĠ Ġ} Ċ Ċ fun Ġhas Role ( role : ĠRole ): ĠSem antics Matcher Ġ= ĠSem antics Matcher . expect Value ( Semantics Properties . Role , Ġrole ) Ċ Ċ fun Ġhas Size ( width : ĠD p , Ġheight : ĠD p ): ĠSem antics Matcher Ġ= ĊĠĠĠ ĠSem antics Matcher (" Size Ġdoesn 't Ġmatch Ġ$ width Ġx Ġ$ height ") Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠ Ġwith ( node . root !!. density ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Ġnode . size . width . to Dp () Ġ== Ġwidth Ġ&& Ġnode . size . height . to Dp () Ġ== Ġheight ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ