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.membersinject
18 
19 import com.google.common.truth.Truth.assertThat
20 import dagger.Component
21 import dagger.Module
22 import dagger.Provides
23 import javax.inject.Inject
24 import org.junit.Test
25 import org.junit.runner.RunWith
26 import org.junit.runners.JUnit4
27 
28 @RunWith(JUnit4::class)
29 class MembersWithInstanceNameTest {
30   @Suppress("BadInject") // This is intentional for testing purposes.
31   internal class Foo @Inject constructor() {
32     // Checks that member injection fields can use "instance" as a name (b/175818837).
33     @Inject lateinit var instance: String
34   }
35 
36   @Module
37   internal interface TestModule {
38     companion object {
provideStringnull39       @Provides fun provideString(): String = "test"
40     }
41   }
42 
43   @Component(modules = [TestModule::class])
44   internal interface TestComponent {
45     fun foo(): Foo
46   }
47 
48   @Test
testMemberWithInstanceNamenull49   fun testMemberWithInstanceName() {
50     val component = DaggerMembersWithInstanceNameTest_TestComponent.create()
51     val foo = component.foo()
52     assertThat(foo).isNotNull()
53     assertThat(foo.instance).isEqualTo("test")
54   }
55 }
56