1 /* 2 * Copyright (C) 2023 The Dagger Authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package dagger.functional.kotlinsrc.assisted 18 19 import com.google.common.truth.Truth.assertThat 20 import dagger.BindsInstance 21 import dagger.Component 22 import dagger.assisted.Assisted 23 import dagger.assisted.AssistedFactory 24 import dagger.assisted.AssistedInject 25 import org.junit.Test 26 import org.junit.runner.RunWith 27 import org.junit.runners.JUnit4 28 29 @RunWith(JUnit4::class) 30 internal class AssistedFactoryDuplicatedParamNamesTest { 31 class Foo @AssistedInject constructor(@Assisted val arg: String, val bar: Bar) 32 33 class Bar 34 35 @AssistedFactory 36 interface FooFactory { createnull37 fun create(arg: String): Foo 38 } 39 40 @Component 41 interface TestComponent { 42 @Component.Factory 43 interface Factory { 44 fun create(@BindsInstance arg: Bar): TestComponent 45 } 46 47 fun fooFactory(): FooFactory 48 } 49 50 @Test duplicatedParameterNames_doesNotConflictnull51 fun duplicatedParameterNames_doesNotConflict() { 52 val str = "test" 53 val bar = Bar() 54 val foo = 55 DaggerAssistedFactoryDuplicatedParamNamesTest_TestComponent.factory() 56 .create(bar) 57 .fooFactory() 58 .create(str) 59 assertThat(foo.arg).isEqualTo(str) 60 assertThat(foo.bar).isEqualTo(bar) 61 } 62 } 63