1515import io .vavr .control .Try ;
1616
1717public 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