package Ġio . github . dl le w el lyn . saf et or un . int ents Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ internal Ġclass ĠIntent Verification Builder Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġintent Ġ= Ġmock k < Intent >() ĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġmock k < Context >() ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . data Ġ} Ġreturns Ġnull ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverifies Ġcorrectly Ġif Ġthere Ġare Ġno Ġcontaining Ġintent s `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{}). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverifies Ġcorrectly Ġif Ġthere Ġare Ġcontaining Ġintent s Ġbut Ġyou Ġdont Ġcare `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġput Dummy Intent Into Extras () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Containing Intent s Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġfails Ġif Ġits Ġembedded `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable (" Bundle ", ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable (" Another Bundle ", ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable (" Intent ", ĠIntent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Containing Intent s Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġfails Ġif Ġthere Ġare Ġcontaining Ġintent s Ġand Ġyou Ġdo Ġcare `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġput Dummy Intent Into Extras () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( intent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Containing Intent s Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġfails Ġif Ġthere Ġare Ġany Ġurls Ġand Ġurls Ġare Ġb anned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput String (" url ", ĠURL ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġpasses Ġif Ġthere Ġare Ġany Ġurls Ġand Ġurls Ġare Ġnot Ġb anned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput String (" url ", ĠURL ) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Any Urls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġpasses Ġif Ġthere Ġare Ġany Ġurls Ġin Ġa Ġlist Ġand Ġurls Ġare Ġnot Ġb anned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput String ArrayList (" url ", Ġarray ListOf ( URL )) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Any Urls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġpasses Ġif Ġthere Ġare Ġany Ġurls Ġin Ġa Ġarray Ġlist Ġand Ġurls Ġare Ġnot Ġb anned `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput String Array (" url ", ĠarrayOf ( URL )) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Any Urls Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġfails Ġif Ġthere Ġis Ġa ĠURL Ġas ĠURI `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput Parcelable (" url ", ĠUri . parse ( URL )) Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġintent Ġverify Ġfails Ġif Ġthere Ġis Ġa ĠURL Ġas Ġdata `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . data Ġ} Ġreturns ĠUri . parse ( URL ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ Ġ}). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġactions Ġon Ġfailure Ġis Ġtriggered `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . data Ġ} Ġreturns ĠUri . parse ( URL ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġtriggered Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Failure Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtriggered Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). isFalse () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( triggered ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġactions Ġon Ġsuccess Ġis Ġtriggered `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . data Ġ} Ġreturns ĠUri . parse ( URL ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġtriggered Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertThat ( intent . verify ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Any Urls Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Success Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtriggered Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). isTrue () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( triggered ). isTrue () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġput Dummy Intent Into Extras () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġintent . extras Ġ} Ġreturns ĠBundle (). apply Ġ{ Ġput Parcelable (" Intent ", ĠIntent ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠURL Ġ= Ġ" https :// abc . com " ĊĠĠĠ Ġ} Ċ } Ċ