diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..711229d 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -5,6 +5,7 @@ import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Function; +import java.util.function.Predicate; import static org.junit.Assert.assertEquals; @@ -55,4 +56,47 @@ private Optional getOptional() { ? Optional.empty() : Optional.of("abc"); } + + @Test + public void flatMap() throws Exception { + final Optional o1 = getOptional(); + + final Function> function = Optional :: of; + + final Optional expected = o1.flatMap(function); + + final Optional actual = o1.isPresent() + ? function.apply(o1.get()) + : Optional.empty(); + + assertEquals(expected, actual); + } + + @Test + public void filter() throws Exception { + final Optional o1 = getOptional(); + + final Predicate isEmptyString = s -> s.equals(""); + + final Optional expected = o1.filter(isEmptyString); + + final Optional actual; + if (o1.isPresent()) + actual = isEmptyString.test(o1.get()) ? o1 : Optional.empty(); + else + actual = Optional.empty(); + + assertEquals(expected, actual); + } + + @Test + public void orElse() throws Exception { + final Optional o1 = getOptional(); + + final String expected = o1.orElse(""); + + final String actual = o1.isPresent() ? o1.get() : ""; + + assertEquals(expected, actual); + } }