diff --git a/src/test/java/option/OptionalExample.java b/src/test/java/option/OptionalExample.java index db18993..7102ed6 100644 --- a/src/test/java/option/OptionalExample.java +++ b/src/test/java/option/OptionalExample.java @@ -1,12 +1,13 @@ package option; +import static org.junit.Assert.assertEquals; + import org.junit.Test; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Function; - -import static org.junit.Assert.assertEquals; +import java.util.function.Predicate; public class OptionalExample { @@ -18,7 +19,7 @@ public void get() { o1.orElse("t"); o1.orElseGet(() -> "t"); - o1.orElseThrow(() -> new UnsupportedOperationException()); +// o1.orElseThrow(() -> new UnsupportedOperationException()); } @Test @@ -55,4 +56,57 @@ private Optional getOptional() { ? Optional.empty() : Optional.of("abc"); } + + @Test + public void filter(){ + + final Optional o1 = getOptional(); + + final Predicate lenIs3 = string -> string.length() == 3; + + final Optional expected = o1.filter(lenIs3); + + final Optional actual; + + if(o1.isPresent() && lenIs3.test(o1.get())) + actual = Optional.of(o1.get()); + else + actual = Optional.empty(); + + assertEquals(expected, actual); + } + + @Test + public void flatMap(){ + + final Optional o1 = getOptional(); + + final Function> func = Optional::of; + + final Optional expected = o1.flatMap(func); + + final Optional actual; + + if(o1.isPresent()) + actual = func.apply(o1.get()); + else actual = Optional.empty(); + + assertEquals(expected, actual); + } + + @Test + public void orElse(){ + + final Optional o1 = getOptional(); + + final String expected = o1.orElse("orElse"); + + final String actual; + + if(o1.isPresent()) + actual = o1.get(); + else actual = "orElse"; + + assertEquals(expected, actual); + } }