package Ġorg . opp ia . android . testing . espress o Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . test . espress o . matcher . Bounded Matcher Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġorg . hamcrest . Description Ċ Ċ /** Ċ Ġ* ĠAction Ġfor Ġmatching Ġerror Ġtext Ġand Ġperforming Ġother Ġactions Ġon Ġ[ TextInput Layout ] Ġin Ġa Ġtest Ċ Ġ* Ġinfrastructure - specific Ġway . Ċ Ġ*/ Ċ class ĠText Input Action Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġthat Ġthe ĠText Input Layout Ġview Ġhas Ġthe Ġ[ expected Error Text ] Ġerror Ġtext . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Bounded Matcher ] Ġthat Ġmatches Ġthe Ġ[ expected Error Text ] Ġwith Ġthe ĠText Input Layout 's ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġerror Ġtext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠhasError Text ( expected Error Text : ĠString ): ĠBo unded Matcher < View , ĠText Input Layout > Ġ{ ĊĠĠĠĠĠ Ġreturn ĠError Text Exists Matcher ( expected Error Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġthat Ġthe ĠText Input Layout Ġview Ġhas Ġan Ġempty Ġerror Ġtext . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġ[ Bounded Matcher ] Ġthat Ġmatches Ġif Ġerror Ġtext Ġis Ġnull Ġor Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas NoError Text (): ĠBo unded Matcher < View , ĠText Input Layout > Ġ{ ĊĠĠĠĠĠ Ġreturn ĠError Text DoesNotExist Matcher () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClass Ġwhich Ġinherits Ġ[ Bounded Matcher ] Ġand Ġoverrides Ġ[ matches S af ely ] Ġfunction Ġto Ġmatch Ġthe ĊĠĠĠĠ Ġ* Ġ[ expected Error Text ] Ġwith Ġthe ĠText Input Layout 's Ġerror Ġtext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠError Text Exists Matcher ( private Ġval Ġexpected Error Text : ĠString ) Ġ: ĊĠĠĠĠĠ ĠBo unded Matcher < View , ĠText Input Layout >( TextInput Layout :: class . java ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( textInput Layout : ĠText Input Layout ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Input Layout . error Ġ== Ġexpected Error Text ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdescription . append Text (" The Ġexpected Ġerror Ġtext Ġis Ġ'$ expected Error Text '") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClass Ġwhich Ġinherits Ġ[ Bounded Matcher ] Ġand Ġoverrides Ġ[ matches S af ely ] Ġfunction Ġto Ġcheck Ġif Ġthe ĊĠĠĠĠ Ġ* Ġerror Ġtext Ġis Ġnull Ġof Ġempty . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠError Text DoesNotExist Matcher Ġ: ĊĠĠĠĠĠ ĠBo unded Matcher < View , ĠText Input Layout >( TextInput Layout :: class . java ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġmatches S af ely ( textInput Layout : ĠText Input Layout ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Input Layout . error . isNull OrEmpty () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdescription . append Text (" There Ġis Ġno Ġerror Ġtext .") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ