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.junit.Assert;
33 import org.junit.Test;
34
35 public class TestComplexFuture {
36
37 @Test
38 public void testCancelled() throws Exception {
39 final ComplexFuture<Object> future = new ComplexFuture<>(null);
40
41 final Future<Object> dependency1 = new BasicFuture<>(null);
42 future.setDependency(dependency1);
43
44 Assert.assertFalse(future.isDone());
45
46 future.cancel();
47 Assert.assertThat(future.isCancelled(), CoreMatchers.is(true));
48 Assert.assertThat(dependency1.isCancelled(), CoreMatchers.is(true));
49
50 final Future<Object> dependency2 = new BasicFuture<>(null);
51 future.setDependency(dependency2);
52 Assert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
53 }
54
55 @Test
56 public void testCompleted() throws Exception {
57 final ComplexFuture<Object> future = new ComplexFuture<>(null);
58
59 final Future<Object> dependency1 = new BasicFuture<>(null);
60 future.setDependency(dependency1);
61
62 Assert.assertFalse(future.isDone());
63
64 future.completed(Boolean.TRUE);
65 Assert.assertThat(future.isCancelled(), CoreMatchers.is(false));
66 Assert.assertThat(dependency1.isCancelled(), CoreMatchers.is(false));
67
68 final Future<Object> dependency2 = new BasicFuture<>(null);
69 future.setDependency(dependency2);
70 Assert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
71 }
72
73 @Test
74 public void testCancelledWithCallback() throws Exception {
75 final ComplexFuture<Object> future = new ComplexFuture<>(null);
76
77 final Future<Object> dependency1 = new BasicFuture<>(new FutureCallback<Object>() {
78
79 @Override
80 public void completed(final Object result) {
81 }
82
83 @Override
84 public void failed(final Exception ex) {
85 future.failed(ex);
86 }
87
88 @Override
89 public void cancelled() {
90 future.cancel();
91 }
92
93 });
94 future.setDependency(dependency1);
95
96 Assert.assertFalse(future.isDone());
97
98 future.cancel();
99 Assert.assertThat(future.isCancelled(), CoreMatchers.is(true));
100 Assert.assertThat(dependency1.isCancelled(), CoreMatchers.is(true));
101
102 final Future<Object> dependency2 = new BasicFuture<>(null);
103 future.setDependency(dependency2);
104 Assert.assertThat(dependency2.isCancelled(), CoreMatchers.is(true));
105 }
106
107 }