Skip to content

Commit 9c1fd05

Browse files
bcorsoDagger Team
authored andcommitted
Cleanup dagger/functional/nullables tests.
This CL moves all classes related to NullabilityTest into the test itself so that all necessary dependencies are encapsulated within the test. This helps readability when there are multiple tests in package so that you don't have to figure out which sources are used by which test. RELNOTES=N/A PiperOrigin-RevId: 506516080
1 parent 757d709 commit 9c1fd05

7 files changed

Lines changed: 105 additions & 194 deletions

File tree

javatests/dagger/functional/nullables/BUILD

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,11 @@ load("//:test_defs.bzl", "GenJavaTests")
2525
package(default_visibility = ["//:src"])
2626

2727
GenJavaTests(
28-
name = "nullables",
29-
srcs = glob(["*.java"]),
28+
name = "NullabilityTest",
29+
srcs = ["NullabilityTest.java"],
3030
javacopts = DOCLINT_HTML_AND_SYNTAX + DOCLINT_REFERENCES,
3131
deps = [
3232
"//:dagger_with_compiler",
33-
"//third_party/java/auto:factory",
34-
"//third_party/java/guava/base",
35-
"//third_party/java/guava/collect",
36-
"//third_party/java/guava/util/concurrent",
37-
"//third_party/java/jsr305_annotations",
38-
"//third_party/java/jsr330_inject",
3933
"//third_party/java/junit",
4034
"//third_party/java/truth",
4135
],

javatests/dagger/functional/nullables/NullComponent.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

javatests/dagger/functional/nullables/NullComponentWithDependency.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

javatests/dagger/functional/nullables/NullFoo.java

Lines changed: 0 additions & 57 deletions
This file was deleted.

javatests/dagger/functional/nullables/NullModule.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

javatests/dagger/functional/nullables/NullabilityTest.java

Lines changed: 103 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,108 @@
1919
import static com.google.common.truth.Truth.assertThat;
2020
import static org.junit.Assert.fail;
2121

22+
import dagger.Component;
23+
import dagger.Module;
24+
import dagger.Provides;
25+
import dagger.Reusable;
26+
import javax.inject.Inject;
2227
import javax.inject.Provider;
2328
import org.junit.Test;
2429
import org.junit.runner.RunWith;
2530
import org.junit.runners.JUnit4;
2631

2732
@RunWith(JUnit4.class)
2833
public class NullabilityTest {
29-
@Test public void testNullability_provides() {
34+
@interface Nullable {}
35+
36+
@Component(dependencies = NullComponent.class)
37+
interface NullComponentWithDependency {
38+
@Nullable String string();
39+
Number number();
40+
Provider<String> stringProvider();
41+
Provider<Number> numberProvider();
42+
}
43+
44+
@Component(modules = NullModule.class)
45+
interface NullComponent {
46+
@Nullable String string();
47+
@Nullable Integer integer();
48+
NullFoo nullFoo();
49+
Number number();
50+
Provider<String> stringProvider();
51+
Provider<Number> numberProvider();
52+
}
53+
54+
@Module
55+
static class NullModule {
56+
Number numberValue = null;
57+
Integer integerCallCount = 0;
58+
59+
@Nullable
60+
@Provides
61+
String provideNullableString() {
62+
return null;
63+
}
64+
65+
@Provides
66+
Number provideNumber() {
67+
return numberValue;
68+
}
69+
70+
@Nullable
71+
@Provides
72+
@Reusable
73+
Integer provideNullReusableInteger() {
74+
integerCallCount++;
75+
return null;
76+
}
77+
}
78+
79+
@SuppressWarnings("BadInject") // This is just for testing purposes.
80+
static class NullFoo {
81+
final String string;
82+
final Number number;
83+
final Provider<String> stringProvider;
84+
final Provider<Number> numberProvider;
85+
86+
@Inject
87+
NullFoo(
88+
@Nullable String string,
89+
Number number,
90+
Provider<String> stringProvider,
91+
Provider<Number> numberProvider) {
92+
this.string = string;
93+
this.number = number;
94+
this.stringProvider = stringProvider;
95+
this.numberProvider = numberProvider;
96+
}
97+
98+
String methodInjectedString;
99+
Number methodInjectedNumber;
100+
Provider<String> methodInjectedStringProvider;
101+
Provider<Number> methodInjectedNumberProvider;
102+
@Inject void inject(
103+
@Nullable String string,
104+
Number number,
105+
Provider<String> stringProvider,
106+
Provider<Number> numberProvider) {
107+
this.methodInjectedString = string;
108+
this.methodInjectedNumber = number;
109+
this.methodInjectedStringProvider = stringProvider;
110+
this.methodInjectedNumberProvider = numberProvider;
111+
}
112+
113+
@Nullable @Inject String fieldInjectedString;
114+
@Inject Number fieldInjectedNumber;
115+
@Inject Provider<String> fieldInjectedStringProvider;
116+
@Inject Provider<Number> fieldInjectedNumberProvider;
117+
}
118+
119+
@Test
120+
public void testNullability_provides() {
30121
NullModule module = new NullModule();
31-
NullComponent component = DaggerNullComponent.builder().nullModule(module).build();
122+
NullComponent component =
123+
DaggerNullabilityTest_NullComponent.builder().nullModule(module).build();
32124

33125
// Can't construct NullFoo because it depends on Number, and Number was null.
34126
try {
@@ -53,9 +145,11 @@ public class NullabilityTest {
53145
nullFoo.fieldInjectedNumberProvider);
54146
}
55147

56-
@Test public void testNullability_reusuable() {
148+
@Test
149+
public void testNullability_reusuable() {
57150
NullModule module = new NullModule();
58-
NullComponent component = DaggerNullComponent.builder().nullModule(module).build();
151+
NullComponent component =
152+
DaggerNullabilityTest_NullComponent.builder().nullModule(module).build();
59153

60154
// Test that the @Nullable @Reusuable binding is cached properly even when the value is null.
61155
assertThat(module.integerCallCount).isEqualTo(0);
@@ -65,7 +159,8 @@ public class NullabilityTest {
65159
assertThat(module.integerCallCount).isEqualTo(1);
66160
}
67161

68-
@Test public void testNullability_components() {
162+
@Test
163+
public void testNullability_components() {
69164
NullComponent nullComponent = new NullComponent() {
70165
@Override public Provider<String> stringProvider() {
71166
return new Provider<String>() {
@@ -100,7 +195,9 @@ public class NullabilityTest {
100195
}
101196
};
102197
NullComponentWithDependency component =
103-
DaggerNullComponentWithDependency.builder().nullComponent(nullComponent).build();
198+
DaggerNullabilityTest_NullComponentWithDependency.builder()
199+
.nullComponent(nullComponent)
200+
.build();
104201
validate(false, component.string(), component.stringProvider(), component.numberProvider());
105202

106203
// Also validate that the component's number() method fails

javatests/dagger/functional/nullables/Nullable.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)