Skip to content

Commit ff2cf57

Browse files
author
Ahmed Tawila
committed
BAEL-1080 Introduction to Future in Vavr
1 parent a24e221 commit ff2cf57

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import io.vavr.control.Try;
1616

1717
public class FutureTest {
18+
19+
private static final String error = "Failed to get underlying value.";
1820

1921
@Test
2022
public void whenChangeExecutorService_thenCorrect() throws InterruptedException {
@@ -23,7 +25,7 @@ public void whenChangeExecutorService_thenCorrect() throws InterruptedException
2325
Executors.newSingleThreadExecutor(),
2426
() -> Util.appendData(initialValue));
2527
Thread.sleep(20);
26-
String result = resultFuture.get();
28+
String result = resultFuture.getOrElse(error);
2729

2830
assertThat(result).isEqualTo("Welcome to Baeldung!");
2931
}
@@ -33,7 +35,7 @@ public void whenAppendData_thenCorrect1() throws InterruptedException {
3335
String initialValue = "Welcome to ";
3436
Future<String> resultFuture = Future.of(() -> Util.appendData(initialValue));
3537
Thread.sleep(20);
36-
String result = resultFuture.get();
38+
String result = resultFuture.getOrElse(new String(error));
3739

3840
assertThat(result).isEqualTo("Welcome to Baeldung!");
3941
}
@@ -46,7 +48,7 @@ public void whenAppendData_thenCorrect2() throws InterruptedException {
4648
resultFuture.await();
4749
Option<Try<String>> futureOption = resultFuture.getValue();
4850
Try<String> futureTry = futureOption.get();
49-
String result = futureTry.get();
51+
String result = futureTry.getOrElse(error);
5052

5153
assertThat(result).isEqualTo("Welcome to Baeldung!");
5254
}
@@ -58,7 +60,7 @@ public void whenAppendData_thenSuccess() throws InterruptedException {
5860
.onSuccess(finalResult -> System.out.println("Successfully Completed - Result: " + finalResult))
5961
.onFailure(finalResult -> System.out.println("Failed - Result: " + finalResult));
6062
Thread.sleep(20);
61-
String result = resultFuture.get();
63+
String result = resultFuture.getOrElse(error);
6264

6365
assertThat(result).isEqualTo("Welcome to Baeldung!");
6466
}
@@ -70,7 +72,7 @@ public void whenChainingCallbacks_thenCorrect() throws InterruptedException {
7072
.andThen(finalResult -> System.out.println("Completed - 1: " + finalResult))
7173
.andThen(finalResult -> System.out.println("Completed - 2: " + finalResult));
7274
Thread.sleep(20);
73-
String result = resultFuture.get();
75+
String result = resultFuture.getOrElse(error);
7476

7577
assertThat(result).isEqualTo("Welcome to Baeldung!");
7678
}
@@ -81,7 +83,7 @@ public void whenCallAwait_thenCorrect() throws InterruptedException {
8183
Future<String> resultFuture = Future.of(() -> Util.appendData(initialValue));
8284
Thread.sleep(20);
8385
resultFuture = resultFuture.await();
84-
String result = resultFuture.get();
86+
String result = resultFuture.getOrElse(error);
8587

8688
assertThat(result).isEqualTo("Welcome to Baeldung!");
8789
}
@@ -91,7 +93,7 @@ public void whenDivideByZero_thenGetThrowable1() throws InterruptedException {
9193
Future<Integer> resultFuture = Future.of(() -> Util.divideByZero(10));
9294
Thread.sleep(20);
9395
Future<Throwable> throwableFuture = resultFuture.failed();
94-
Throwable throwable = throwableFuture.get();
96+
Throwable throwable = throwableFuture.getOrElse(new Throwable());
9597

9698
assertThat(throwable.getMessage()).isEqualTo("/ by zero");
9799
}
@@ -102,7 +104,7 @@ public void whenDivideByZero_thenGetThrowable2() throws InterruptedException {
102104
Thread.sleep(20);
103105
resultFuture.await();
104106
Option<Throwable> throwableOption = resultFuture.getCause();
105-
Throwable throwable = throwableOption.get();
107+
Throwable throwable = throwableOption.getOrElse(new Throwable());
106108

107109
assertThat(throwable.getMessage()).isEqualTo("/ by zero");
108110
}
@@ -135,7 +137,8 @@ public void whenCallZip_thenCorrect() throws InterruptedException {
135137
Thread.sleep(20);
136138
future.await();
137139

138-
assertThat(future.get()).isEqualTo(Tuple.of("John", new Integer(5)));
140+
assertThat(future.getOrElse(new Tuple2<String, Integer>(error, 0)))
141+
.isEqualTo(Tuple.of("John", new Integer(5)));
139142
}
140143

141144
@Test
@@ -155,15 +158,15 @@ public void whenCallMap_thenCorrect() throws InterruptedException {
155158
Thread.sleep(20);
156159
futureResult.await();
157160

158-
assertThat(futureResult.get()).isEqualTo("Hello from Baeldung");
161+
assertThat(futureResult.getOrElse(error)).isEqualTo("Hello from Baeldung");
159162
}
160163

161164
@Test
162165
public void whenFutureFails_thenGetErrorMessage() throws InterruptedException {
163166
Future<String> resultFuture = Future.of(() -> Util.getSubstringMinusOne("Hello"));
164167
Thread.sleep(20);
165168
Future<String> errorMessageFuture = resultFuture.recover(Throwable::getMessage);
166-
String errorMessage = errorMessageFuture.get();
169+
String errorMessage = errorMessageFuture.getOrElse(error);
167170

168171
assertThat(errorMessage).isEqualTo("String index out of range: -1");
169172
}
@@ -173,7 +176,7 @@ public void whenFutureFails_thenGetAnotherFuture() throws InterruptedException {
173176
Future<String> resultFuture = Future.of(() -> Util.getSubstringMinusOne("Hello"));
174177
Thread.sleep(20);
175178
Future<String> errorMessageFuture = resultFuture.recoverWith(a -> Future.of(a::getMessage));
176-
String errorMessage = errorMessageFuture.get();
179+
String errorMessage = errorMessageFuture.getOrElse(error);
177180

178181
assertThat(errorMessage).isEqualTo("String index out of range: -1");
179182
}
@@ -187,7 +190,7 @@ public void whenBothFuturesFail_thenGetErrorMessage() throws InterruptedExceptio
187190
Future<Throwable> errorMessage = errorMessageFuture.failed();
188191

189192
assertThat(
190-
errorMessage.get().getMessage())
193+
errorMessage.getOrElse(new Throwable()).getMessage())
191194
.isEqualTo("String index out of range: -1");
192195
}
193196
}

0 commit comments

Comments
 (0)