MCPcopy Index your code
hub / github.com/google/dagger / DoubleCheckTest

Class DoubleCheckTest

javatests/dagger/internal/DoubleCheckTest.java:40–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38import org.junit.runners.JUnit4;
39
40@RunWith(JUnit4.class)
41public class DoubleCheckTest {
42 @Test
43 public void provider_nullPointerException() {
44 try {
45 DoubleCheck.provider(null);
46 fail();
47 } catch (NullPointerException expected) {
48 }
49 }
50
51 @Test
52 public void lazy_nullPointerException() {
53 try {
54 DoubleCheck.lazy(null);
55 fail();
56 } catch (NullPointerException expected) {
57 }
58 }
59
60 private static final Provider<Object> DOUBLE_CHECK_OBJECT_PROVIDER =
61 DoubleCheck.provider(Object::new);
62
63 @Test
64 public void doubleWrapping_provider() {
65 assertThat(DoubleCheck.provider(DOUBLE_CHECK_OBJECT_PROVIDER))
66 .isSameAs(DOUBLE_CHECK_OBJECT_PROVIDER);
67 }
68
69 @Test
70 public void doubleWrapping_lazy() {
71 assertThat(DoubleCheck.lazy(DOUBLE_CHECK_OBJECT_PROVIDER))
72 .isSameAs(DOUBLE_CHECK_OBJECT_PROVIDER);
73 }
74
75 @Test
76 public void get() throws Exception {
77 int numThreads = 10;
78 ExecutorService executor = Executors.newFixedThreadPool(numThreads);
79
80 final CountDownLatch latch = new CountDownLatch(numThreads);
81 LatchedProvider provider = new LatchedProvider(latch);
82 final Lazy<Object> lazy = DoubleCheck.lazy(provider);
83
84 List<Callable<Object>> tasks = Lists.newArrayListWithCapacity(numThreads);
85 for (int i = 0; i < numThreads; i++) {
86 tasks.add(
87 () -> {
88 latch.countDown();
89 return lazy.get();
90 });
91 }
92
93 List<Future<Object>> futures = executor.invokeAll(tasks);
94
95 assertThat(provider.provisions.get()).isEqualTo(1);
96 Set<Object> results = Sets.newIdentityHashSet();
97 for (Future<Object> future : futures) {

Callers

nothing calls this directly

Calls 1

providerMethod · 0.95

Tested by

no test coverage detected