From b70c5e1df671c7575a780a5900c8058d15768a2d Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 15:50:39 +0300 Subject: [PATCH 1/6] Added filter() --- src/test/java/option/OptionalExample.java | 46 +++++++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..667fd60 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -1,18 +1,25 @@ package option; +import com.google.common.base.Strings; import org.junit.Test; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; +import java.util.function.BiFunction; import java.util.function.Function; +import java.util.function.Predicate; import static org.junit.Assert.assertEquals; public class OptionalExample { + public static Optional zipMap(Optional o1, Optional o2, BiFunction f) { + throw new UnsupportedOperationException(); + } + @Test public void get() { - final Optional o1 = Optional.empty(); + Optional o1 = Optional.empty(); o1.ifPresent(s -> System.out.println(s)); @@ -23,7 +30,7 @@ public void get() { @Test public void ifPresent() { - final Optional o1 = getOptional(); + Optional o1 = this.getOptional(); o1.ifPresent(System.out::println); @@ -34,13 +41,13 @@ public void ifPresent() { @Test public void map() { - final Optional o1 = getOptional(); + Optional o1 = this.getOptional(); - final Function getLength = String::length; + Function getLength = String::length; - final Optional expected = o1.map(getLength); + Optional expected = o1.map(getLength); - final Optional actual; + Optional actual; if (o1.isPresent()) { actual = Optional.of(getLength.apply(o1.get())); } else { @@ -50,9 +57,32 @@ public void map() { assertEquals(expected, actual); } + + @Test + public void filter() { + Optional o1 = this.getOptional(); + + Predicate isEmpty = s -> Strings.isNullOrEmpty(s); + + Optional expected = o1.filter(isEmpty); + + Optional actual; + if (o1.isPresent()) { + if (isEmpty.test(o1.get())) { + actual = Optional.empty(); + } else { + actual = Optional.of(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"); } } From 75639c06b9f953c910fd46a85b11f588d694d435 Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 15:57:53 +0300 Subject: [PATCH 2/6] Fixed filter --- src/test/java/option/OptionalExample.java | 37 +++++++++++++++++------ 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index 667fd60..a7d8dd4 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -30,7 +30,7 @@ public void get() { @Test public void ifPresent() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); o1.ifPresent(System.out::println); @@ -41,7 +41,7 @@ public void ifPresent() { @Test public void map() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); Function getLength = String::length; @@ -60,18 +60,18 @@ public void map() { @Test public void filter() { - Optional o1 = this.getOptional(); + Optional opt = getOptional(); - Predicate isEmpty = s -> Strings.isNullOrEmpty(s); + Predicate test = s -> s.equals("fffff"); - Optional expected = o1.filter(isEmpty); + Optional expected = opt.filter(test); Optional actual; - if (o1.isPresent()) { - if (isEmpty.test(o1.get())) { - actual = Optional.empty(); + if (opt.isPresent()) { + if (test.test(opt.get())) { + actual = opt; } else { - actual = Optional.of(o1.get()); + actual = Optional.empty(); } } else { actual = Optional.empty(); @@ -79,6 +79,25 @@ public void filter() { assertEquals(expected, actual); } + @Test + public void flatMap() { + + Optional o1 = this.getOptional(); + + Function> getLength = s -> Optional.of(s.length()); + + Optional expected = o1.flatMap(getLength); + + Optional actual; + if (o1.isPresent()) { + actual = getLength.apply(o1.get()); + } else { + actual = Optional.empty(); + } + assertEquals(expected, actual); + } + + private Optional getOptional() { return ThreadLocalRandom.current().nextBoolean() From f6a2f5bafd663feae6743245bb5fc1c8d9340f2e Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 15:59:18 +0300 Subject: [PATCH 3/6] Added flatmap --- src/test/java/option/OptionalExample.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index a7d8dd4..5d8fc8b 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -30,7 +30,7 @@ public void get() { @Test public void ifPresent() { - Optional o1 = getOptional(); + Optional o1 = this.getOptional(); o1.ifPresent(System.out::println); @@ -41,7 +41,7 @@ public void ifPresent() { @Test public void map() { - Optional o1 = getOptional(); + Optional o1 = this.getOptional(); Function getLength = String::length; @@ -60,7 +60,7 @@ public void map() { @Test public void filter() { - Optional opt = getOptional(); + Optional opt = this.getOptional(); Predicate test = s -> s.equals("fffff"); @@ -82,15 +82,15 @@ public void filter() { @Test public void flatMap() { - Optional o1 = this.getOptional(); + Optional opt = getOptional(); Function> getLength = s -> Optional.of(s.length()); - Optional expected = o1.flatMap(getLength); + Optional expected = opt.flatMap(getLength); Optional actual; - if (o1.isPresent()) { - actual = getLength.apply(o1.get()); + if (opt.isPresent()) { + actual = getLength.apply(opt.get()); } else { actual = Optional.empty(); } From eefc3d4bbd59d3cb332018110590f7a4e7962f4b Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 16:05:09 +0300 Subject: [PATCH 4/6] Added orElse --- src/test/java/option/OptionalExample.java | 26 +++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index 5d8fc8b..1661be2 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -30,7 +30,7 @@ public void get() { @Test public void ifPresent() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); o1.ifPresent(System.out::println); @@ -41,7 +41,7 @@ public void ifPresent() { @Test public void map() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); Function getLength = String::length; @@ -60,7 +60,7 @@ public void map() { @Test public void filter() { - Optional opt = this.getOptional(); + Optional opt = getOptional(); Predicate test = s -> s.equals("fffff"); @@ -82,7 +82,7 @@ public void filter() { @Test public void flatMap() { - Optional opt = getOptional(); + Optional opt = this.getOptional(); Function> getLength = s -> Optional.of(s.length()); @@ -97,6 +97,24 @@ public void flatMap() { assertEquals(expected, actual); } + @Test + public void orElse() { + + Optional opt = this.getOptional(); + + String exp = "fffff"; + + String expected = opt.orElse(exp); + + String actual; + + if (opt.isPresent()) { + actual = opt.get(); + } else { + actual = exp; + } + assertEquals(expected, actual); + } private Optional getOptional() { From 782ea19c3d742c44ba059e51cd3067e9c615cf8f Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 16:10:23 +0300 Subject: [PATCH 5/6] Added orElseGet --- src/test/java/option/OptionalExample.java | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index 1661be2..5999bd4 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -8,6 +8,7 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import static org.junit.Assert.assertEquals; @@ -30,7 +31,7 @@ public void get() { @Test public void ifPresent() { - Optional o1 = getOptional(); + Optional o1 = this.getOptional(); o1.ifPresent(System.out::println); @@ -41,7 +42,7 @@ public void ifPresent() { @Test public void map() { - Optional o1 = getOptional(); + Optional o1 = this.getOptional(); Function getLength = String::length; @@ -60,7 +61,7 @@ public void map() { @Test public void filter() { - Optional opt = getOptional(); + Optional opt = this.getOptional(); Predicate test = s -> s.equals("fffff"); @@ -82,7 +83,7 @@ public void filter() { @Test public void flatMap() { - Optional opt = this.getOptional(); + Optional opt = getOptional(); Function> getLength = s -> Optional.of(s.length()); @@ -100,7 +101,7 @@ public void flatMap() { @Test public void orElse() { - Optional opt = this.getOptional(); + Optional opt = getOptional(); String exp = "fffff"; @@ -116,6 +117,26 @@ public void orElse() { assertEquals(expected, actual); } + @Test + public void orElseGet() { + Optional opt = this.getOptional(); + + Supplier supplier = () -> "ffff"; + String expected = opt.orElseGet(supplier); + + String actual; + + if (opt.isPresent()) { + actual = opt.get(); + } else { + actual = supplier.get(); + } + + assertEquals(expected, actual); + } + + + private Optional getOptional() { return ThreadLocalRandom.current().nextBoolean() From a9eabb06ae7e684c0d64fd39a9bd8c26b9848f4e Mon Sep 17 00:00:00 2001 From: TimWinnicheck Date: Sun, 25 Jun 2017 16:18:19 +0300 Subject: [PATCH 6/6] Added orElseThrow(?) --- src/test/java/option/OptionalExample.java | 33 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index 5999bd4..50a732c 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -31,7 +31,7 @@ public void get() { @Test public void ifPresent() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); o1.ifPresent(System.out::println); @@ -42,7 +42,7 @@ public void ifPresent() { @Test public void map() { - Optional o1 = this.getOptional(); + Optional o1 = getOptional(); Function getLength = String::length; @@ -61,7 +61,7 @@ public void map() { @Test public void filter() { - Optional opt = this.getOptional(); + Optional opt = getOptional(); Predicate test = s -> s.equals("fffff"); @@ -83,7 +83,7 @@ public void filter() { @Test public void flatMap() { - Optional opt = getOptional(); + Optional opt = this.getOptional(); Function> getLength = s -> Optional.of(s.length()); @@ -101,7 +101,7 @@ public void flatMap() { @Test public void orElse() { - Optional opt = getOptional(); + Optional opt = this.getOptional(); String exp = "fffff"; @@ -119,7 +119,7 @@ public void orElse() { @Test public void orElseGet() { - Optional opt = this.getOptional(); + Optional opt = getOptional(); Supplier supplier = () -> "ffff"; String expected = opt.orElseGet(supplier); @@ -135,7 +135,28 @@ public void orElseGet() { assertEquals(expected, actual); } + @Test + public void orElseThrow() { + + Optional opt = this.getOptional(); + Supplier exception = () -> new Exception("message"); + Optional actual; + try { + Optional expected = Optional.of(opt.orElseThrow(exception)); + if (opt.isPresent()) { + actual = Optional.of(opt.get()); + assertEquals(expected, actual); + } else { + actual = Optional.empty(); + assertEquals(expected, actual); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + assertEquals("message", e.getMessage()); + } + + } private Optional getOptional() {