1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.core5.concurrent;
28
29 import java.util.concurrent.Future;
30
31 import org.hamcrest.CoreMatchers;
32 import org.hamcrest.MatcherAssert;
33 import org.junit.Assert;
34 import org.junit.Test;
35
36 public class TestComplexFuture {
37
38 @Test
39 public void testCancelled() throws Exception {
40 final ComplexFuture<Object> future = new ComplexFuture<>(null);
41
42 final Future<Object> dependency1 = new BasicFuture<>(null);
43 future.setDependency(dependency1);
44
45 Assert.assertFalse(future.isDone());
46
47 future.cancel();
48 MatcherAssert.assertThat(future.isCancelled(), CoreMatchers.is(true));
49 MatcherAssert.assertThat(dependency1.isCancelled(), CoreMatchers.is(true));
50
51 final Future<Object> dependency2 = new BasicFuture<>(null);
52 future.setDependency(dependency2);
53 MatcherAssert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
54 }
55
56 @Test
57 public void testCompleted() throws Exception {
58 final ComplexFuture<Object> future = new ComplexFuture<>(null);
59
60 final Future<Object> dependency1 = new BasicFuture<>(null);
61 future.setDependency(dependency1);
62
63 Assert.assertFalse(future.isDone());
64
65 future.completed(Boolean.TRUE);
66 MatcherAssert.assertThat(future.isCancelled(), CoreMatchers.is(false));
67 MatcherAssert.assertThat(dependency1.isCancelled(), CoreMatchers.is(false));
68
69 final Future<Object> dependency2 = new BasicFuture<>(null);
70 future.setDependency(dependency2);
71 MatcherAssert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
72 }
73
74 @Test
75 public void testCancelledWithCallback() throws Exception {
76 final ComplexFuture<Object> future = new ComplexFuture<>(null);
77
78 final Future<Object> dependency1 = new BasicFuture<>(new FutureContribution<Object>(future) {
79
80 @Override
81 public void completed(final Object result) {
82 }
83
84 });
85 future.setDependency(dependency1);
86
87 Assert.assertFalse(future.isDone());
88
89 future.cancel();
90 MatcherAssert.assertThat(future.isCancelled(), CoreMatchers.is(true));
91 MatcherAssert.assertThat(dependency1.isCancelled(), CoreMatchers.is(true));
92
93 final Future<Object> dependency2 = new BasicFuture<>(null);
94 future.setDependency(dependency2);
95 MatcherAssert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
96 }
97
98 }