diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..8a0f9eb 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -10,6 +10,9 @@ public class OptionalExample { + private static final String other = "other"; + private static final String ABC = "abc"; + @Test public void get() { final Optional o1 = Optional.empty(); @@ -50,9 +53,65 @@ public void map() { assertEquals(expected, actual); } + @Test + public void orElse() { + Optional o1 = getOptional(); + + String expected = o1.orElse(other); + + String actual = o1.isPresent() ? o1.get() : other; + + assertEquals(expected, actual); + } + + @Test + public void orElseGet() { + Optional o1 = getOptional(); + + String expected = o1.orElseGet(() -> other); + + String actual = o1.isPresent() ? o1.get() : other; + + assertEquals(expected, actual); + } + + @Test + public void filter() { + Optional o1 = getOptional(); + + Optional expected = Optional.of(ABC); + + Optional actual = o1.filter(s -> s.equals(ABC)); + + if (!o1.isPresent()) { + expected = Optional.empty(); + } + + assertEquals(expected, actual); + } + + @Test + public void flatMap() { + Optional o1 = getOptional(); + + Function> firstChar = s -> Optional.of(s.substring(0, 1)); + + Optional expected = o1.flatMap(firstChar); + + Optional actual; + + if (o1.isPresent()) { + actual = firstChar.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); } }