@@ -53,6 +53,7 @@ import androidx.testutils.withActivity
53
53
import androidx.testutils.withUse
54
54
import com.google.common.truth.Truth.assertThat
55
55
import com.google.common.truth.Truth.assertWithMessage
56
+ import java.lang.IllegalArgumentException
56
57
import java.util.concurrent.CountDownLatch
57
58
import java.util.concurrent.TimeUnit
58
59
import kotlin.reflect.KClass
@@ -555,7 +556,7 @@ class FragmentNavigatorTest {
555
556
556
557
@UiThreadTest
557
558
@Test
558
- fun testNavigateAndAddIndependentFragment () {
559
+ fun testNavigationAndAddIndependentFragmentWithoutBackStack () {
559
560
val entry = createBackStackEntry()
560
561
561
562
fragmentNavigator.navigate(listOf (entry), null , null )
@@ -584,6 +585,42 @@ class FragmentNavigatorTest {
584
585
.isEqualTo(independentFragment)
585
586
}
586
587
588
+ @UiThreadTest
589
+ @Test
590
+ fun testNavigateAndAddIndependentFragmentWithBackStack () {
591
+ val entry = createBackStackEntry()
592
+
593
+ fragmentNavigator.navigate(listOf (entry), null , null )
594
+ assertThat(navigatorState.backStack.value)
595
+ .containsExactly(entry)
596
+ fragmentManager.executePendingTransactions()
597
+ val fragment = fragmentManager.findFragmentById(R .id.container)
598
+ assertWithMessage(" Fragment should be added" )
599
+ .that(fragment)
600
+ .isNotNull()
601
+ assertWithMessage(" Fragment should be the correct type" )
602
+ .that(fragment)
603
+ .isInstanceOf(EmptyFragment ::class .java)
604
+ assertWithMessage(" Fragment should be the primary navigation Fragment" )
605
+ .that(fragmentManager.primaryNavigationFragment)
606
+ .isSameInstanceAs(fragment)
607
+
608
+ val independentFragment = EmptyFragment ()
609
+ fragmentManager.beginTransaction()
610
+ .replace(R .id.container, independentFragment)
611
+ .addToBackStack(null )
612
+ .commit()
613
+ try {
614
+ fragmentManager.executePendingTransactions()
615
+ } catch (e: IllegalArgumentException ) {
616
+ assertWithMessage(" adding a fragment to the back stack manually should fail" )
617
+ .that(e.message)
618
+ .contains(" The fragment " + independentFragment + " is unknown to the " +
619
+ " FragmentNavigator. Please use the navigate() function to add fragments to " +
620
+ " the FragmentNavigator managed FragmentManager." )
621
+ }
622
+ }
623
+
587
624
@LargeTest
588
625
@UiThreadTest
589
626
@Test
0 commit comments