diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..1db20cc 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -2,9 +2,12 @@ import org.junit.Test; +import java.io.FileNotFoundException; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; import static org.junit.Assert.assertEquals; @@ -50,9 +53,51 @@ public void map() { assertEquals(expected, actual); } + @Test + public void filter() { + Optional optional = getOptional(); + Predicate predicate = String::isEmpty; + Optional actual = + (optional.isPresent() && predicate.test(optional.get())) ? optional : Optional.empty(); + Optional expected = optional.filter(predicate); + + assertEquals(expected, actual); + } + + @Test + public void flatMap() { + Optional optional = getOptional(); + Function> function = s -> Optional.of(s.toUpperCase()); + Optional actual = (optional.isPresent()) ? function.apply(optional.get()) : Optional.empty(); + Optional expected = optional.flatMap(function); + + assertEquals(expected, actual); + } + + @Test + public void orElse() { + Optional optional = Optional.empty(); + String other = null; + String actual = optional.isPresent() ? optional.get() : other; + String expected = optional.orElse(other); + + assertEquals(expected, actual); + } + + @Test + public void orElseGet() { + Optional optional = Optional.empty(); + String toReturn = null; + Supplier stringSupplier = () -> toReturn; + String actual = optional.isPresent() ? optional.get() : stringSupplier.get(); + String expected = optional.orElseGet(stringSupplier); + + assertEquals(expected, actual); + } + private Optional getOptional() { return ThreadLocalRandom.current().nextBoolean() - ? Optional.empty() - : Optional.of("abc"); + ? Optional.empty() + : Optional.of("abc"); } }