/* Ċ Ġ* Ġ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 . fragment Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . testing . launch Fragment In Container Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Store Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . nav Graph ViewModels Ċ import Ġandroidx . navigation . navigation Ċ import Ġandroidx . navigation . plus Assign Ċ import Ġandroidx . navigation . testing . Test Navigator Ċ import Ġandroidx . navigation . testing . test Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ @ Large Test Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠNav Graph ViewModel Lazy Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnav Controller Ġ= ĊĠĠĠĠĠĠĠ ĠNav Host Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Provider . getApplicationContext () Ġas ĠContext ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Provider Ġ+= ĠTest Navigator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvm Initialization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscenario Ġ= Ġlaunch Fragment In Container < Test VM Fragment >() ĊĠĠĠĠĠĠĠ Ġnav Controller . set ViewModel Store ( ViewModel Store ()) ĊĠĠĠĠĠĠĠ Ġscenario . on Fragment Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . setView Nav Controller ( fragment . require View (), Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnav Graph Ġ= Ġnav Controller . navigator Provider . navigation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠGRAPH _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Destination Ġ= ĠDEST INATION _ ID ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest ( DEST INATION _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnav Controller . set Graph ( nav Graph , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġscenario . on Fragment Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( fragment . viewModel ). isNotNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTest VM Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġval ĠviewModel : ĠTest ViewModel Ġby Ġnav Graph ViewModels ( GRAPH _ ID ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView ( activity ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTest ViewModel Ġ: ĠViewModel () Ċ Ċ private Ġconst Ġval ĠGRAPH _ ID Ġ= Ġ 1 Ċ private Ġconst Ġval ĠDEST INATION _ ID Ġ= Ġ 2