Add test that does not use mutable extras
Adding a test for CreationExtras that does not use any mutable extras.
Test: added new test
Bug: 223405407
Change-Id: I23ad86ea5969ea177fbb7394883bcbdc925116f2
diff --git a/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt b/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
index f5ccb76..f4423a9 100644
--- a/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
+++ b/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
@@ -112,7 +112,7 @@
}
@Test
- fun testDefaultCreationExtras() {
+ fun testDefaultCreationExtrasWithMutableExtras() {
val owner = ViewModelStoreOwnerWithCreationExtras()
val wasCalled = BooleanArray(1)
val testFactory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
@@ -144,6 +144,34 @@
assertThat(wasCalled[0]).isTrue()
}
+ @Test
+ fun testDefaultCreationExtras() {
+ val owner = ViewModelStoreOwnerWithCreationExtras()
+ val wasCalled = BooleanArray(1)
+ val testFactory: ViewModelProvider.Factory = object : ViewModelProvider.Factory {
+ override fun <T : ViewModel> create(
+ modelClass: Class<T>,
+ extras: CreationExtras
+ ): T {
+ val key = extras[ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY]
+ assertThat(key).isEqualTo("customKey")
+ assertThat(extras[TEST_KEY]).isEqualTo(TEST_VALUE)
+ wasCalled[0] = true
+ @Suppress("UNCHECKED_CAST")
+ return ViewModel1() as T
+ }
+ }
+ ViewModelProvider(owner, testFactory)["customKey", ViewModel1::class.java]
+ assertThat(wasCalled[0]).isTrue()
+ wasCalled[0] = false
+ ViewModelProvider(object : ViewModelStoreOwnerWithCreationExtras() {
+ override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
+ return testFactory
+ }
+ })["customKey", ViewModel1::class.java]
+ assertThat(wasCalled[0]).isTrue()
+ }
+
class ViewModelStoreOwnerWithFactory internal constructor(
private val mStore: ViewModelStore,
private val mFactory: ViewModelProvider.Factory