1 /* 2 * Copyright 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.navigation.dynamicfeatures.fragment 18 19 import android.os.Bundle 20 import androidx.fragment.app.FragmentActivity 21 import androidx.navigation.dynamicfeatures.fragment.test.R 22 import androidx.test.annotation.UiThreadTest 23 import androidx.test.core.app.ActivityScenario 24 import androidx.test.ext.junit.rules.ActivityScenarioRule 25 import androidx.test.ext.junit.runners.AndroidJUnit4 26 import androidx.test.filters.MediumTest 27 import androidx.testutils.withActivity 28 import com.google.android.play.core.splitinstall.SplitInstallManager 29 import com.google.common.truth.Truth.assertThat 30 import org.junit.Rule 31 import org.junit.Test 32 import org.junit.runner.RunWith 33 34 @MediumTest 35 @RunWith(AndroidJUnit4::class) 36 public class DynamicNavHostFragmentTest { 37 38 @get:Rule 39 public val rule: ActivityScenarioRule<NavigationActivity> = 40 ActivityScenarioRule(NavigationActivity::class.java) 41 42 @Test createSplitInstallManagernull43 public fun createSplitInstallManager() { 44 lateinit var fragment: TestDynamicNavHostFragment 45 with(ActivityScenario.launch(NavigationActivity::class.java)) { 46 withActivity { 47 fragment = TestDynamicNavHostFragment() 48 supportFragmentManager 49 .beginTransaction() 50 .add(R.id.nav_host, fragment, null) 51 .setPrimaryNavigationFragment(fragment) 52 .commitNow() 53 } 54 } 55 assertThat(fragment.createSplitInstallManager()) 56 .isEqualTo(fragment.createSplitInstallManager()) 57 } 58 59 @UiThreadTest 60 @Test create_noArgsnull61 public fun create_noArgs() { 62 val fragment = DynamicNavHostFragment.create(R.id.nav_host) 63 assertThat(fragment.arguments!!.size()).isEqualTo(1) 64 } 65 66 @UiThreadTest 67 @Test create_withArgsnull68 public fun create_withArgs() { 69 val fragment = 70 DynamicNavHostFragment.create(R.id.nav_host, Bundle().apply { putInt("Test", 1) }) 71 assertThat(fragment.arguments!!.size()).isEqualTo(2) 72 } 73 } 74 75 public class NavigationActivity : FragmentActivity() { onCreatenull76 override fun onCreate(savedInstanceState: Bundle?) { 77 setContentView(R.layout.dynamic_activity_layout) 78 super.onCreate(savedInstanceState) 79 } 80 } 81 82 public class TestDynamicNavHostFragment : DynamicNavHostFragment() { createSplitInstallManagernull83 public override fun createSplitInstallManager(): SplitInstallManager = 84 super.createSplitInstallManager() 85 } 86