1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.concurrent;
18
19 import static org.junit.jupiter.api.Assertions.assertNull;
20
21 import java.util.concurrent.atomic.AtomicBoolean;
22
23 import org.junit.jupiter.api.Test;
24
25
26
27
28 class AtomicInitializerObjectTest extends AbstractConcurrentInitializerTest<Object> {
29
30
31
32
33
34
35 @Override
36 protected ConcurrentInitializer<Object> createInitializer() {
37 return new AtomicInitializer<Object>() {
38 @Override
39 protected Object initialize() {
40 return new Object();
41 }
42 };
43 }
44
45 @Test
46 void testGetThatReturnsNullFirstTime() throws ConcurrentException {
47 final AtomicInitializer<Object> initializer = new AtomicInitializer<Object>() {
48 final AtomicBoolean firstRun = new AtomicBoolean(true);
49
50 @Override
51 protected Object initialize() {
52 if (firstRun.getAndSet(false)) {
53 return null;
54 }
55 return new Object();
56 }
57 };
58
59 assertNull(initializer.get());
60 assertNull(initializer.get());
61 }
62 }