diff --git a/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt b/javatests/dagger/functional/kotlinsrc/nullables/NullabilityTest.kt index c790a6663fd..71d08e38a33 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 + fun numberProvider(): Provider } + interface Bar {} + + class BarNoNull : Bar + + class BarWithNull : Bar + @Component(modules = [NullModule::class]) internal interface NullComponent { fun string(): String? + fun integer(): Int? + fun nullFoo(): NullFoo + fun number(): Number + fun stringProvider(): Provider + fun numberProvider(): Provider + + fun setOfBar(): Set> + + fun setOfBarWithNullableArg(): Set> } @Module @@ -54,6 +74,10 @@ class NullabilityTest { var numberValue: Number? = null var integerCallCount = 0 + @IntoSet @Provides fun providesNullableStringInToSet(): Bar = BarWithNull() + + @IntoSet @Provides fun providesNonNullStringIntoSet(): Bar = 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, - val numberProvider: Provider + val numberProvider: Provider, ) { var methodInjectedString: String? = null lateinit var methodInjectedNumber: Number @@ -85,7 +109,7 @@ class NullabilityTest { string: String?, number: Number, stringProvider: Provider, - numberProvider: Provider + numberProvider: Provider, ) { 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 = Provider { null!! } + override fun numberProvider(): Provider = Provider { null!! } + override fun number(): Number = null!! + override fun nullFoo(): NullFoo = null!! + + override fun setOfBar(): Set> = emptySet() + + override fun setOfBarWithNullableArg(): Set> = emptySet() } val component = DaggerNullabilityTest_NullComponentWithDependency.builder() @@ -181,7 +216,7 @@ class NullabilityTest { private fun validate( string: String?, stringProvider: Provider, - numberProvider: Provider + numberProvider: Provider, ) { assertThat(string).isNull() assertThat(numberProvider).isNotNull()