diff --git a/core-java/src/main/java/com/baeldung/optional/Modem.java b/core-java/src/main/java/com/baeldung/optional/Modem.java new file mode 100644 index 0000000000..c37739819c --- /dev/null +++ b/core-java/src/main/java/com/baeldung/optional/Modem.java @@ -0,0 +1,13 @@ +package com.baeldung.optional; + +public class Modem { + private Double price; + + public Modem(Double price) { + this.price = price; + } + + public Double getPrice() { + return price; + } +} diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java/src/main/java/com/baeldung/optional/Person.java similarity index 95% rename from core-java/src/main/java/com/baeldung/java_8_features/Person.java rename to core-java/src/main/java/com/baeldung/optional/Person.java index 82b6819699..47473c29ea 100644 --- a/core-java/src/main/java/com/baeldung/java_8_features/Person.java +++ b/core-java/src/main/java/com/baeldung/optional/Person.java @@ -1,4 +1,4 @@ -package com.baeldung.java_8_features; +package com.baeldung.optional; import java.util.Optional; diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 93cb3e1eb6..9e20a7144f 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -33,4 +33,4 @@ public class AsyncEchoTest { client.stop(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index 1038043d49..672c4f4aba 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -11,7 +11,8 @@ import java.util.Optional; import org.junit.Test; -import com.baeldung.java_8_features.Person; +import com.baeldung.optional.Person; +import com.baeldung.optional.Modem; public class OptionalTest { // creating Optional @@ -95,7 +96,36 @@ public class OptionalTest { boolean is2017 = yearOptional.filter(y -> y == 2017).isPresent(); assertFalse(is2017); } + @Test + public void whenFiltersWithoutOptional_thenCorrect() { + assertTrue(priceIsInRange1(new Modem(10.0))); + assertFalse(priceIsInRange1(new Modem(9.9))); + assertFalse(priceIsInRange1(new Modem(null))); + assertFalse(priceIsInRange1(new Modem(15.5))); + } + + @Test + public void whenFiltersWithOptional_thenCorrect() { + assertTrue(priceIsInRange2(new Modem(10.0))); + assertFalse(priceIsInRange2(new Modem(9.9))); + assertFalse(priceIsInRange2(new Modem(null))); + assertFalse(priceIsInRange2(new Modem(15.5))); + } + + public boolean priceIsInRange1(Modem modem) { + boolean isInRange = false; + if (modem != null && modem.getPrice() != null && (modem.getPrice() >= 10 && modem.getPrice() <= 15)) { + isInRange = true; + } + return isInRange; + } + + public boolean priceIsInRange2(Modem modem2) { + Optional modemOptional = Optional.ofNullable(modem2); + boolean isInRange = modemOptional.filter(modem -> Optional.ofNullable(modem.getPrice()).orElse(-1.0) >= 10 && modem.getPrice() <= 15).isPresent(); + return isInRange; + } // Transforming Value With map() @Test public void givenOptional_whenMapWorks_thenCorrect() { @@ -203,4 +233,4 @@ public class OptionalTest { System.out.println("Getting default value..."); return "Default Value"; } -} +} \ No newline at end of file