From 6c4989fea7a43222c0720a9ab7121cc78483dc89 Mon Sep 17 00:00:00 2001 From: Michael-Georg Date: Tue, 4 Apr 2017 01:10:09 +0300 Subject: [PATCH] add flatMap, orElse and filter --- src/test/java/option/OptionalExample.java | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) 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); + } }