From 1130c03c51d7b92c5854c4b1070a4b943fa6816e Mon Sep 17 00:00:00 2001 From: John Sullivan Date: Mon, 23 Jan 2017 16:24:44 -0500 Subject: [PATCH] added ofOptional method and test --- src/main/java/com/jasongoodwin/monads/Try.java | 12 ++++++++++++ src/test/java/com/jasongoodwin/monads/TryTest.java | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/com/jasongoodwin/monads/Try.java b/src/main/java/com/jasongoodwin/monads/Try.java index 3ed44f9..61cb77d 100644 --- a/src/main/java/com/jasongoodwin/monads/Try.java +++ b/src/main/java/com/jasongoodwin/monads/Try.java @@ -32,6 +32,18 @@ public static Try ofFailable(TrySupplier f) { } } + public static Try ofOptional(Optional op, Throwable e) { + if(op.isPresent()) { + return new Success<>(op.get()); + } else { + return new Failure<>(e); + } + } + + public static Try ofOptional(Optional op) { + return ofOptional(op, new IllegalArgumentException("Missing Value")); + } + /** * Transform success or pass on failure. * Takes an optional type parameter of the new type. diff --git a/src/test/java/com/jasongoodwin/monads/TryTest.java b/src/test/java/com/jasongoodwin/monads/TryTest.java index 8138b09..7b8a06e 100644 --- a/src/test/java/com/jasongoodwin/monads/TryTest.java +++ b/src/test/java/com/jasongoodwin/monads/TryTest.java @@ -250,6 +250,20 @@ public void itShouldThrowNewExceptionWhenInvokingOrElseThrowOnFailure() throws T }); } + @Test + public void itShouldCreateSuccessFromPopulatedOptional() throws Throwable { + Try t = Try.ofOptional(Optional.of("foobar"), new IllegalArgumentException("Missing Value")); + assertTrue(t.isSuccess()); + assertEquals(t.get(), "foobar"); + } + + @Test(expected = IllegalArgumentException.class) + public void itShouldCreateFailureFromEmptyOptional() throws Throwable { + Try t = Try.ofOptional(Optional.empty(), new IllegalArgumentException("Missing Value")); + + t.get(); + } + public void itShouldNotThrowNewExceptionWhenInvokingOrElseThrowOnSuccess() throws Throwable { Try t = Try.ofFailable(() -> "Ok");