/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 , Ġ 2 0 2 2 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġbr . com . z up . be agle . android . action Ċ Ċ import Ġandroid . view . View Ċ import Ġbr . com . z up . be agle . android . Base Test Ċ import Ġbr . com . z up . be agle . android . context . Bind Ċ import Ġbr . com . z up . be agle . android . context . Context Data Ċ import Ġbr . com . z up . be agle . android . context . constant Ċ import Ġbr . com . z up . be agle . android . context . expression Of Ċ import Ġbr . com . z up . be agle . android . navigation . Deep Link Handler Ċ import Ġbr . com . z up . be agle . android . setup . Be agle Environment Ċ import Ġbr . com . z up . be agle . android . testutil . Random Data Ċ import Ġbr . com . z up . be agle . android . utils . evaluate Expression Ċ import Ġbr . com . z up . be agle . android . view . custom . Be agle Navigator Ċ import Ġio . mock k . Runs Ċ import Ġio . mock k . clear Mocks Ċ import Ġio . mock k . every Ċ import Ġio . mock k . just Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . mock k Static Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ @ DisplayName (" Given Ġa ĠNavigate Ġclass ") Ċ class ĠNavigate Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdeep Link Handler : ĠDeep Link Handler Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval Ġnavigation Context Stub Ġ= ĠNavigation Context ( value Ġ= Ġ"") ĊĊĠĠĠ Ġprivate Ġval Ġview : ĠView Ġ= Ġmock k () ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠĠĠĠĠ Ġmock k Object ( Be agle Navigator ) ĊĠĠĠĠĠĠĠ Ġmock k Static (" br . com . z up . be agle . android . utils . Action Extensions Kt ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Mocks ( root View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" When Ġexecute Ġmethod Ġis Ġcalled ") ĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠExecute Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġnot Ġcall Ġdeep Link Intent Ġif Ġhandler Ġis Ġnull Ġand Ġtype Ġis ĠOpen Native Route ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Deep Link Handler Null () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Open Native Route ( constant ( Random Data . http Url ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Environment . be agle Sdk . deep Link Handler Ġ} Ġreturns Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġdeep Link Handler . get Deep Link Intent ( any (), Ġany (), Ġany (), Ġany ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġopen External Url Ġif Ġtype Ġis ĠOpen External URL ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Open External URL () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġconstant ( Random Data . http Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Open External URL ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . open External URL ( any (), Ġany ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . open External URL ( root View . getContext (), Ġurl . value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġopen External Url Ġwith Ġexpression Ġif Ġtype Ġis ĠOpen External URL ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Open External URL With Expression () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġexpression Of < String >(" @{ test }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Value Ġ= Ġ" test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Open External URL ( url ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Expression ( root View , Ġview , Ġany < Bind < Any >> ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġurl Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . open External URL ( any (), Ġany ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . open External URL ( root View . getContext (), Ġurl Value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġopen Native Route Ġif Ġtype Ġis ĠOpen Native Route ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Open Native Route () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= Ġconstant ( Random Data . http Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmap Of (" key Stub " Ġto Ġ" value Stub ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshould Reset Application Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Open Native Route ( route , Ġshould Reset Application , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . open Native Route ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Navigator . open Native Route ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Reset Application ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġopen Native Route Ġwith Ġexpression Ġif Ġtype Ġis ĠOpen Native Route ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Open Native Route With Expression () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġexpression Of < String >(" @{ test }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Value Ġ= Ġ" test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmap Of (" key Stub " Ġto Ġ" value Stub ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshould Reset Application Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Open Native Route ( url , Ġshould Reset Application , Ġdata ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Expression ( root View , Ġview , Ġany < Bind < Any >> ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġurl Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . open Native Route ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Navigator . open Native Route ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Reset Application , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġreset Application Ġif Ġtype Ġis ĠReset Application ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Reset Application () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠRoute . Remote ( constant ( Random Data . http Url ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Reset Application ( route , Ġnavigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . reset Application ( any (), Ġany (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Navigator . reset Application ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . getContext (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Context Stub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġreset Stack Ġif Ġtype Ġis ĠReset Stack ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Reset Stack () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠRoute . Remote ( constant ( Random Data . http Url ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Reset Stack ( route , Ġnavigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . reset Stack ( any (), Ġany (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . reset Stack ( root View . getContext (), Ġroute , Ġnull , Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpush View Ġif Ġtype Ġis ĠPush View ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Push View () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠRoute . Remote ( constant ( Random Data . http Url ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Push View ( route , Ġnavigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . push View ( any (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . push View ( root View . getContext (), Ġroute , Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpush View Ġwith Ġexpression Ġif Ġtype Ġis ĠPush View ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Push View With Expression () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠRoute . Remote ( expression Of ("@ { test } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Push View ( route , Ġnavigation Context Ġ= Ġnavigation Context Stub ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Expression ( root View , Ġview , Ġany < Bind < Any >> ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġ" test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . push View ( any (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Navigator . push View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . getContext (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute . copy ( url Ġ= ĠBind . Value (" test ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Context Stub ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpop Stack Ġif Ġtype Ġis ĠPop Stack ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Pop Stack () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Pop Stack ( navigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . pop Stack ( any (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . pop Stack ( root View . getContext (), Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpop View Ġif Ġtype Ġis ĠPop View ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Pop View () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Pop View ( navigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . pop View ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . pop View ( root View . getContext (), Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpop To View Ġif Ġtype Ġis ĠPop To View ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Pop To View () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠRandom Data . http Url () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Pop To View ( constant ( path ), Ġnavigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . pop To View ( any (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . pop To View ( root View . getContext (), Ġpath , Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpop To View Ġwith Ġexpression Ġif Ġtype Ġis ĠPop To View ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Pop To View With Expression () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġexpression Of < String >(" @{ test }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Value Ġ= Ġ" test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Pop To View ( path , Ġnavigation Context Ġ= Ġnavigation Context Stub ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluate Expression ( root View , Ġview , Ġany < Bind < Any >> ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġreturns Ġpath Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . pop To View ( any (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . pop To View ( root View . getContext (), Ġpath Value , Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ DisplayName (" Then Ġshould Ġcall Ġpush Stack Ġif Ġtype Ġis ĠPush Stack ") ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Push Stack () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠRoute . Remote ( constant ( Random Data . http Url ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnavigate Ġ= ĠNavigate . Push Stack ( route , Ġnavigation Context Ġ= Ġnavigation Context Stub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠBe agle Navigator . push Stack ( any (), Ġany (), Ġany (), Ġnavigation Context Stub ) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate . execute ( root View , Ġview ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠBe agle Navigator . push Stack ( root View . getContext (), Ġroute , Ġnull , Ġnavigation Context Stub ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ