package Ġcom . stripe . android . test h arness Ċ Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . annotation . Int Range Ċ Ċ /** Ċ Ġ* ĠUtility Ġclass Ġfor Ġcommon Ġactions Ġto Ġperform Ġon ĠViews Ġunder Ġtest . Ċ Ġ*/ Ċ internal Ġobject ĠView TestUtils Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġan Ġaction Ġdown Ġcall Ġon Ġthe Ġdelete Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġedit Text Ġthe Ġ[ EditText ] Ġto Ġwhich Ġto Ġdispatch Ġthe Ġkey Ġpress . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsend Delete KeyEvent ( edit Text : ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text . dispatch KeyEvent ( KeyEvent ( KeyEvent . ACTION _ DOWN , ĠKeyEvent . KEYCODE _ DEL )) ĊĠĠĠĠĠĠĠ Ġedit Text . dispatch KeyEvent ( KeyEvent ( KeyEvent . ACTION _ UP , ĠKeyEvent . KEYCODE _ DEL )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUtility Ġfunction Ġto Ġcheck Ġand Ġsee Ġwhether Ġor Ġnot Ġan ĠEditText Ġhas Ġa Ġmax Ġlength Ġset , Ġbecause ĊĠĠĠĠ Ġ* Ġlooping Ġthrough Ġthis Ġmanually Ġeach Ġtime Ġis Ġway Ġtoo Ġmuch Ġcode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġedit Text Ġthe Ġ[ EditText ] Ġyou 'd Ġlike Ġto Ġtest ĊĠĠĠĠ Ġ* Ġ@ param Ġmax Ġthe Ġmax Ġvalue Ġthat Ġyou 're Ġlooking Ġfor ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthere Ġis Ġan Ġ[ android . text . Input Filter . Length Filter ] Ġon Ġthis ĊĠĠĠĠ Ġ* Ġ[ EditText ] Ġhas Ġa Ġ" max " Ġvalue Ġequal Ġto Ġthe Ġinput Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthis Ġmethod Ġis Ġrun Ġfor ĠSDK Ġ< Ġ 2 1 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas MaxLength ( edit Text : ĠEditText , Ġ@ Int Range ( from Ġ= Ġ 0 ) Ġmax : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġedit Text . filters . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit Ġas ? ĠInput Filter . Length Filter Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġit . max Ġ== Ġmax Ġ} ĊĠĠĠ Ġ} Ċ } Ċ