diff options
author | Wanying Ding <wanyingd@google.com> | 2024-04-25 11:06:01 -0700 |
---|---|---|
committer | Dagger Team <dagger-dev+copybara@google.com> | 2024-04-25 11:14:03 -0700 |
commit | d9c0357564b80d76636702d469c35289db01bcaa (patch) | |
tree | e248f5d8f2faa3f07ff6a8f155e0f6e3be03483d | |
parent | efa34f23991ec3223748b01a321d1556b4118d52 (diff) | |
download | dagger2-d9c0357564b80d76636702d469c35289db01bcaa.tar.gz |
Add a test case for asserting current behavior with type argument nullability.
RELNOTES=n/a
PiperOrigin-RevId: 628130557
-rw-r--r-- | javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt b/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt index c790a6663..71d08e38a 100644 --- a/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt +++ b/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt @@ -21,9 +21,11 @@ import dagger.Component import dagger.Module import dagger.Provides import dagger.Reusable +import dagger.multibindings.IntoSet import java.lang.NullPointerException import javax.inject.Inject import javax.inject.Provider +import javax.inject.Singleton import org.junit.Assert.fail import org.junit.Test import org.junit.runner.RunWith @@ -34,19 +36,37 @@ class NullabilityTest { @Component(dependencies = [NullComponent::class]) internal interface NullComponentWithDependency { fun string(): String? + fun number(): Number + fun stringProvider(): Provider<String> + fun numberProvider(): Provider<Number> } + interface Bar<T> {} + + class BarNoNull : Bar<String> + + class BarWithNull : Bar<String?> + @Component(modules = [NullModule::class]) internal interface NullComponent { fun string(): String? + fun integer(): Int? + fun nullFoo(): NullFoo + fun number(): Number + fun stringProvider(): Provider<String> + fun numberProvider(): Provider<Number> + + fun setOfBar(): Set<Bar<String>> + + fun setOfBarWithNullableArg(): Set<Bar<String?>> } @Module @@ -54,6 +74,10 @@ class NullabilityTest { var numberValue: Number? = null var integerCallCount = 0 + @IntoSet @Provides fun providesNullableStringInToSet(): Bar<String?> = BarWithNull() + + @IntoSet @Provides fun providesNonNullStringIntoSet(): Bar<String> = BarNoNull() + @Provides fun provideNullableString(): String? = null @Provides fun provideNumber(): Number = numberValue!! @@ -73,7 +97,7 @@ class NullabilityTest { val string: String?, val number: Number, val stringProvider: Provider<String>, - val numberProvider: Provider<Number> + val numberProvider: Provider<Number>, ) { var methodInjectedString: String? = null lateinit var methodInjectedNumber: Number @@ -85,7 +109,7 @@ class NullabilityTest { string: String?, number: Number, stringProvider: Provider<String>, - numberProvider: Provider<Number> + numberProvider: Provider<Number>, ) { methodInjectedString = string methodInjectedNumber = number @@ -126,12 +150,12 @@ class NullabilityTest { validate( nullFoo.methodInjectedString, nullFoo.methodInjectedStringProvider, - nullFoo.methodInjectedNumberProvider + nullFoo.methodInjectedNumberProvider, ) validate( nullFoo.fieldInjectedString, nullFoo.fieldInjectedStringProvider, - nullFoo.fieldInjectedNumberProvider + nullFoo.fieldInjectedNumberProvider, ) } @@ -146,6 +170,8 @@ class NullabilityTest { assertThat(module.integerCallCount).isEqualTo(1) assertThat(component.integer()).isNull() assertThat(module.integerCallCount).isEqualTo(1) + assertThat(component.setOfBar().size).isEqualTo(2) + assertThat(component.setOfBarWithNullableArg().size).isEqualTo(2) } @Test @@ -153,11 +179,20 @@ class NullabilityTest { val nullComponent: NullComponent = object : NullComponent { override fun string(): String? = null + override fun integer(): Int? = null + override fun stringProvider(): Provider<String> = Provider { null!! } + override fun numberProvider(): Provider<Number> = Provider { null!! } + override fun number(): Number = null!! + override fun nullFoo(): NullFoo = null!! + + override fun setOfBar(): Set<Bar<String>> = emptySet() + + override fun setOfBarWithNullableArg(): Set<Bar<String?>> = emptySet() } val component = DaggerNullabilityTest_NullComponentWithDependency.builder() @@ -181,7 +216,7 @@ class NullabilityTest { private fun validate( string: String?, stringProvider: Provider<String>, - numberProvider: Provider<Number> + numberProvider: Provider<Number>, ) { assertThat(string).isNull() assertThat(numberProvider).isNotNull() |