package Ġcom . world pay . access . checkout . sample . card . standard . testutil Ċ Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . test . espress o . Esp ress o . on View Ċ import Ġandroidx . test . espress o . action . View Actions . click Ċ import Ġandroidx . test . espress o . matcher . View Matchers . with Id Ċ import Ġandroidx . test . rule . Activity Test Rule Ċ import Ġcom . world pay . access . checkout . sample . MainActivity Ċ import Ġcom . world pay . access . checkout . sample . R Ċ import Ġcom . world pay . access . checkout . sample . testutil . Abstract Fragment TestUtils Ċ import Ġcom . world pay . access . checkout . sample . testutil . UIT est Utils . ui Object With Id Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠCard Fragment TestUtils ( activity Rule : ĠActivity Test Rule < MainActivity >) Ġ: ĠAbstract Fragment TestUtils ( activity Rule ) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġpan Input () Ġ= Ġfind ById < EditText >( R . id . card _ flow _ text _ pan ) ĊĠĠĠ Ġprivate Ġfun Ġc vc Input () Ġ= Ġfind ById < EditText >( R . id . card _ flow _ text _ cv c ) ĊĠĠĠ Ġprivate Ġfun Ġexpiry Date Input () Ġ= Ġfind ById < EditText >( R . id . card _ flow _ expiry _ date ) ĊĠĠĠ Ġprivate Ġfun Ġsubmit Button () Ġ= Ġfind ById < Button >( R . id . card _ flow _ btn _ submit ) ĊĠĠĠ Ġprivate Ġfun Ġbrand Logo () Ġ= Ġfind ById < ImageView >( R . id . card _ flow _ brand _ logo ) ĊĠĠĠ Ġprivate Ġfun Ġpayments C vc Switch () Ġ= Ġfind ById < Switch Compat >( R . id . card _ flow _ payments _ cv c _ switch ) ĊĊĠĠĠ Ġenum Ġclass ĠInput Ġ{ ĊĠĠĠĠĠĠĠ ĠPAN , ĠC VC , ĠEX PI RY _ DATE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisIn InitialState (): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar Not Visible () ĊĠĠĠĠĠĠĠ Ġenabled State Is ( pan Ġ= Ġtrue , Ġc vc Ġ= Ġtrue , Ġexpiry Date Ġ= Ġtrue , Ġsubmit Button Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġcard Details Are ( pan Ġ= Ġ"", Ġc vc Ġ= Ġ"", Ġexpiry Date Ġ= Ġ"") ĊĠĠĠĠĠĠĠ Ġhas No Brand () ĊĠĠĠĠĠĠĠ Ġpayments C vc Session Checked State ( checked Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Payments C vc Switch State ( checked : ĠBoolean ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" Payments ĠC vc ĠSwitch Ġvisibility ") Ġ{ Ġpayments C vc Switch (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( checked Ġ!= Ġpayments C vc Switch (). isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Object With Id ( R . id . card _ flow _ payments _ cv c _ switch ). click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpayments C vc Session Checked State ( checked : ĠBoolean ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" Payments ĠC vc ĠSwitch Ġvisibility ") Ġ{ Ġpayments C vc Switch (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( checked , Ġpayments C vc Switch (). isChecked , Ġ" Payments ĠC vc ĠSwitch Ġchecked ") Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest IsIn Progress (): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar Is Visible () ĊĠĠĠĠĠĠĠ Ġenabled State Is ( pan Ġ= Ġfalse , Ġc vc Ġ= Ġfalse , Ġexpiry Date Ġ= Ġfalse , Ġpayments C vc Switch Ġ= Ġfalse , Ġsubmit Button Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Response Dialog With Message ( response : ĠString ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Has Text ( response ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠhasError Dialog With Message ( error : ĠString ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Has Text ( error ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Dialog (): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġon View ( with Id ( android . R . id . button 1 )). perform ( click ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisIn Error State ( pan : ĠString ? Ġ= Ġnull , Ġc vc : ĠString ? Ġ= Ġnull , Ġexpiry Date : ĠString ? Ġ= Ġnull ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar Not Visible () ĊĠĠĠĠĠĠĠ Ġenabled State Is ( pan Ġ= Ġtrue , Ġc vc Ġ= Ġtrue , Ġexpiry Date Ġ= Ġtrue , Ġpayments C vc Switch Ġ= Ġtrue , Ġsubmit Button Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcard Details Are ( pan , Ġc vc , Ġexpiry Date ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenabled State Is ( ĊĠĠĠĠĠĠĠ Ġpan : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġc vc : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġexpiry Date : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġpayments C vc Switch : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġsubmit Button : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisible Msg Ġ= Ġ" visibility Ġstate " ĊĠĠĠĠĠĠĠ Ġval Ġenable Msg Ġ= Ġ" enabled Ġstate " ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pan Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" PAN ĠInput Ġ- Ġ$ visible Msg ") Ġ{ Ġpan Input (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( pan , Ġpan Input (). isEnabled , Ġ" PAN ĠInput Ġ- Ġ$ enable Msg ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cv c Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" CV C ĠInput Ġ- Ġ$ visible Msg ") Ġ{ Ġc vc Input (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( cv c , Ġc vc Input (). isEnabled , Ġ" CV C ĠInput Ġ- Ġ$ enable Msg ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( expiry Date Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" Exp ĠMonth ĠInput Ġ- Ġ$ visible Msg ") Ġ{ Ġexpiry Date Input (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( expiry Date , Ġexpiry Date Input (). isEnabled , Ġ" Exp ĠDate ĠInput Ġ- Ġ$ enable Msg ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( payments C vc Switch Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" Payments ĠC VC ĠSwitch Ġ- Ġ$ visible Msg ") Ġ{ Ġpayments C vc Switch (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( payments C vc Switch , Ġpayments C vc Switch (). isEnabled , Ġ" Payments ĠC VC ĠSwitch Ġ- Ġ$ enable Msg ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( submit Button Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertTrue (" Submit ĠButton Ġ- Ġ$ visible Msg ") Ġ{ Ġthis . submit Button (). isVisible Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( submit Button , Ġthis . submit Button (). isEnabled , Ġ" Submit ĠButton Ġ- Ġ$ enable Msg ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclick Submit Button (): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġenabled State Is ( submit Button Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġui Object With Id ( R . id . card _ flow _ btn _ submit ). click () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfocus On ( input : ĠInput ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( input ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput . PAN Ġ-> Ġui Object With Id ( pan Input (). id ). click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput . CV C Ġ-> Ġui Object With Id ( cv c Input (). id ). click () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput . EXPI RY _ DATE Ġ-> Ġui Object With Id ( expiry Date Input (). id ). click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenter Card Details ( ĊĠĠĠĠĠĠĠ Ġpan : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġc vc : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġexpiry Date : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġassert Text : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pan Ġ!= Ġnull ) Ġenter Text ( pan Input (), Ġpan ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cv c Ġ!= Ġnull ) Ġenter Text ( cv c Input (), Ġc vc ) ĊĠĠĠĠĠĠĠ Ġif Ġ( expiry Date Ġ!= Ġnull ) Ġenter Text ( expiry Date Input (), Ġexpiry Date ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( assert Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Details Are ( pan , Ġc vc , Ġexpiry Date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Cursor Position On Pan ( position : ĠInt ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġset Cursor Position ( pan Input (), Ġposition , Ġposition ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcursor Position Is ( position : ĠInt ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( position , Ġpan Input (). selection End ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcard Details Are ( pan : ĠString ? Ġ= Ġnull , Ġc vc : ĠString ? Ġ= Ġnull , Ġexpiry Date : ĠString ? Ġ= Ġnull ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pan Ġ!= Ġnull ) Ġwait Ġ{ ĠassertEquals ( pan , Ġpan Input (). text . toString ()) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( cv c Ġ!= Ġnull ) Ġwait Ġ{ ĠassertEquals ( cv c , Ġc vc Input (). text . toString ()) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( expiry Date Ġ!= Ġnull ) Ġwait Ġ{ ĠassertEquals ( expiry Date , Ġexpiry Date Input (). text . toString ()) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidation State Is ( pan : ĠBoolean ? Ġ= Ġnull , Ġc vc : ĠBoolean ? Ġ= Ġnull , Ġexpiry Date : ĠBoolean ? Ġ= Ġnull ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pan Ġ!= Ġnull ) Ġcheck Validation State ( pan Input (), Ġpan , Ġ" pan ") ĊĠĠĠĠĠĠĠ Ġif Ġ( cv c Ġ!= Ġnull ) Ġcheck Validation State ( cv c Input (), Ġc vc , Ġ" cv c ") ĊĠĠĠĠĠĠĠ Ġif Ġ( expiry Date Ġ!= Ġnull ) Ġcheck Validation State ( expiry Date Input (), Ġexpiry Date , Ġ" expiry Ġdate ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas No Brand (): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Entry Name Ġ= Ġactivity (). resources . getResource Entry Name ( R . drawable . card _ unknown _ logo ) ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( resource Entry Name , Ġbrand Logo (). getTag ( R . integer . card _ tag )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Brand ( card Brand : ĠCard Brand ): ĠCard Fragment TestUtils Ġ{ ĊĠĠĠĠĠĠĠ Ġwait Ġ{ ĠassertEquals ( card Brand . card Brand Name , Ġbrand Logo (). getTag ( R . integer . card _ tag )) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ