From 8fd3687d1044fcceff4711f3cd6bd5b1f176e297 Mon Sep 17 00:00:00 2001 From: Egor_Kozyrev Date: Fri, 14 Apr 2017 11:56:39 +0300 Subject: [PATCH] optional task --- src/test/java/option/OptionalExample.java | 57 ++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..287fe0c 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; @@ -50,9 +51,61 @@ public void map() { assertEquals(expected, actual); } + @Test + public void testFilter() { + final Optional o1 = getOptional(); + + final Predicate p = String::isEmpty; + + final Optional expected = o1.filter(p); + + final Optional actual; + if (o1.isPresent() && p.test(o1.get())) { + actual = Optional.of(o1.get()); + } else { + actual = Optional.empty(); + } + + assertEquals(expected, actual); + } + + @Test + public void testOrElse() { + final Optional o1 = getOptional(); + + final String expected = o1.orElse("else"); + + final String actual; + if (o1.isPresent()) { + actual = o1.get(); + } else { + actual = "else"; + } + + assertEquals(expected, actual); + } + + @Test + public void testFlatMap() { + final Optional o1 = getOptional(); + + final Function> function = Optional::of; + + final Optional expected = o1.flatMap(function); + + final Optional actual; + if (o1.isPresent()) { + actual = function.apply(o1.get()); + } else { + actual = Optional.empty(); + } + + assertEquals(expected, actual); + } + private Optional getOptional() { return ThreadLocalRandom.current().nextBoolean() - ? Optional.empty() - : Optional.of("abc"); + ? Optional.empty() + : Optional.of("abc"); } }