This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push: new 180d948 [LANG-1568] Predicate add. 180d948 is described below commit 180d948d7f0cf73fd9a657ecbcb382b2e9b22cb7 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Jun 25 10:42:13 2020 -0400 [LANG-1568] Predicate add. --- .../lang3/function/FailableBiPredicate.java | 4 +- .../lang3/function/FailableDoublePredicate.java | 25 +++++---- .../lang3/function/FailableIntPredicate.java | 13 +++++ .../lang3/function/FailableLongPredicate.java | 13 +++++ .../commons/lang3/function/FailablePredicate.java | 13 +++++ .../lang3/function/FailableFunctionsTest.java | 60 ++++++++++++++++++++++ 6 files changed, 113 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java b/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java index 56c5028..f5894b3 100644 --- a/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java +++ b/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java @@ -70,9 +70,9 @@ public interface FailableBiPredicate<T, U, E extends Throwable> { * @return a composed {@code FailableBiPredicate} like {@link BiPredicate#and(BiPredicate)}. * @throws NullPointerException if other is null */ - default FailableBiPredicate<T, U, E> and(FailableBiPredicate<? super T, ? super U, E> other) { + default FailableBiPredicate<T, U, E> and(final FailableBiPredicate<? super T, ? super U, E> other) { Objects.requireNonNull(other); - return (T t, U u) -> test(t, u) && other.test(t, u); + return (final T t, final U u) -> test(t, u) && other.test(t, u); } /** diff --git a/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java b/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java index 0c7def5..badc2a5 100644 --- a/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java +++ b/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java @@ -18,7 +18,6 @@ package org.apache.commons.lang3.function; import java.util.Objects; -import java.util.function.BiPredicate; import java.util.function.DoublePredicate; /** @@ -30,18 +29,6 @@ import java.util.function.DoublePredicate; @FunctionalInterface public interface FailableDoublePredicate<E extends Throwable> { - /** - * Returns a composed {@code FailableBiPredicate} like {@link BiPredicate#and(BiPredicate)}. - * - * @param other a predicate that will be logically-ANDed with this predicate. - * @return a composed {@code FailableBiPredicate} like {@link BiPredicate#and(BiPredicate)}. - * @throws NullPointerException if other is null - */ - default FailableDoublePredicate<E> and(FailableDoublePredicate<E> other) { - Objects.requireNonNull(other); - return t -> test(t) && other.test(t); - } - /** FALSE singleton */ @SuppressWarnings("rawtypes") FailableDoublePredicate FALSE = t -> false; @@ -71,6 +58,18 @@ public interface FailableDoublePredicate<E extends Throwable> { } /** + * Returns a composed {@code FailableDoublePredicate} like {@link DoublePredicate#and(DoublePredicate)}. + * + * @param other a predicate that will be logically-ANDed with this predicate. + * @return a composed {@code FailableDoublePredicate} like {@link DoublePredicate#and(DoublePredicate)}. + * @throws NullPointerException if other is null + */ + default FailableDoublePredicate<E> and(final FailableDoublePredicate<E> other) { + Objects.requireNonNull(other); + return t -> test(t) && other.test(t); + } + + /** * Returns a predicate that negates this predicate. * * @return a predicate that negates this predicate. diff --git a/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java b/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java index babfceb..57e0cb1 100644 --- a/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java +++ b/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java @@ -17,6 +17,7 @@ package org.apache.commons.lang3.function; +import java.util.Objects; import java.util.function.IntPredicate; /** @@ -57,6 +58,18 @@ public interface FailableIntPredicate<E extends Throwable> { } /** + * Returns a composed {@code FailableIntPredicate} like {@link IntPredicate#and(IntPredicate)}. + * + * @param other a predicate that will be logically-ANDed with this predicate. + * @return a composed {@code FailableIntPredicate} like {@link IntPredicate#and(IntPredicate)}. + * @throws NullPointerException if other is null + */ + default FailableIntPredicate<E> and(final FailableIntPredicate<E> other) { + Objects.requireNonNull(other); + return t -> test(t) && other.test(t); + } + + /** * Returns a predicate that negates this predicate. * * @return a predicate that negates this predicate. diff --git a/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java b/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java index 33714aa..154b1df 100644 --- a/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java +++ b/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java @@ -17,6 +17,7 @@ package org.apache.commons.lang3.function; +import java.util.Objects; import java.util.function.LongPredicate; /** @@ -57,6 +58,18 @@ public interface FailableLongPredicate<E extends Throwable> { } /** + * Returns a composed {@code FailableLongPredicate} like {@link LongPredicate#and(LongPredicate)}. + * + * @param other a predicate that will be logically-ANDed with this predicate. + * @return a composed {@code FailableLongPredicate} like {@link LongPredicate#and(LongPredicate)}. + * @throws NullPointerException if other is null + */ + default FailableLongPredicate<E> and(final FailableLongPredicate<E> other) { + Objects.requireNonNull(other); + return t -> test(t) && other.test(t); + } + + /** * Returns a predicate that negates this predicate. * * @return a predicate that negates this predicate. diff --git a/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java b/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java index 160f2f5..081464a 100644 --- a/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java +++ b/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java @@ -17,6 +17,7 @@ package org.apache.commons.lang3.function; +import java.util.Objects; import java.util.function.Predicate; /** @@ -60,6 +61,18 @@ public interface FailablePredicate<T, E extends Throwable> { } /** + * Returns a composed {@code FailablePredicate} like {@link Predicate#and(Predicate)}. + * + * @param other a predicate that will be logically-ANDed with this predicate. + * @return a composed {@code FailablePredicate} like {@link Predicate#and(Predicate)}. + * @throws NullPointerException if other is null + */ + default FailablePredicate<T, E> and(final FailablePredicate<? super T, E> other) { + Objects.requireNonNull(other); + return t -> test(t) && other.test(t); + } + + /** * Returns a predicate that negates this predicate. * * @return a predicate that negates this predicate. diff --git a/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java b/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java index 957225f..085d839 100644 --- a/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java +++ b/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java @@ -712,6 +712,18 @@ public class FailableFunctionsTest { assertTrue(predicate.test(null, null)); } + @Test + public void testBiPredicateAnd() throws Throwable { + assertTrue(FailableBiPredicate.TRUE.and(FailableBiPredicate.TRUE).test(null, null)); + assertFalse(FailableBiPredicate.TRUE.and(FailableBiPredicate.FALSE).test(null, null)); + assertFalse(FailableBiPredicate.FALSE.and(FailableBiPredicate.TRUE).test(null, null)); + assertFalse(FailableBiPredicate.FALSE.and(FailableBiPredicate.FALSE).test(null, null)); + // null tests + assertThrows(NullPointerException.class, () -> assertFalse(FailableBiPredicate.FALSE.and(null).test(null, null))); + assertThrows(NullPointerException.class, () -> assertTrue(FailableBiPredicate.TRUE.and(null).test(null, null))); + } + + @Test public void testBiPredicateNegate() throws Throwable { assertFalse(FailableBiPredicate.TRUE.negate().test(null, null)); assertFalse(FailableBiPredicate.truePredicate().negate().test(null, null)); @@ -774,6 +786,18 @@ public class FailableFunctionsTest { failablePredicate.test(1d); } + @Test + public void testDoublePredicateAnd() throws Throwable { + assertTrue(FailableDoublePredicate.TRUE.and(FailableDoublePredicate.TRUE).test(0)); + assertFalse(FailableDoublePredicate.TRUE.and(FailableDoublePredicate.FALSE).test(0)); + assertFalse(FailableDoublePredicate.FALSE.and(FailableDoublePredicate.TRUE).test(0)); + assertFalse(FailableDoublePredicate.FALSE.and(FailableDoublePredicate.FALSE).test(0)); + // null tests + assertThrows(NullPointerException.class, () -> assertFalse(FailableDoublePredicate.FALSE.and(null).test(0))); + assertThrows(NullPointerException.class, () -> assertTrue(FailableDoublePredicate.TRUE.and(null).test(0))); + } + + @Test public void testDoublePredicateNegate() throws Throwable { assertFalse(FailableDoublePredicate.TRUE.negate().test(0d)); assertFalse(FailableDoublePredicate.truePredicate().negate().test(0d)); @@ -1052,6 +1076,18 @@ public class FailableFunctionsTest { failablePredicate.test(1); } + @Test + public void testIntPredicateAnd() throws Throwable { + assertTrue(FailableIntPredicate.TRUE.and(FailableIntPredicate.TRUE).test(0)); + assertFalse(FailableIntPredicate.TRUE.and(FailableIntPredicate.FALSE).test(0)); + assertFalse(FailableIntPredicate.FALSE.and(FailableIntPredicate.TRUE).test(0)); + assertFalse(FailableIntPredicate.FALSE.and(FailableIntPredicate.FALSE).test(0)); + // null tests + assertThrows(NullPointerException.class, () -> assertFalse(FailableIntPredicate.FALSE.and(null).test(0))); + assertThrows(NullPointerException.class, () -> assertTrue(FailableIntPredicate.TRUE.and(null).test(0))); + } + + @Test public void testIntPredicateNegate() throws Throwable { assertFalse(FailableIntPredicate.TRUE.negate().test(0)); assertFalse(FailableIntPredicate.truePredicate().negate().test(0)); @@ -1132,6 +1168,18 @@ public class FailableFunctionsTest { failablePredicate.test(1L); } + @Test + public void testLongPredicateAnd() throws Throwable { + assertTrue(FailableLongPredicate.TRUE.and(FailableLongPredicate.TRUE).test(0)); + assertFalse(FailableLongPredicate.TRUE.and(FailableLongPredicate.FALSE).test(0)); + assertFalse(FailableLongPredicate.FALSE.and(FailableLongPredicate.TRUE).test(0)); + assertFalse(FailableLongPredicate.FALSE.and(FailableLongPredicate.FALSE).test(0)); + // null tests + assertThrows(NullPointerException.class, () -> assertFalse(FailableLongPredicate.FALSE.and(null).test(0))); + assertThrows(NullPointerException.class, () -> assertTrue(FailableLongPredicate.TRUE.and(null).test(0))); + } + + @Test public void testLongPredicateNegate() throws Throwable { assertFalse(FailableLongPredicate.TRUE.negate().test(0L)); assertFalse(FailableLongPredicate.truePredicate().negate().test(0L)); @@ -1202,6 +1250,18 @@ public class FailableFunctionsTest { assertNotNull(instance); } + @Test + public void testPredicateAnd() throws Throwable { + assertTrue(FailablePredicate.TRUE.and(FailablePredicate.TRUE).test(null)); + assertFalse(FailablePredicate.TRUE.and(FailablePredicate.FALSE).test(null)); + assertFalse(FailablePredicate.FALSE.and(FailablePredicate.TRUE).test(null)); + assertFalse(FailablePredicate.FALSE.and(FailablePredicate.FALSE).test(null)); + // null tests + assertThrows(NullPointerException.class, () -> assertFalse(FailablePredicate.FALSE.and(null).test(null))); + assertThrows(NullPointerException.class, () -> assertTrue(FailablePredicate.TRUE.and(null).test(null))); + } + + @Test public void testPredicateNegate() throws Throwable { assertFalse(FailablePredicate.TRUE.negate().test(null)); assertFalse(FailablePredicate.truePredicate().negate().test(null));