xref: /aosp_15_r20/external/dagger2/javatests/dagger/functional/basic/BasicTest.java (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1*f585d8a3SJacky Wang /*
2*f585d8a3SJacky Wang  * Copyright (C) 2014 The Dagger Authors.
3*f585d8a3SJacky Wang  *
4*f585d8a3SJacky Wang  * Licensed under the Apache License, Version 2.0 (the "License");
5*f585d8a3SJacky Wang  * you may not use this file except in compliance with the License.
6*f585d8a3SJacky Wang  * You may obtain a copy of the License at
7*f585d8a3SJacky Wang  *
8*f585d8a3SJacky Wang  * http://www.apache.org/licenses/LICENSE-2.0
9*f585d8a3SJacky Wang  *
10*f585d8a3SJacky Wang  * Unless required by applicable law or agreed to in writing, software
11*f585d8a3SJacky Wang  * distributed under the License is distributed on an "AS IS" BASIS,
12*f585d8a3SJacky Wang  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*f585d8a3SJacky Wang  * See the License for the specific language governing permissions and
14*f585d8a3SJacky Wang  * limitations under the License.
15*f585d8a3SJacky Wang  */
16*f585d8a3SJacky Wang 
17*f585d8a3SJacky Wang package dagger.functional.basic;
18*f585d8a3SJacky Wang 
19*f585d8a3SJacky Wang import static com.google.common.truth.Truth.assertThat;
20*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_BOOLEAN;
21*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_BOOLEAN_ARRAY;
22*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_BYTE;
23*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_BYTE_ARRAY;
24*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_CHAR;
25*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_CHAR_ARRAY;
26*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_DOUBLE;
27*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_DOUBLE_ARRAY;
28*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_FLOAT;
29*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_FLOAT_ARRAY;
30*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_INT;
31*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_INT_ARRAY;
32*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_LONG;
33*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_LONG_ARRAY;
34*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_SHORT;
35*f585d8a3SJacky Wang import static dagger.functional.basic.PrimitivesModule.BOUND_SHORT_ARRAY;
36*f585d8a3SJacky Wang 
37*f585d8a3SJacky Wang import dagger.Lazy;
38*f585d8a3SJacky Wang import javax.inject.Provider;
39*f585d8a3SJacky Wang import org.junit.experimental.theories.DataPoint;
40*f585d8a3SJacky Wang import org.junit.experimental.theories.Theories;
41*f585d8a3SJacky Wang import org.junit.experimental.theories.Theory;
42*f585d8a3SJacky Wang import org.junit.runner.RunWith;
43*f585d8a3SJacky Wang 
44*f585d8a3SJacky Wang @RunWith(Theories.class)
45*f585d8a3SJacky Wang public class BasicTest {
46*f585d8a3SJacky Wang   @DataPoint
47*f585d8a3SJacky Wang   public static final BasicComponent basicComponent = DaggerBasicComponent.create();
48*f585d8a3SJacky Wang   @DataPoint
49*f585d8a3SJacky Wang   public static final BasicComponent abstractClassBasicComponent =
50*f585d8a3SJacky Wang       DaggerBasicAbstractClassComponent.create();
51*f585d8a3SJacky Wang 
primitives(BasicComponent basicComponent)52*f585d8a3SJacky Wang   @Theory public void primitives(BasicComponent basicComponent) {
53*f585d8a3SJacky Wang     assertThat(basicComponent.getByte()).isEqualTo(BOUND_BYTE);
54*f585d8a3SJacky Wang     assertThat(basicComponent.getChar()).isEqualTo(BOUND_CHAR);
55*f585d8a3SJacky Wang     assertThat(basicComponent.getShort()).isEqualTo(BOUND_SHORT);
56*f585d8a3SJacky Wang     assertThat(basicComponent.getInt()).isEqualTo(BOUND_INT);
57*f585d8a3SJacky Wang     assertThat(basicComponent.getLong()).isEqualTo(BOUND_LONG);
58*f585d8a3SJacky Wang     assertThat(basicComponent.getBoolean()).isEqualTo(BOUND_BOOLEAN);
59*f585d8a3SJacky Wang     assertThat(basicComponent.getFloat()).isEqualTo(BOUND_FLOAT);
60*f585d8a3SJacky Wang     assertThat(basicComponent.getDouble()).isEqualTo(BOUND_DOUBLE);
61*f585d8a3SJacky Wang   }
62*f585d8a3SJacky Wang 
boxedPrimitives(BasicComponent basicComponent)63*f585d8a3SJacky Wang   @Theory public void boxedPrimitives(BasicComponent basicComponent) {
64*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedByte()).isEqualTo(new Byte(BOUND_BYTE));
65*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedChar()).isEqualTo(new Character(BOUND_CHAR));
66*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedShort()).isEqualTo(new Short(BOUND_SHORT));
67*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedInt()).isEqualTo(new Integer(BOUND_INT));
68*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedLong()).isEqualTo(new Long(BOUND_LONG));
69*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedBoolean()).isEqualTo(new Boolean(BOUND_BOOLEAN));
70*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedFloat()).isEqualTo(BOUND_FLOAT);
71*f585d8a3SJacky Wang     assertThat(basicComponent.getBoxedDouble()).isEqualTo(BOUND_DOUBLE);
72*f585d8a3SJacky Wang   }
73*f585d8a3SJacky Wang 
boxedPrimitiveProviders(BasicComponent basicComponent)74*f585d8a3SJacky Wang   @Theory public void boxedPrimitiveProviders(BasicComponent basicComponent) {
75*f585d8a3SJacky Wang     assertThat(basicComponent.getByteProvider().get()).isEqualTo(new Byte(BOUND_BYTE));
76*f585d8a3SJacky Wang     assertThat(basicComponent.getCharProvider().get()).isEqualTo(new Character(BOUND_CHAR));
77*f585d8a3SJacky Wang     assertThat(basicComponent.getShortProvider().get()).isEqualTo(new Short(BOUND_SHORT));
78*f585d8a3SJacky Wang     assertThat(basicComponent.getIntProvider().get()).isEqualTo(new Integer(BOUND_INT));
79*f585d8a3SJacky Wang     assertThat(basicComponent.getLongProvider().get()).isEqualTo(new Long(BOUND_LONG));
80*f585d8a3SJacky Wang     assertThat(basicComponent.getBooleanProvider().get()).isEqualTo(new Boolean(BOUND_BOOLEAN));
81*f585d8a3SJacky Wang     assertThat(basicComponent.getFloatProvider().get()).isEqualTo(BOUND_FLOAT);
82*f585d8a3SJacky Wang     assertThat(basicComponent.getDoubleProvider().get()).isEqualTo(BOUND_DOUBLE);
83*f585d8a3SJacky Wang   }
84*f585d8a3SJacky Wang 
primitiveArrays(BasicComponent basicComponent)85*f585d8a3SJacky Wang   @Theory public void primitiveArrays(BasicComponent basicComponent) {
86*f585d8a3SJacky Wang     assertThat(basicComponent.getByteArray()).isSameInstanceAs(BOUND_BYTE_ARRAY);
87*f585d8a3SJacky Wang     assertThat(basicComponent.getCharArray()).isSameInstanceAs(BOUND_CHAR_ARRAY);
88*f585d8a3SJacky Wang     assertThat(basicComponent.getShortArray()).isSameInstanceAs(BOUND_SHORT_ARRAY);
89*f585d8a3SJacky Wang     assertThat(basicComponent.getIntArray()).isSameInstanceAs(BOUND_INT_ARRAY);
90*f585d8a3SJacky Wang     assertThat(basicComponent.getLongArray()).isSameInstanceAs(BOUND_LONG_ARRAY);
91*f585d8a3SJacky Wang     assertThat(basicComponent.getBooleanArray()).isSameInstanceAs(BOUND_BOOLEAN_ARRAY);
92*f585d8a3SJacky Wang     assertThat(basicComponent.getFloatArray()).isSameInstanceAs(BOUND_FLOAT_ARRAY);
93*f585d8a3SJacky Wang     assertThat(basicComponent.getDoubleArray()).isSameInstanceAs(BOUND_DOUBLE_ARRAY);
94*f585d8a3SJacky Wang   }
95*f585d8a3SJacky Wang 
primitiveArrayProviders(BasicComponent basicComponent)96*f585d8a3SJacky Wang   @Theory public void primitiveArrayProviders(BasicComponent basicComponent) {
97*f585d8a3SJacky Wang     assertThat(basicComponent.getByteArrayProvider().get()).isSameInstanceAs(BOUND_BYTE_ARRAY);
98*f585d8a3SJacky Wang     assertThat(basicComponent.getCharArrayProvider().get()).isSameInstanceAs(BOUND_CHAR_ARRAY);
99*f585d8a3SJacky Wang     assertThat(basicComponent.getShortArrayProvider().get()).isSameInstanceAs(BOUND_SHORT_ARRAY);
100*f585d8a3SJacky Wang     assertThat(basicComponent.getIntArrayProvider().get()).isSameInstanceAs(BOUND_INT_ARRAY);
101*f585d8a3SJacky Wang     assertThat(basicComponent.getLongArrayProvider().get()).isSameInstanceAs(BOUND_LONG_ARRAY);
102*f585d8a3SJacky Wang     assertThat(basicComponent.getBooleanArrayProvider().get())
103*f585d8a3SJacky Wang         .isSameInstanceAs(BOUND_BOOLEAN_ARRAY);
104*f585d8a3SJacky Wang     assertThat(basicComponent.getFloatArrayProvider().get()).isSameInstanceAs(BOUND_FLOAT_ARRAY);
105*f585d8a3SJacky Wang     assertThat(basicComponent.getDoubleArrayProvider().get()).isSameInstanceAs(BOUND_DOUBLE_ARRAY);
106*f585d8a3SJacky Wang   }
107*f585d8a3SJacky Wang 
noOpMembersInjection(BasicComponent basicComponent)108*f585d8a3SJacky Wang   @Theory public void noOpMembersInjection(BasicComponent basicComponent) {
109*f585d8a3SJacky Wang     Object object = new Object();
110*f585d8a3SJacky Wang     assertThat(basicComponent.noOpMembersInjection(object)).isSameInstanceAs(object);
111*f585d8a3SJacky Wang   }
112*f585d8a3SJacky Wang 
basicObject_noDeps(BasicComponent basicComponent)113*f585d8a3SJacky Wang   @Theory public void basicObject_noDeps(BasicComponent basicComponent) {
114*f585d8a3SJacky Wang     assertThat(basicComponent.thing()).isNotNull();
115*f585d8a3SJacky Wang   }
116*f585d8a3SJacky Wang 
inheritedMembersInjection(BasicComponent basicComponent)117*f585d8a3SJacky Wang   @Theory public void inheritedMembersInjection(BasicComponent basicComponent) {
118*f585d8a3SJacky Wang     assertThat(basicComponent.typeWithInheritedMembersInjection().thing).isNotNull();
119*f585d8a3SJacky Wang   }
120*f585d8a3SJacky Wang 
121*f585d8a3SJacky Wang   @Theory
nullableInjection(BasicComponent basicComponent)122*f585d8a3SJacky Wang   public void nullableInjection(BasicComponent basicComponent) {
123*f585d8a3SJacky Wang     assertThat(basicComponent.nullObject()).isNull();
124*f585d8a3SJacky Wang     assertThat(basicComponent.nullObjectProvider().get()).isNull();
125*f585d8a3SJacky Wang     assertThat(basicComponent.lazyNullObject().get()).isNull();
126*f585d8a3SJacky Wang   }
127*f585d8a3SJacky Wang 
128*f585d8a3SJacky Wang   @Theory
providerOfLazy(BasicComponent basicComponent)129*f585d8a3SJacky Wang   public void providerOfLazy(BasicComponent basicComponent) {
130*f585d8a3SJacky Wang     Provider<Lazy<InjectedThing>> lazyInjectedThingProvider =
131*f585d8a3SJacky Wang         basicComponent.lazyInjectedThingProvider();
132*f585d8a3SJacky Wang     Lazy<InjectedThing> lazyInjectedThing1 = lazyInjectedThingProvider.get();
133*f585d8a3SJacky Wang     Lazy<InjectedThing> lazyInjectedThing2 = lazyInjectedThingProvider.get();
134*f585d8a3SJacky Wang     assertThat(lazyInjectedThing2).isNotSameInstanceAs(lazyInjectedThing1);
135*f585d8a3SJacky Wang     assertThat(lazyInjectedThing1.get()).isSameInstanceAs(lazyInjectedThing1.get());
136*f585d8a3SJacky Wang     assertThat(lazyInjectedThing2.get()).isSameInstanceAs(lazyInjectedThing2.get());
137*f585d8a3SJacky Wang     assertThat(lazyInjectedThing2.get()).isNotSameInstanceAs(lazyInjectedThing1.get());
138*f585d8a3SJacky Wang   }
139*f585d8a3SJacky Wang }
140