Skip to content
Prev Previous commit
Next Next commit
Add testNonSaveableValueInContentIsNotSaved to save a non-saveable va…
…lue isn't saved and restored

Change-Id: Ib31cc443174d18912e55ac64e354f6721c4b1bb1
  • Loading branch information
jossiwolf committed May 6, 2021
commit 2d31918e9aad5dce180d88189caad6f907131e30
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,33 @@ class NavBackStackEntryProviderTest {
assertThat(array).isEqualTo(intArrayOf(1))
}

@Test
fun testNonSaveableValueInContentIsNotSaved() {
val backStackEntry = createBackStackEntry()
val restorationTester = StateRestorationTester(composeTestRule)
var nonSaveable: IntArray? = null
val initialValue = intArrayOf(10)

restorationTester.setContent {
val saveableStateHolder = rememberSaveableStateHolder()
backStackEntry.provideToCompositionLocals(saveableStateHolder) {
nonSaveable = remember { initialValue }
}
}

assertThat(nonSaveable).isEqualTo(initialValue)

composeTestRule.runOnUiThread {
nonSaveable!![0] = 1
// we null it to ensure recomposition happened
nonSaveable = null
}

restorationTester.emulateSavedInstanceStateRestore()

assertThat(nonSaveable).isEqualTo(initialValue)
}

private fun createBackStackEntry(): NavBackStackEntry {
val testNavigator = TestNavigator()
val testNavigatorState = TestNavigatorState()
Expand Down