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 public class AtomicInitializerTest extends AbstractConcurrentInitializerTest {
29
30
31
32
33
34 @Override
35 protected ConcurrentInitializer<Object> createInitializer() {
36 return new AtomicInitializer<Object>() {
37 @Override
38 protected Object initialize() {
39 return new Object();
40 }
41 };
42 }
43
44 @Test
45 public void testGetThatReturnsNullFirstTime() throws ConcurrentException {
46 final AtomicInitializer<Object> initializer = new AtomicInitializer<Object>() {
47 final AtomicBoolean firstRun = new AtomicBoolean(true);
48
49 @Override
50 protected Object initialize() {
51 if (firstRun.getAndSet(false)) {
52 return null;
53 } else {
54 return new Object();
55 }
56 }
57 };
58
59 assertNull(initializer.get());
60 assertNull(initializer.get());
61 }
62 }