xref: /aosp_15_r20/external/dagger2/javatests/dagger/functional/kotlinsrc/basic/BasicTest.kt (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
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.basic
18 
19 import com.google.common.truth.Truth.assertThat
20 import org.junit.experimental.theories.DataPoint
21 import org.junit.experimental.theories.Theories
22 import org.junit.experimental.theories.Theory
23 import org.junit.runner.RunWith
24 
25 @RunWith(Theories::class)
26 class BasicTest {
27   @Theory
primitivesnull28   fun primitives(basicComponent: BasicComponent) {
29     assertThat(basicComponent.byteFun()).isEqualTo(PrimitivesModule.BOUND_BYTE)
30     assertThat(basicComponent.charFun()).isEqualTo(PrimitivesModule.BOUND_CHAR)
31     assertThat(basicComponent.shortFun()).isEqualTo(PrimitivesModule.BOUND_SHORT)
32     assertThat(basicComponent.intFun()).isEqualTo(PrimitivesModule.BOUND_INT)
33     assertThat(basicComponent.longFun()).isEqualTo(PrimitivesModule.BOUND_LONG)
34     assertThat(basicComponent.booleanFun()).isEqualTo(PrimitivesModule.BOUND_BOOLEAN)
35     assertThat(basicComponent.floatFun()).isEqualTo(PrimitivesModule.BOUND_FLOAT)
36     assertThat(basicComponent.doubleFun()).isEqualTo(PrimitivesModule.BOUND_DOUBLE)
37 
38     assertThat(basicComponent.byteVal).isEqualTo(basicComponent.byteFun())
39     assertThat(basicComponent.charVal).isEqualTo(basicComponent.charFun())
40     assertThat(basicComponent.shortVal).isEqualTo(basicComponent.shortFun())
41     assertThat(basicComponent.intVal).isEqualTo(basicComponent.intFun())
42     assertThat(basicComponent.longVal).isEqualTo(basicComponent.longFun())
43     assertThat(basicComponent.booleanVal).isEqualTo(basicComponent.booleanFun())
44     assertThat(basicComponent.floatVal).isEqualTo(basicComponent.floatFun())
45     assertThat(basicComponent.doubleVal).isEqualTo(basicComponent.doubleFun())
46   }
47 
48   @Theory
primitiveProvidersnull49   fun primitiveProviders(basicComponent: BasicComponent) {
50     assertThat(basicComponent.byteProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_BYTE)
51     assertThat(basicComponent.charProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_CHAR)
52     assertThat(basicComponent.shortProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_SHORT)
53     assertThat(basicComponent.intProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_INT)
54     assertThat(basicComponent.longProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_LONG)
55     assertThat(basicComponent.booleanProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_BOOLEAN)
56     assertThat(basicComponent.floatProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_FLOAT)
57     assertThat(basicComponent.doubleProviderFun().get()).isEqualTo(PrimitivesModule.BOUND_DOUBLE)
58 
59     assertThat(basicComponent.byteProviderVal.get())
60         .isEqualTo(basicComponent.byteProviderFun().get())
61     assertThat(basicComponent.charProviderVal.get())
62         .isEqualTo(basicComponent.charProviderFun().get())
63     assertThat(basicComponent.shortProviderVal.get())
64         .isEqualTo(basicComponent.shortProviderFun().get())
65     assertThat(basicComponent.intProviderVal.get())
66         .isEqualTo(basicComponent.intProviderFun().get())
67     assertThat(basicComponent.longProviderVal.get())
68         .isEqualTo(basicComponent.longProviderFun().get())
69     assertThat(basicComponent.booleanProviderVal.get())
70         .isEqualTo(basicComponent.booleanProviderFun().get())
71     assertThat(basicComponent.floatProviderVal.get())
72         .isEqualTo(basicComponent.floatProviderFun().get())
73     assertThat(basicComponent.doubleProviderVal.get())
74         .isEqualTo(basicComponent.doubleProviderFun().get())
75   }
76 
77   @Theory
primitiveArraysnull78   fun primitiveArrays(basicComponent: BasicComponent) {
79     assertThat(basicComponent.byteArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_BYTE_ARRAY)
80     assertThat(basicComponent.charArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_CHAR_ARRAY)
81     assertThat(basicComponent.shortArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_SHORT_ARRAY)
82     assertThat(basicComponent.intArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_INT_ARRAY)
83     assertThat(basicComponent.longArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_LONG_ARRAY)
84     assertThat(basicComponent.booleanArrayFun())
85         .isSameInstanceAs(PrimitivesModule.BOUND_BOOLEAN_ARRAY)
86     assertThat(basicComponent.floatArrayFun()).isSameInstanceAs(PrimitivesModule.BOUND_FLOAT_ARRAY)
87     assertThat(basicComponent.doubleArrayFun())
88         .isSameInstanceAs(PrimitivesModule.BOUND_DOUBLE_ARRAY)
89 
90     assertThat(basicComponent.byteArrayVal).isSameInstanceAs(basicComponent.byteArrayFun())
91     assertThat(basicComponent.charArrayVal).isSameInstanceAs(basicComponent.charArrayFun())
92     assertThat(basicComponent.shortArrayVal).isSameInstanceAs(basicComponent.shortArrayFun())
93     assertThat(basicComponent.intArrayVal).isSameInstanceAs(basicComponent.intArrayFun())
94     assertThat(basicComponent.longArrayVal).isSameInstanceAs(basicComponent.longArrayFun())
95     assertThat(basicComponent.booleanArrayVal).isSameInstanceAs(basicComponent.booleanArrayFun())
96     assertThat(basicComponent.floatArrayVal).isSameInstanceAs(basicComponent.floatArrayFun())
97     assertThat(basicComponent.doubleArrayVal).isSameInstanceAs(basicComponent.doubleArrayFun())
98   }
99 
100   @Theory
primitiveArrayProvidersnull101   fun primitiveArrayProviders(basicComponent: BasicComponent) {
102     assertThat(basicComponent.byteArrayProviderFun().get())
103       .isSameInstanceAs(PrimitivesModule.BOUND_BYTE_ARRAY)
104     assertThat(basicComponent.charArrayProviderFun().get())
105       .isSameInstanceAs(PrimitivesModule.BOUND_CHAR_ARRAY)
106     assertThat(basicComponent.shortArrayProviderFun().get())
107       .isSameInstanceAs(PrimitivesModule.BOUND_SHORT_ARRAY)
108     assertThat(basicComponent.intArrayProviderFun().get())
109       .isSameInstanceAs(PrimitivesModule.BOUND_INT_ARRAY)
110     assertThat(basicComponent.longArrayProviderFun().get())
111       .isSameInstanceAs(PrimitivesModule.BOUND_LONG_ARRAY)
112     assertThat(basicComponent.booleanArrayProviderFun().get())
113       .isSameInstanceAs(PrimitivesModule.BOUND_BOOLEAN_ARRAY)
114     assertThat(basicComponent.floatArrayProviderFun().get())
115       .isSameInstanceAs(PrimitivesModule.BOUND_FLOAT_ARRAY)
116     assertThat(basicComponent.doubleArrayProviderFun().get())
117       .isSameInstanceAs(PrimitivesModule.BOUND_DOUBLE_ARRAY)
118 
119     assertThat(basicComponent.byteArrayProviderVal.get())
120       .isSameInstanceAs(basicComponent.byteArrayProviderFun().get())
121     assertThat(basicComponent.charArrayProviderVal.get())
122       .isSameInstanceAs(basicComponent.charArrayProviderFun().get())
123     assertThat(basicComponent.shortArrayProviderVal.get())
124       .isSameInstanceAs(basicComponent.shortArrayProviderFun().get())
125     assertThat(basicComponent.intArrayProviderVal.get())
126       .isSameInstanceAs(basicComponent.intArrayProviderFun().get())
127     assertThat(basicComponent.longArrayProviderVal.get())
128       .isSameInstanceAs(basicComponent.longArrayProviderFun().get())
129     assertThat(basicComponent.booleanArrayProviderVal.get())
130       .isSameInstanceAs(basicComponent.booleanArrayProviderFun().get())
131     assertThat(basicComponent.floatArrayProviderVal.get())
132       .isSameInstanceAs(basicComponent.floatArrayProviderFun().get())
133     assertThat(basicComponent.doubleArrayProviderVal.get())
134       .isSameInstanceAs(basicComponent.doubleArrayProviderFun().get())
135   }
136 
137   @Theory
noOpMembersInjectionnull138   fun noOpMembersInjection(basicComponent: BasicComponent) {
139     val someObject = Any()
140     assertThat(basicComponent.noOpMembersInjectionFun(someObject)).isSameInstanceAs(someObject)
141   }
142 
143   @Theory
basicObject_noDepsnull144   fun basicObject_noDeps(basicComponent: BasicComponent) {
145     assertThat(basicComponent.thingFun()).isNotNull()
146     assertThat(basicComponent.thingVal).isNotNull()
147   }
148 
149   @Theory
inheritedMembersInjectionnull150   fun inheritedMembersInjection(basicComponent: BasicComponent) {
151     assertThat(basicComponent.typeWithInheritedMembersInjectionFun().thing).isNotNull()
152 
153     assertThat(basicComponent.typeWithInheritedMembersInjectionVal.thing).isNotNull()
154   }
155 
156   @Theory
nullableInjectionnull157   fun nullableInjection(basicComponent: BasicComponent) {
158     assertThat(basicComponent.nullObjectFun()).isNull()
159     assertThat(basicComponent.nullObjectProviderFun().get()).isNull()
160     assertThat(basicComponent.lazyNullObjectFun().get()).isNull()
161 
162     assertThat(basicComponent.nullObjectVal).isNull()
163     assertThat(basicComponent.nullObjectProviderVal.get()).isNull()
164     assertThat(basicComponent.lazyNullObjectVal.get()).isNull()
165   }
166 
167   @Theory
providerOfLazynull168   fun providerOfLazy(basicComponent: BasicComponent) {
169     val lazyInjectedThingProvider = basicComponent.lazyInjectedThingProviderFun()
170     val lazyInjectedThing1 = lazyInjectedThingProvider.get()
171     val lazyInjectedThing2 = lazyInjectedThingProvider.get()
172     assertThat(lazyInjectedThing2).isNotSameInstanceAs(lazyInjectedThing1)
173     assertThat(lazyInjectedThing1.get()).isSameInstanceAs(lazyInjectedThing1.get())
174     assertThat(lazyInjectedThing2.get()).isSameInstanceAs(lazyInjectedThing2.get())
175     assertThat(lazyInjectedThing2.get()).isNotSameInstanceAs(lazyInjectedThing1.get())
176   }
177 
178   companion object {
179     @JvmField
180     @DataPoint
181     val basicComponent = DaggerBasicComponent.create()
182 
183     @JvmField
184     @DataPoint
185     val abstractClassBasicComponent = DaggerBasicAbstractClassComponent.create()
186   }
187 }
188