1 /*
2  * Copyright (C) 2022 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.builder
18 
19 import com.google.common.truth.Truth.assertThat
20 import dagger.BindsInstance
21 import dagger.Component
22 import org.junit.Test
23 import org.junit.runner.RunWith
24 import org.junit.runners.JUnit4
25 
26 /** Tests that `@BindsInstance` works when applied to the parameter of a builder's setter method. */
27 @RunWith(JUnit4::class)
28 class BuilderBindsInstanceParameterTest {
29   @Component
30   internal interface TestComponent {
snull31     fun s(): String
32     fun i(): Int
33 
34     @Component.Builder
35     interface Builder {
36       // https://github.com/google/dagger/issues/1464
37       fun s(@BindsInstance notTheSameNameAsMethod: String): Builder
38       fun i(@BindsInstance i: Int): Builder
39       fun build(): TestComponent
40     }
41   }
42 
43   @Test
builder_bindsInstanceOnParameter_allowednull44   fun builder_bindsInstanceOnParameter_allowed() {
45     val component =
46       DaggerBuilderBindsInstanceParameterTest_TestComponent.builder().s("hello").i(42).build()
47     assertThat(component.s()).isEqualTo("hello")
48     assertThat(component.i()).isEqualTo(42)
49   }
50 }
51