From 206bda2fd015805900ca2910fce4da8e27507e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A1=D0=B8?= =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Sat, 24 Jun 2017 09:33:12 +0300 Subject: [PATCH 1/2] Opltional done --- src/test/java/option/OptionalExample.java | 49 ++++++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..6735cb9 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"); } } From ddee315cca6f456dc0c1645fac32dfb4ca79fb61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A1=D0=B8?= =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Sun, 25 Jun 2017 18:40:21 +0300 Subject: [PATCH 2/2] Complete --- src/test/java/option/OptionalExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index 6735cb9..1db20cc 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -94,7 +94,7 @@ public void orElseGet() { assertEquals(expected, actual); } - + private Optional getOptional() { return ThreadLocalRandom.current().nextBoolean() ? Optional.empty()