You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/06/25 14:52:44 UTC
[commons-lang] branch master updated: [LANG-1568] Predicate or.
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 268d493 [LANG-1568] Predicate or.
268d493 is described below
commit 268d4936d4136ce35af688617bbd6874b0854f4c
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jun 25 10:52:37 2020 -0400
[LANG-1568] Predicate or.
---
.../lang3/function/FailableBiPredicate.java | 12 ++++
.../lang3/function/FailableDoublePredicate.java | 12 ++++
.../lang3/function/FailableIntPredicate.java | 12 ++++
.../lang3/function/FailableLongPredicate.java | 12 ++++
.../commons/lang3/function/FailablePredicate.java | 12 ++++
.../lang3/function/FailableFunctionsTest.java | 72 +++++++++++++++++++---
6 files changed, 124 insertions(+), 8 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 f5894b3..5258daa 100644
--- a/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java
+++ b/src/main/java/org/apache/commons/lang3/function/FailableBiPredicate.java
@@ -85,6 +85,18 @@ public interface FailableBiPredicate<T, U, E extends Throwable> {
}
/**
+ * Returns a composed {@code FailableBiPredicate} like {@link BiPredicate#and(BiPredicate)}.
+ *
+ * @param other a predicate that will be logically-ORed with this predicate.
+ * @return a composed {@code FailableBiPredicate} like {@link BiPredicate#and(BiPredicate)}.
+ * @throws NullPointerException if other is null
+ */
+ default FailableBiPredicate<T, U, E> or(final FailableBiPredicate<? super T, ? super U, E> other) {
+ Objects.requireNonNull(other);
+ return (final T t, final U u) -> test(t, u) || other.test(t, u);
+ }
+
+ /**
* Tests the predicate.
*
* @param object1 the first object to test the predicate on
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 badc2a5..ec6b2cc 100644
--- a/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java
+++ b/src/main/java/org/apache/commons/lang3/function/FailableDoublePredicate.java
@@ -79,6 +79,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-ORed with this predicate.
+ * @return a composed {@code FailableDoublePredicate} like {@link DoublePredicate#and(DoublePredicate)}.
+ * @throws NullPointerException if other is null
+ */
+ default FailableDoublePredicate<E> or(final FailableDoublePredicate<E> other) {
+ Objects.requireNonNull(other);
+ return t -> test(t) || other.test(t);
+ }
+
+ /**
* Tests the predicate.
*
* @param value the parameter for the predicate to accept.
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 57e0cb1..724d6bf 100644
--- a/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java
+++ b/src/main/java/org/apache/commons/lang3/function/FailableIntPredicate.java
@@ -79,6 +79,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-ORed with this predicate.
+ * @return a composed {@code FailableIntPredicate} like {@link IntPredicate#and(IntPredicate)}.
+ * @throws NullPointerException if other is null
+ */
+ default FailableIntPredicate<E> or(final FailableIntPredicate<E> other) {
+ Objects.requireNonNull(other);
+ return t -> test(t) || other.test(t);
+ }
+
+ /**
* Tests the predicate.
*
* @param value the parameter for the predicate to accept.
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 154b1df..be97ca9 100644
--- a/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java
+++ b/src/main/java/org/apache/commons/lang3/function/FailableLongPredicate.java
@@ -79,6 +79,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-ORed with this predicate.
+ * @return a composed {@code FailableLongPredicate} like {@link LongPredicate#and(LongPredicate)}.
+ * @throws NullPointerException if other is null
+ */
+ default FailableLongPredicate<E> or(final FailableLongPredicate<E> other) {
+ Objects.requireNonNull(other);
+ return t -> test(t) || other.test(t);
+ }
+
+ /**
* Tests the predicate.
*
* @param value the parameter for the predicate to accept.
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 081464a..d2ecbc5 100644
--- a/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java
+++ b/src/main/java/org/apache/commons/lang3/function/FailablePredicate.java
@@ -82,6 +82,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-ORed with this predicate.
+ * @return a composed {@code FailablePredicate} like {@link Predicate#and(Predicate)}.
+ * @throws NullPointerException if other is null
+ */
+ default FailablePredicate<T, E> or(final FailablePredicate<? super T, E> other) {
+ Objects.requireNonNull(other);
+ return t -> test(t) || other.test(t);
+ }
+
+ /**
* Tests the predicate.
*
* @param object the object to test the predicate on
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 085d839..cac514d 100644
--- a/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java
+++ b/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java
@@ -719,8 +719,10 @@ public class FailableFunctionsTest {
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)));
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableBiPredicate.falsePredicate().and(null).test(null, null)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableBiPredicate.truePredicate().and(null).test(null, null)));
}
@Test
@@ -732,6 +734,19 @@ public class FailableFunctionsTest {
}
@Test
+ public void testBiPredicateOr() throws Throwable {
+ assertTrue(FailableBiPredicate.TRUE.or(FailableBiPredicate.TRUE).test(null, null));
+ assertTrue(FailableBiPredicate.TRUE.or(FailableBiPredicate.FALSE).test(null, null));
+ assertTrue(FailableBiPredicate.FALSE.or(FailableBiPredicate.TRUE).test(null, null));
+ assertFalse(FailableBiPredicate.FALSE.or(FailableBiPredicate.FALSE).test(null, null));
+ // null tests
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableBiPredicate.falsePredicate().or(null).test(null, null)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableBiPredicate.truePredicate().or(null).test(null, null)));
+ }
+
+ @Test
public void testCallable() {
FailureOnOddInvocations.invocations = 0;
final UndeclaredThrowableException e = assertThrows(UndeclaredThrowableException.class,
@@ -793,8 +808,10 @@ public class FailableFunctionsTest {
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)));
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableDoublePredicate.falsePredicate().and(null).test(0)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableDoublePredicate.truePredicate().and(null).test(0)));
}
@Test
@@ -806,6 +823,19 @@ public class FailableFunctionsTest {
}
@Test
+ public void testDoublePredicateOr() throws Throwable {
+ assertTrue(FailableDoublePredicate.TRUE.or(FailableDoublePredicate.TRUE).test(0));
+ assertTrue(FailableDoublePredicate.TRUE.or(FailableDoublePredicate.FALSE).test(0));
+ assertTrue(FailableDoublePredicate.FALSE.or(FailableDoublePredicate.TRUE).test(0));
+ assertFalse(FailableDoublePredicate.FALSE.or(FailableDoublePredicate.FALSE).test(0));
+ // null tests
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableDoublePredicate.falsePredicate().or(null).test(0)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableDoublePredicate.truePredicate().or(null).test(0)));
+ }
+
+ @Test
public void testDoubleUnaryOperatorAndThen() throws Throwable {
final Testable<?, ?> testable = new Testable<>(null);
final FailableDoubleUnaryOperator<Throwable> failing = t -> {
@@ -1083,8 +1113,10 @@ public class FailableFunctionsTest {
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)));
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableIntPredicate.falsePredicate().and(null).test(0)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableIntPredicate.truePredicate().and(null).test(0)));
}
@Test
@@ -1096,6 +1128,19 @@ public class FailableFunctionsTest {
}
@Test
+ public void testIntPredicateOr() throws Throwable {
+ assertTrue(FailableIntPredicate.TRUE.or(FailableIntPredicate.TRUE).test(0));
+ assertTrue(FailableIntPredicate.TRUE.or(FailableIntPredicate.FALSE).test(0));
+ assertTrue(FailableIntPredicate.FALSE.or(FailableIntPredicate.TRUE).test(0));
+ assertFalse(FailableIntPredicate.FALSE.or(FailableIntPredicate.FALSE).test(0));
+ // null tests
+ assertThrows(NullPointerException.class,
+ () -> assertFalse(FailableIntPredicate.falsePredicate().or(null).test(0)));
+ assertThrows(NullPointerException.class,
+ () -> assertTrue(FailableIntPredicate.truePredicate().or(null).test(0)));
+ }
+
+ @Test
public void testIntUnaryOperatorAndThen() throws Throwable {
final Testable<?, ?> testable = new Testable<>(null);
final FailableIntUnaryOperator<Throwable> failing = t -> {
@@ -1175,8 +1220,8 @@ public class FailableFunctionsTest {
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)));
+ assertThrows(NullPointerException.class, () -> assertFalse(FailableLongPredicate.falsePredicate().and(null).test(0)));
+ assertThrows(NullPointerException.class, () -> assertTrue(FailableLongPredicate.truePredicate().and(null).test(0)));
}
@Test
@@ -1188,6 +1233,17 @@ public class FailableFunctionsTest {
}
@Test
+ public void testLongPredicateOr() throws Throwable {
+ assertTrue(FailableLongPredicate.TRUE.or(FailableLongPredicate.TRUE).test(0));
+ assertTrue(FailableLongPredicate.TRUE.or(FailableLongPredicate.FALSE).test(0));
+ assertTrue(FailableLongPredicate.FALSE.or(FailableLongPredicate.TRUE).test(0));
+ assertFalse(FailableLongPredicate.FALSE.or(FailableLongPredicate.FALSE).test(0));
+ // null tests
+ assertThrows(NullPointerException.class, () -> assertFalse(FailableLongPredicate.falsePredicate().or(null).test(0)));
+ assertThrows(NullPointerException.class, () -> assertTrue(FailableLongPredicate.truePredicate().or(null).test(0)));
+ }
+
+ @Test
public void testLongUnaryOperatorAndThen() throws Throwable {
final Testable<?, ?> testable = new Testable<>(null);
final FailableLongUnaryOperator<Throwable> failing = t -> {