diff options
Diffstat (limited to 'javatests/dagger/functional/assisted/AssistedFactoryAsQualifiedBindingTest.java')
-rw-r--r-- | javatests/dagger/functional/assisted/AssistedFactoryAsQualifiedBindingTest.java | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/javatests/dagger/functional/assisted/AssistedFactoryAsQualifiedBindingTest.java b/javatests/dagger/functional/assisted/AssistedFactoryAsQualifiedBindingTest.java deleted file mode 100644 index 494372a0e..000000000 --- a/javatests/dagger/functional/assisted/AssistedFactoryAsQualifiedBindingTest.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (C) 2021 The Dagger Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dagger.functional.assisted; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth8.assertThat; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import dagger.Binds; -import dagger.BindsInstance; -import dagger.BindsOptionalOf; -import dagger.Component; -import dagger.Module; -import dagger.Provides; -import dagger.assisted.AssistedFactory; -import dagger.assisted.AssistedInject; -import dagger.multibindings.IntoSet; -import dagger.multibindings.Multibinds; -import java.lang.annotation.Retention; -import java.util.Optional; -import java.util.Set; -import javax.inject.Inject; -import javax.inject.Qualifier; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -/** Tests that qualified assisted types can be provided and injected as normal types. */ -@RunWith(JUnit4.class) -public final class AssistedFactoryAsQualifiedBindingTest { - - @Qualifier - @Retention(RUNTIME) - @interface AsComponentDependency {} - - @Qualifier - @Retention(RUNTIME) - @interface AsProvides {} - - @Qualifier - @Retention(RUNTIME) - @interface AsBinds {} - - @Qualifier - @Retention(RUNTIME) - @interface AsOptional {} - - @Qualifier - @Retention(RUNTIME) - @interface AsMultibinding {} - - @Component(modules = BarFactoryModule.class) - interface TestComponent { - Foo foo(); - - @Component.Factory - interface Factory { - TestComponent create( - @BindsInstance @AsComponentDependency Bar bar, - @BindsInstance @AsComponentDependency BarFactory barFactory); - } - } - - @Module - interface BarFactoryModule { - - @Provides - @AsProvides - static Bar providesBar(@AsComponentDependency Bar bar) { - return bar; - } - - @Provides - @AsProvides - static BarFactory providesBarFactory(@AsComponentDependency BarFactory barFactory) { - return barFactory; - } - - @Binds - @AsBinds - Bar bindsBar(@AsComponentDependency Bar bar); - - @Binds - @AsBinds - BarFactory bindsBarFactory(@AsComponentDependency BarFactory barFactory); - - @BindsOptionalOf - @AsOptional - Bar optionalBar(); - - @BindsOptionalOf - @AsOptional - BarFactory optionalBarFactory(); - - @Provides - @AsOptional - static Bar providesOptionalBar(@AsComponentDependency Bar bar) { - return bar; - } - - @Provides - @AsOptional - static BarFactory providesOptionalBarFactory(@AsComponentDependency BarFactory barFactory) { - return barFactory; - } - - @Multibinds - @AsMultibinding - Set<Bar> barSet(); - - @Multibinds - @AsMultibinding - Set<BarFactory> barFactorySet(); - - @Provides - @IntoSet - @AsMultibinding - static Bar providesMultibindingBar(@AsComponentDependency Bar bar) { - return bar; - } - - @Provides - @IntoSet - @AsMultibinding - static BarFactory providesMultibindingBarFactory(@AsComponentDependency BarFactory barFactory) { - return barFactory; - } - - @Multibinds - Set<Bar> unqualifiedBarSet(); - - @Multibinds - Set<BarFactory> unqualifiedBarFactorySet(); - - @Provides - @IntoSet - static Bar providesUnqualifiedMultibindingBar(@AsComponentDependency Bar bar) { - return bar; - } - - @Provides - @IntoSet - static BarFactory providesUnqualifiedMultibindingBarFactory( - @AsComponentDependency BarFactory barFactory) { - return barFactory; - } - } - - static class Foo { - private final BarFactory barFactory; - private final Bar barAsComponentDependency; - private final BarFactory barFactoryAsComponentDependency; - private final Bar barAsProvides; - private final BarFactory barFactoryAsProvides; - private final Bar barAsBinds; - private final BarFactory barFactoryAsBinds; - private final Optional<Bar> optionalBar; - private final Optional<BarFactory> optionalBarFactory; - private final Set<Bar> barSet; - private final Set<BarFactory> barFactorySet; - private final Set<Bar> unqualifiedBarSet; - private final Set<BarFactory> unqualifiedBarFactorySet; - - @Inject - Foo( - BarFactory barFactory, - @AsComponentDependency Bar barAsComponentDependency, - @AsComponentDependency BarFactory barFactoryAsComponentDependency, - @AsProvides Bar barAsProvides, - @AsProvides BarFactory barFactoryAsProvides, - @AsBinds Bar barAsBinds, - @AsBinds BarFactory barFactoryAsBinds, - @AsOptional Optional<Bar> optionalBar, - @AsOptional Optional<BarFactory> optionalBarFactory, - @AsMultibinding Set<Bar> barSet, - @AsMultibinding Set<BarFactory> barFactorySet, - Set<Bar> unqualifiedBarSet, - Set<BarFactory> unqualifiedBarFactorySet) { - this.barFactory = barFactory; - this.barAsComponentDependency = barAsComponentDependency; - this.barFactoryAsComponentDependency = barFactoryAsComponentDependency; - this.barAsProvides = barAsProvides; - this.barFactoryAsProvides = barFactoryAsProvides; - this.barAsBinds = barAsBinds; - this.barFactoryAsBinds = barFactoryAsBinds; - this.optionalBar = optionalBar; - this.optionalBarFactory = optionalBarFactory; - this.barSet = barSet; - this.barFactorySet = barFactorySet; - this.unqualifiedBarSet = unqualifiedBarSet; - this.unqualifiedBarFactorySet = unqualifiedBarFactorySet; - } - } - - static class Bar { - @AssistedInject - Bar() {} - } - - @AssistedFactory - interface BarFactory { - Bar create(); - } - - @Test - public void testFoo() { - Bar bar = new Bar(); - BarFactory barFactory = () -> bar; - Foo foo = - DaggerAssistedFactoryAsQualifiedBindingTest_TestComponent.factory() - .create(bar, barFactory) - .foo(); - - // Test we can inject the "real" BarFactory implemented by Dagger - assertThat(foo.barFactory).isNotNull(); - assertThat(foo.barFactory).isNotEqualTo(barFactory); - assertThat(foo.barFactory.create()).isNotEqualTo(bar); - - // Test injection of a qualified Bar/BarFactory with custom @BindsInstance implementation - assertThat(foo.barAsComponentDependency).isEqualTo(bar); - assertThat(foo.barFactoryAsComponentDependency).isEqualTo(barFactory); - - // Test injection of a qualified Bar/BarFactory with custom @Provides implementation - assertThat(foo.barAsProvides).isEqualTo(bar); - assertThat(foo.barFactoryAsProvides).isEqualTo(barFactory); - - // Test injection of a qualified Bar/BarFactory with custom @Binds implementation - assertThat(foo.barAsBinds).isEqualTo(bar); - assertThat(foo.barFactoryAsBinds).isEqualTo(barFactory); - - // Test injection of a qualified Bar/BarFactory with custom @BindsOptionalOf implementation - assertThat(foo.optionalBar).isPresent(); - assertThat(foo.optionalBar).hasValue(bar); - assertThat(foo.optionalBarFactory).isPresent(); - assertThat(foo.optionalBarFactory).hasValue(barFactory); - - // Test injection of a qualified Bar/BarFactory as multibinding - assertThat(foo.barSet).containsExactly(bar); - assertThat(foo.barFactorySet).containsExactly(barFactory); - - // Test injection of a unqualified Bar/BarFactory as multibinding - assertThat(foo.unqualifiedBarSet).containsExactly(bar); - assertThat(foo.unqualifiedBarFactorySet).containsExactly(barFactory); - } -} |