/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . navigation . dynamic features Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . navigation . Navigator Provider Ċ import Ġandroidx . navigation . No Op Navigator Ċ import Ġandroidx . test . ext . junit . rules . Activity Scenario Rule Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Small Test Ċ import Ġandroidx . test utils . with Activity Ċ import Ġcom . google . android . play . core . split install . Split Install Manager Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . mockito . Mockito . mock Ċ /* Ġk tl int - disable Ġno - unused - imports Ġ*/ Ġ// Ġhttps :// github . com / p interest / kt lint / issues / 9 3 7 Ċ import Ġorg . mockito . Mockito .` when ` Ġas Ġmock When Ċ Ċ /* Ġk tl int - enable Ġunused - imports Ġ*/ Ċ Ċ @ Small Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ public Ġclass ĠDynamic Activity Navigator Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnavigator : ĠDynamic Activity Navigator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinstall Manager : ĠDynamic Install Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsplit Install Manager : ĠSplit Install Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprovider : ĠNavigator Provider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġno Op Navigator : ĠNo Op Navigator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdynamic Destination : ĠDynamic Activity Navigator . Destination ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġpublic Ġval Ġactivity Rule : ĠActivity Scenario Rule < Navigation Activity > Ġ= ĊĠĠĠĠĠĠĠ ĠActivity Scenario Rule ( Navigation Activity :: class . java ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġpublic Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsplit Install Manager Ġ= Ġmock ( Split Install Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġactivity Rule . with Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall Manager Ġ= ĠDynamic Install Manager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit Install Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Ġ= ĠDynamic Activity Navigator ( this , Ġinstall Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Destination Ġ= Ġnavigator . create Destination () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Destination . set Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠDestination Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprovider Ġ= ĠNavigator Provider () ĊĠĠĠĠĠĠĠ Ġno Op Navigator Ġ= ĠNo Op Navigator () ĊĠĠĠĠĠĠĠ Ġprovider . add Navigator ( no Op Navigator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġnavigate _ Dynamic Activity Destination () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigator . navigate ( dynamic Destination , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġpublic Ġfun Ġnavigate _ Dynamic Activity Destination _ No Dynamic Nav Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġactivity : ĠNavigation Activity ĊĠĠĠĠĠĠĠ Ġactivity Rule . scenario . on Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ VARIABLE ") ĊĠĠĠĠĠĠĠ Ġval Ġdestination Ġ= ĠDynamic Activity Navigator . Destination ( Navigator Provider ()) ĊĠĠĠĠĠĠĠ Ġval Ġnav Destination Ġ= Ġmock ( Dynamic Activity Navigator . Destination :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock When ( moduleName ). thenReturn (" module ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Intent ( Intent ( activity , ĠDestination Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnavigator . navigate ( nav Destination , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġpublic Ġfun Ġcreate Destination () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( navigator . create Destination ()). isNotNull () ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġclass ĠNavigation Activity Ġ: ĠActivity () Ċ Ċ public Ġclass ĠDestination Activity Ġ: ĠActivity () Ċ