diff --git a/vavr/src/main/java/com/baeldung/vavr/future/Tester.java b/vavr/src/main/java/com/baeldung/vavr/future/Tester.java deleted file mode 100644 index 7e07027509..0000000000 --- a/vavr/src/main/java/com/baeldung/vavr/future/Tester.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.vavr.future; - -import static org.junit.Assert.assertEquals; -import org.junit.Test; - -import io.vavr.concurrent.Future; - -public class Tester { - - @Test - public void start() { - Future resultFuture = Future.of(() -> addOne(4)); - Integer result = resultFuture.get(); - - assertEquals(5, (int) result); - } - - public Integer addOne(Integer num) { - return num + 1; - } - -} diff --git a/vavr/src/main/java/com/vavr/future/Util.java b/vavr/src/main/java/com/baeldung/vavr/future/Util.java similarity index 85% rename from vavr/src/main/java/com/vavr/future/Util.java rename to vavr/src/main/java/com/baeldung/vavr/future/Util.java index bd8d623af7..9339a6742e 100644 --- a/vavr/src/main/java/com/vavr/future/Util.java +++ b/vavr/src/main/java/com/baeldung/vavr/future/Util.java @@ -1,4 +1,4 @@ -package com.vavr.future; +package com.baeldung.vavr.future; public class Util { diff --git a/vavr/src/test/java/com/vavr/future/FutureTest.java b/vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java similarity index 99% rename from vavr/src/test/java/com/vavr/future/FutureTest.java rename to vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java index bac4487c83..ae05748124 100644 --- a/vavr/src/test/java/com/vavr/future/FutureTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java @@ -1,4 +1,4 @@ -package com.vavr.future; +package com.baeldung.vavr.future; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java deleted file mode 100644 index 437742c964..0000000000 --- a/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.baeldung.vavr.future; - -import static io.vavr.API.$; -import static io.vavr.API.Case; -import static io.vavr.API.Match; -import static io.vavr.Predicates.exists; -import static io.vavr.Predicates.forAll; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.concurrent.CancellationException; -import java.util.function.Consumer; -import java.util.function.Predicate; - -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.internal.verification.VerificationModeFactory; -import org.mockito.verification.Timeout; - -import io.vavr.Tuple; -import io.vavr.Tuple2; -import io.vavr.collection.List; -import io.vavr.concurrent.Future; -import io.vavr.control.Try; - -public class FutureUnitTest { - - private final String SUCCESS = "Success"; - private final String FAILURE = "Failure"; - - @Test - public void givenFunctionReturnInteger_WhenCallWithFuture_ShouldReturnFunctionValue() { - Future future = Future.of(() -> 1); - - assertEquals(1, future.get().intValue()); - } - - @Test - public void givenFunctionGetRemoteHttpResourceAsString_WhenCallSuccessWithFuture_ShouldReturnContentValueAsString() { - String url = "http://resource"; - String content = "Content from " + url; - Future future = Future.of(() -> getResource(url)); - - assertEquals(content, future.get()); - } - - @Test - public void givenFunctionThrowException_WhenCallWithFuture_ShouldReturnFailure() { - Future future = Future.of(() -> getResourceThrowException("")); - future.await(); - - assertTrue(future.isFailure()); - } - - @Test - public void givenAFutureReturnZero_WhenCheckFutureWithExistEvenValue_ShouldReturnRight() { - Future future = Future.of(() -> 2); - boolean result = future.exists(i -> i % 2 == 0); - - assertTrue(result); - } - - @Test - public void givenFunction_WhenCallWithFutureAndRegisterConsumerForSuccess_ShouldCallConsumerToStoreValue() { - Future future = Future.of(() -> 1); - MockConsumer consumer = Mockito.mock(MockConsumer.class); - future.onSuccess(consumer); - Mockito.verify(consumer, new Timeout(1000, VerificationModeFactory.times(1))).accept(1); - } - - @Test - public void givenFunctionThrowException_WhenCallWithFutureAndRegisterConsumerForFailer_ShouldCallConsumerToStoreException() { - Future future = Future.of(() -> getResourceThrowException("")); - MockThrowableConsumer consumer = Mockito.mock(MockThrowableConsumer.class); - future.onFailure(consumer); - Mockito.verify(consumer, new Timeout(1000, VerificationModeFactory.times(1))).accept(Mockito.any()); - } - - @Test - public void givenAFuture_WhenAddAndThenConsumer_ShouldCallConsumerWithResultOfFutureAction() { - MockTryConsumer consumer1 = Mockito.mock(MockTryConsumer.class); - MockTryConsumer consumer2 = Mockito.mock(MockTryConsumer.class); - Future future = Future.of(() -> 1); - Future andThenFuture = future.andThen(consumer1).andThen(consumer2); - andThenFuture.await(); - Mockito.verify(consumer1, VerificationModeFactory.times(1)).accept(Try.success(1)); - Mockito.verify(consumer2, VerificationModeFactory.times(1)).accept(Try.success(1)); - } - - @Test - public void givenAFailureFuture_WhenCallOrElseFunction_ShouldReturnNewFuture() { - Future future = Future.failed(new RuntimeException()); - Future future2 = future.orElse(Future.of(() -> 2)); - - assertEquals(2, future2.get().intValue()); - } - - @Test(expected = CancellationException.class) - public void givenAFuture_WhenCallCancel_ShouldReturnCancellationException() { - long waitTime = 1000; - Future future = Future.of(() -> { - Thread.sleep(waitTime); - return 1; - }); - future.cancel(); - future.await(); - future.get(); - } - - @Test - public void givenAFuture_WhenCallFallBackWithSuccessFuture_ShouldReturnFutureResult() { - String expectedResult = "take this"; - Future future = Future.of(() -> expectedResult); - Future secondFuture = Future.of(() -> "take that"); - Future futureResult = future.fallbackTo(secondFuture); - futureResult.await(); - - assertEquals(expectedResult, futureResult.get()); - } - - @Test - public void givenAFuture_WhenCallFallBackWithFailureFuture_ShouldReturnValueOfFallBackFuture() { - String expectedResult = "take that"; - Future future = Future.failed(new RuntimeException()); - Future fallbackFuture = Future.of(() -> expectedResult); - Future futureResult = future.fallbackTo(fallbackFuture); - - assertEquals(expectedResult, futureResult.get()); - } - - @Test - public void givenAFuture_WhenTransformByAddingOne_ShouldReturn() { - Future future = Future.of(() -> 1).transformValue(f -> Try.of(() -> "Hello: " + f.get())); - - assertEquals("Hello: 1", future.get()); - } - - @Test - public void givenAFutureOfInt_WhenMapToString_ShouldCombineAndReturn() { - Future future = Future.of(()->1).map(i -> "Hello: " + i); - - assertEquals("Hello: 1", future.get()); - } - - @Test - public void givenAFutureOfInt_WhenFlatMapToString_ShouldCombineAndReturn() { - Future futureMap = Future.of(() -> 1).flatMap((i) -> Future.of(() -> "Hello: " + i)); - - assertEquals("Hello: 1", futureMap.get()); - } - - @Test - public void givenAFutureOf2String_WhenZip_ShouldReturnTupleOf2String() { - Future> future = Future.of(() -> "hello").zip(Future.of(() -> "world")); - - assertEquals(Tuple.of("hello", "world"), future.get()); - } - - @Test - public void givenGetResourceWithFuture_WhenWaitAndMatchWithPredicate_ShouldReturnSuccess() { - String url = "http://resource"; - Future future = Future.of(() -> getResource(url)); - future.await(); - String s = Match(future).of( - Case($(future0 -> future0.isSuccess()), SUCCESS), - Case($(), FAILURE)); - - assertEquals(SUCCESS, s); - } - - @Test - public void givenAFailedFuture_WhenWaitAndMatchWithPredicateCheckSuccess_ShouldReturnFailed() { - Future future = Future.failed(new RuntimeException()); - future.await(); - String s = Match(future).of( - Case($(future0 -> future0.isSuccess()), SUCCESS), - Case($(), FAILURE)); - - assertEquals(FAILURE, s); - } - - @Test - public void givenAFuture_WhenMatchWithFuturePredicate_ShouldReturnSuccess() { - Future future = Future.of(() -> { - Thread.sleep(10); - return 1; - }); - Predicate> predicate = f -> f.exists(i -> i % 2 == 1); - - String s = Match(future).of( - Case($(predicate), "Even"), - Case($(), "Odd")); - - assertEquals("Even", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithExistEvenNumberPredicate_ShouldReturnSuccess() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i % 2 == 0); - String s = Match(futures).of( - Case($(exists(predicate0)), "Even"), - Case($(), "Odd")); - - assertEquals("Even", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberBiggerThanZeroPredicate_ShouldReturnSuccess() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i > 0); - String s = Match(futures).of( - Case($(forAll(predicate0)), "Positive numbers"), - Case($(), "None")); - - assertEquals("Positive numbers", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberSmallerThanZeroPredicate_ShouldReturnFailed() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i < 0); - String s = Match(futures).of( - Case($(forAll(predicate0)), "Negative numbers"), - Case($(), "None")); - - assertEquals("None", s); - } - - private String getResource(String url) { - try { - Thread.sleep(10); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - return "Content from " + url; - } - - private String getResourceThrowException(String url) { - throw new RuntimeException("Exception when get resource " + url); - } - - private List> getFutureOfFirst3Number() { - List> futures = List.of(Future.of(() -> 1), Future.of(() -> 2), Future.of(() -> 3)); - return futures; - } - - private static void checkOnSuccessFunction() { - Future future = Future.of(() -> 1); - future.onSuccess(i -> System.out.println("Future finish with result: " + i)); - } - - private static void checkOnFailureFunction() { - Future future = Future.of(() -> {throw new RuntimeException("Failed");}); - future.onFailure(t -> System.out.println("Future failures with exception: " + t)); - } - - private static void runAndThenConsumer() { - Future future = Future.of(() -> 1); - future.andThen(i -> System.out.println("Do side-effect action 1 with input: " + i.get())). - andThen((i) -> System.out.println("Do side-effect action 2 with input: " + i.get())); - } - - public static void main(String[] args) throws InterruptedException { - checkOnSuccessFunction(); - checkOnFailureFunction(); - runAndThenConsumer(); - Thread.sleep(1000); - } -} - - -class MockConsumer implements Consumer { - @Override - public void accept(Integer t) { - } -} - -class MockTryConsumer implements Consumer> { - @Override - public void accept(Try t) { - } -} - -class MockThrowableConsumer implements Consumer { - @Override - public void accept(Throwable t) { - } -}