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-beanutils.git


The following commit(s) were added to refs/heads/master by this push:
     new dfff25e  [BEANUTILS-527] Convert from Collections4 to 
java.util.function #8.
dfff25e is described below

commit dfff25e274bf84fd49882a486aca9908043bdd0e
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Oct 20 18:07:35 2019 -0400

    [BEANUTILS-527] Convert from Collections4 to java.util.function #8.
---
 .../BeanPropertyValueEqualsPredicate.java          |  23 +-
 .../BeanPropertyValueEqualsPredicateTestCase.java  | 519 ++++++++++-----------
 2 files changed, 271 insertions(+), 271 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java
 
b/src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java
index d576a35..bd859d2 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicate.java
@@ -18,16 +18,15 @@
 package org.apache.commons.beanutils2;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.function.Predicate;
 
-import org.apache.commons.collections4.Predicate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-
 /**
  * <p><code>Predicate</code> that evaluates a property value against a 
specified value.</p>
  * <p>
- * An implementation of <code>org.apache.commons.collections4.Predicate</code> 
that evaluates a
+ * An implementation of <code>java.util.function.Predicate</code> that 
evaluates a
  * property value on the object provided against a specified value and returns 
<code>true</code>
  * if equal; <code>false</code> otherwise.
  * The <code>BeanPropertyValueEqualsPredicate</code> constructor takes two 
parameters which
@@ -103,11 +102,13 @@ import org.apache.commons.logging.LogFactory;
  *       the value for the object's <code>personId</code> property.
  *    </li>
  * </ul>
+ * @param <T> the type of the input to the predicate.
+ * @param <V> The property value type.
  *
  * @see org.apache.commons.beanutils2.PropertyUtils
- * @see org.apache.commons.collections4.Predicate
+ * @see java.util.function.Predicate
  */
-public class BeanPropertyValueEqualsPredicate implements Predicate {
+public class BeanPropertyValueEqualsPredicate<T, V> implements Predicate<T> {
 
     /** For logging. */
     private final Log log = LogFactory.getLog(this.getClass());
@@ -121,7 +122,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * The value that the property specified by <code>propertyName</code>
      * will be compared to when this <code>Predicate</code> executes.
      */
-    private Object propertyValue;
+    private V propertyValue;
 
     /**
      * <p>Should <code>null</code> objects in the property path be ignored?</p>
@@ -146,7 +147,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * @param propertyValue The value to use in object evaluation.
      * @throws IllegalArgumentException If the property name provided is null 
or empty.
      */
-    public BeanPropertyValueEqualsPredicate(final String propertyName, final 
Object propertyValue) {
+    public BeanPropertyValueEqualsPredicate(final String propertyName, final V 
propertyValue) {
         this(propertyName, propertyValue, false);
     }
 
@@ -161,7 +162,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * genenerate an <code>IllegalArgumentException</code> or not.
      * @throws IllegalArgumentException If the property name provided is null 
or empty.
      */
-    public BeanPropertyValueEqualsPredicate(final String propertyName, final 
Object propertyValue, final boolean ignoreNull) {
+    public BeanPropertyValueEqualsPredicate(final String propertyName, final V 
propertyValue, final boolean ignoreNull) {
         super();
 
         if (propertyName != null && propertyName.length() > 0) {
@@ -192,7 +193,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * <code>ignoreNull</code> is set to <code>false</code>.
      */
     @Override
-    public boolean evaluate(final Object object) {
+    public boolean test(final T object) {
 
         boolean evaluation = false;
 
@@ -245,7 +246,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * @param actual The actual value.
      * @return True if they are equal; false otherwise.
      */
-    protected boolean evaluateValue(final Object expected, final Object 
actual) {
+    protected boolean evaluateValue(final V expected, final Object actual) {
         return expected == actual || expected != null && 
expected.equals(actual);
     }
 
@@ -267,7 +268,7 @@ public class BeanPropertyValueEqualsPredicate implements 
Predicate {
      * @return The value that the property specified by 
<code>propertyName</code> will be compared to
      * when this <code>Predicate</code> executes.
      */
-    public Object getPropertyValue() {
+    public V getPropertyValue() {
         return propertyValue;
     }
 
diff --git 
a/src/test/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicateTestCase.java
 
b/src/test/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicateTestCase.java
index 7f58799..04d9306 100644
--- 
a/src/test/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicateTestCase.java
+++ 
b/src/test/java/org/apache/commons/beanutils2/BeanPropertyValueEqualsPredicateTestCase.java
@@ -1,261 +1,260 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.beanutils2;
-
-import junit.framework.TestCase;
-
-
-/**
- * Test cases for <code>BeanPropertyValueEqualsPredicateTest</code>.
- *
- */
-public class BeanPropertyValueEqualsPredicateTestCase extends TestCase {
-
-    private static final Integer expectedIntegerValue = new Integer(123);
-    private static final Float expectedFloatValue = new Float(123.123f);
-    private static final Double expectedDoubleValue = new 
Double(567879.12344d);
-    private static final Boolean expectedBooleanValue = Boolean.TRUE;
-    private static final Byte expectedByteValue = new Byte("12");
-
-    /**
-     * Constructor for BeanPropertyValueEqualsPredicateTest.
-     *
-     * @param name Name of this test case.
-     */
-    public BeanPropertyValueEqualsPredicateTestCase(final String name) {
-        super(name);
-    }
-
-    /**
-     * Test evaluate with simple String property.
-     */
-    public void testEvaluateWithSimpleStringProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new BeanPropertyValueEqualsPredicate("stringProperty","foo");
-        assertTrue(predicate.evaluate(new TestBean("foo")));
-        assertTrue(!predicate.evaluate(new TestBean("bar")));
-    }
-
-    /**
-     * Test evaluate with simple String property and null values.
-     */
-    public void testEvaluateWithSimpleStringPropertyWithNullValues() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new BeanPropertyValueEqualsPredicate("stringProperty",null);
-        assertTrue(predicate.evaluate(new TestBean((String) null)));
-        assertTrue(!predicate.evaluate(new TestBean("bar")));
-    }
-
-    /**
-     * Test evaluate with nested property.
-     */
-    public void testEvaluateWithNestedProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("anotherNested.stringProperty","match");
-        final TestBean testBean = new TestBean();
-        final TestBean nestedBean = new TestBean("match");
-        testBean.setAnotherNested(nestedBean);
-        assertTrue(predicate.evaluate(testBean));
-        testBean.setAnotherNested(new TestBean("no-match"));
-        assertTrue(!predicate.evaluate(testBean));
-    }
-
-    /**
-     * Test evaluate with null in property path and ignore=false.
-     */
-    public void testEvaluateWithNullInPath() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("anotherNested.stringProperty","foo");
-        try {
-            // try to evaluate the predicate
-            predicate.evaluate(new TestBean());
-            fail("Should have throw IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            /* ignore this is what should happen */
-        }
-    }
-
-    /**
-     * Test evaluate with null in property path and ignore=true.
-     */
-    public void testEvaluateWithNullInPathAndIgnoreTrue() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("anotherNested.stringProperty","foo", true);
-        try {
-            assertTrue(!predicate.evaluate(new TestBean()));
-        } catch (final IllegalArgumentException e) {
-            fail("Should not have throw IllegalArgumentException");
-        }
-    }
-
-    /**
-     * Test evaluate with int property.
-     */
-    public void testEvaluateWithIntProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("intProperty",expectedIntegerValue);
-        assertTrue(predicate.evaluate(new 
TestBean(expectedIntegerValue.intValue())));
-        assertTrue(!predicate.evaluate(new 
TestBean(expectedIntegerValue.intValue() - 1)));
-    }
-
-    /**
-     * Test evaluate with float property.
-     */
-    public void testEvaluateWithFloatProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("floatProperty",expectedFloatValue);
-        assertTrue(predicate.evaluate(new 
TestBean(expectedFloatValue.floatValue())));
-        assertTrue(!predicate.evaluate(new 
TestBean(expectedFloatValue.floatValue() - 1)));
-    }
-
-    /**
-     * Test evaluate with double property.
-     */
-    public void testEvaluateWithDoubleProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("doubleProperty",expectedDoubleValue);
-        assertTrue(predicate.evaluate(new 
TestBean(expectedDoubleValue.doubleValue())));
-        assertTrue(!predicate.evaluate(new 
TestBean(expectedDoubleValue.doubleValue() - 1)));
-    }
-
-    /**
-     * Test evaluate with boolean property.
-     */
-    public void testEvaluateWithBooleanProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("booleanProperty",expectedBooleanValue);
-        assertTrue(predicate.evaluate(new 
TestBean(expectedBooleanValue.booleanValue())));
-        assertTrue(!predicate.evaluate(new 
TestBean(!expectedBooleanValue.booleanValue())));
-    }
-
-    /**
-     * Test evaluate with byte property.
-     */
-    public void testEvaluateWithByteProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("byteProperty",expectedByteValue);
-        final TestBean testBean = new TestBean();
-        testBean.setByteProperty(expectedByteValue.byteValue());
-        assertTrue(predicate.evaluate(testBean));
-        testBean.setByteProperty((byte) (expectedByteValue.byteValue() - 1));
-        assertTrue(!predicate.evaluate(testBean));
-    }
-
-    /**
-     * Test evaluate with mapped property.
-     */
-    public void testEvaluateWithMappedProperty() {
-        // try a key that is in the map
-        BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("mappedProperty(test-key)","match");
-        final TestBean testBean = new TestBean();
-        testBean.setMappedProperty("test-key", "match");
-        assertTrue(predicate.evaluate(testBean));
-        testBean.setMappedProperty("test-key", "no-match");
-        assertTrue(!predicate.evaluate(testBean));
-
-        // try a key that isn't in the map
-        predicate = new 
BeanPropertyValueEqualsPredicate("mappedProperty(invalid-key)", "match");
-        assertTrue(!predicate.evaluate(testBean));
-    }
-
-    /**
-     * Test evaluate with indexed property.
-     */
-    public void testEvaluateWithIndexedProperty() {
-        // try a valid index
-        BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("intIndexed[0]",expectedIntegerValue);
-        final TestBean testBean = new TestBean();
-        testBean.setIntIndexed(0, expectedIntegerValue.intValue());
-        assertTrue(predicate.evaluate(testBean));
-        testBean.setIntIndexed(0, expectedIntegerValue.intValue() - 1);
-        assertTrue(!predicate.evaluate(testBean));
-
-        // try an invalid index
-        predicate = new BeanPropertyValueEqualsPredicate("intIndexed[999]", 
"exception-ahead");
-
-        try {
-            assertTrue(!predicate.evaluate(testBean));
-        } catch (final ArrayIndexOutOfBoundsException e) {
-            /* this is what should happen */
-        }
-    }
-
-    /**
-     * Test evaluate with primitive property and null value.
-     */
-    public void testEvaluateWithPrimitiveAndNull() {
-        BeanPropertyValueEqualsPredicate predicate =
-            new BeanPropertyValueEqualsPredicate("intProperty",null);
-        assertTrue(!predicate.evaluate(new TestBean(0)));
-
-        predicate = new BeanPropertyValueEqualsPredicate("booleanProperty", 
null);
-        assertTrue(!predicate.evaluate(new TestBean(true)));
-
-        predicate = new BeanPropertyValueEqualsPredicate("floatProperty", 
null);
-        assertTrue(!predicate.evaluate(new 
TestBean(expectedFloatValue.floatValue())));
-    }
-
-    /**
-     * Test evaluate with nested mapped property.
-     */
-    public void testEvaluateWithNestedMappedProperty() {
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("anotherNested.mappedProperty(test-key)","match");
-        final TestBean testBean = new TestBean();
-        final TestBean nestedBean = new TestBean();
-        nestedBean.setMappedProperty("test-key", "match");
-        testBean.setAnotherNested(nestedBean);
-        assertTrue(predicate.evaluate(testBean));
-        nestedBean.setMappedProperty("test-key", "no-match");
-        assertTrue(!predicate.evaluate(testBean));
-    }
-
-    /**
-     * Test evaluate with write only property.
-     */
-    public void testEvaluateWithWriteOnlyProperty() {
-        try {
-            new BeanPropertyValueEqualsPredicate("writeOnlyProperty", 
null).evaluate(new TestBean());
-        } catch (final IllegalArgumentException e) {
-            /* This is what should happen */
-        }
-    }
-
-    /**
-     * Test evaluate with read only property.
-     */
-    public void testEvaluateWithReadOnlyProperty() {
-        final TestBean testBean = new TestBean();
-        final BeanPropertyValueEqualsPredicate predicate =
-            new 
BeanPropertyValueEqualsPredicate("readOnlyProperty",testBean.getReadOnlyProperty());
-        assertTrue(predicate.evaluate(new TestBean()));
-    }
-
-    /**
-     * Test evaluate with an invalid property name.
-     */
-    public void testEvaluateWithInvalidPropertyName() {
-        try {
-            new BeanPropertyValueEqualsPredicate("bogusProperty", 
null).evaluate(new TestBean());
-        } catch (final IllegalArgumentException e) {
-            /* This is what should happen */
-        }
-    }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.beanutils2;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for <code>BeanPropertyValueEqualsPredicateTest</code>.
+ *
+ */
+public class BeanPropertyValueEqualsPredicateTestCase extends TestCase {
+
+    private static final Integer expectedIntegerValue = new Integer(123);
+    private static final Float expectedFloatValue = new Float(123.123f);
+    private static final Double expectedDoubleValue = new 
Double(567879.12344d);
+    private static final Boolean expectedBooleanValue = Boolean.TRUE;
+    private static final Byte expectedByteValue = new Byte("12");
+
+    /**
+     * Constructor for BeanPropertyValueEqualsPredicateTest.
+     *
+     * @param name Name of this test case.
+     */
+    public BeanPropertyValueEqualsPredicateTestCase(final String name) {
+        super(name);
+    }
+
+    /**
+     * Test evaluate with simple String property.
+     */
+    public void testEvaluateWithSimpleStringProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new BeanPropertyValueEqualsPredicate<>("stringProperty","foo");
+        assertTrue(predicate.test(new TestBean("foo")));
+        assertTrue(!predicate.test(new TestBean("bar")));
+    }
+
+    /**
+     * Test evaluate with simple String property and null values.
+     */
+    public void testEvaluateWithSimpleStringPropertyWithNullValues() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new BeanPropertyValueEqualsPredicate<>("stringProperty",null);
+        assertTrue(predicate.test(new TestBean((String) null)));
+        assertTrue(!predicate.test(new TestBean("bar")));
+    }
+
+    /**
+     * Test evaluate with nested property.
+     */
+    public void testEvaluateWithNestedProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("anotherNested.stringProperty","match");
+        final TestBean testBean = new TestBean();
+        final TestBean nestedBean = new TestBean("match");
+        testBean.setAnotherNested(nestedBean);
+        assertTrue(predicate.test(testBean));
+        testBean.setAnotherNested(new TestBean("no-match"));
+        assertTrue(!predicate.test(testBean));
+    }
+
+    /**
+     * Test evaluate with null in property path and ignore=false.
+     */
+    public void testEvaluateWithNullInPath() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("anotherNested.stringProperty","foo");
+        try {
+            // try to evaluate the predicate
+            predicate.test(new TestBean());
+            fail("Should have throw IllegalArgumentException");
+        } catch (final IllegalArgumentException e) {
+            /* ignore this is what should happen */
+        }
+    }
+
+    /**
+     * Test evaluate with null in property path and ignore=true.
+     */
+    public void testEvaluateWithNullInPathAndIgnoreTrue() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("anotherNested.stringProperty","foo", true);
+        try {
+            assertTrue(!predicate.test(new TestBean()));
+        } catch (final IllegalArgumentException e) {
+            fail("Should not have throw IllegalArgumentException");
+        }
+    }
+
+    /**
+     * Test evaluate with int property.
+     */
+    public void testEvaluateWithIntProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, Integer> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("intProperty",expectedIntegerValue);
+        assertTrue(predicate.test(new 
TestBean(expectedIntegerValue.intValue())));
+        assertTrue(!predicate.test(new 
TestBean(expectedIntegerValue.intValue() - 1)));
+    }
+
+    /**
+     * Test evaluate with float property.
+     */
+    public void testEvaluateWithFloatProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, Float> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("floatProperty",expectedFloatValue);
+        assertTrue(predicate.test(new 
TestBean(expectedFloatValue.floatValue())));
+        assertTrue(!predicate.test(new 
TestBean(expectedFloatValue.floatValue() - 1)));
+    }
+
+    /**
+     * Test evaluate with double property.
+     */
+    public void testEvaluateWithDoubleProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, Double> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("doubleProperty",expectedDoubleValue);
+        assertTrue(predicate.test(new 
TestBean(expectedDoubleValue.doubleValue())));
+        assertTrue(!predicate.test(new 
TestBean(expectedDoubleValue.doubleValue() - 1)));
+    }
+
+    /**
+     * Test evaluate with boolean property.
+     */
+    public void testEvaluateWithBooleanProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, Boolean> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("booleanProperty",expectedBooleanValue);
+        assertTrue(predicate.test(new 
TestBean(expectedBooleanValue.booleanValue())));
+        assertTrue(!predicate.test(new 
TestBean(!expectedBooleanValue.booleanValue())));
+    }
+
+    /**
+     * Test evaluate with byte property.
+     */
+    public void testEvaluateWithByteProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, Byte> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("byteProperty",expectedByteValue);
+        final TestBean testBean = new TestBean();
+        testBean.setByteProperty(expectedByteValue.byteValue());
+        assertTrue(predicate.test(testBean));
+        testBean.setByteProperty((byte) (expectedByteValue.byteValue() - 1));
+        assertTrue(!predicate.test(testBean));
+    }
+
+    /**
+     * Test evaluate with mapped property.
+     */
+    public void testEvaluateWithMappedProperty() {
+        // try a key that is in the map
+        BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new BeanPropertyValueEqualsPredicate<>("mappedProperty(test-key)", 
"match");
+        final TestBean testBean = new TestBean();
+        testBean.setMappedProperty("test-key", "match");
+        assertTrue(predicate.test(testBean));
+        testBean.setMappedProperty("test-key", "no-match");
+        assertTrue(!predicate.test(testBean));
+
+        // try a key that isn't in the map
+        predicate = new 
BeanPropertyValueEqualsPredicate<>("mappedProperty(invalid-key)", "match");
+        assertTrue(!predicate.test(testBean));
+    }
+
+    /**
+     * Test evaluate with indexed property.
+     */
+    public void testEvaluateWithIndexedProperty() {
+        // try a valid index
+        BeanPropertyValueEqualsPredicate<TestBean, Object> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("intIndexed[0]",expectedIntegerValue);
+        final TestBean testBean = new TestBean();
+        testBean.setIntIndexed(0, expectedIntegerValue.intValue());
+        assertTrue(predicate.test(testBean));
+        testBean.setIntIndexed(0, expectedIntegerValue.intValue() - 1);
+        assertTrue(!predicate.test(testBean));
+
+        // try an invalid index
+        predicate = new BeanPropertyValueEqualsPredicate<>("intIndexed[999]", 
"exception-ahead");
+
+        try {
+            assertTrue(!predicate.test(testBean));
+        } catch (final ArrayIndexOutOfBoundsException e) {
+            /* this is what should happen */
+        }
+    }
+
+    /**
+     * Test evaluate with primitive property and null value.
+     */
+    public void testEvaluateWithPrimitiveAndNull() {
+        BeanPropertyValueEqualsPredicate<TestBean, Object> predicate =
+            new BeanPropertyValueEqualsPredicate<>("intProperty",null);
+        assertTrue(!predicate.test(new TestBean(0)));
+
+        predicate = new BeanPropertyValueEqualsPredicate<>("booleanProperty", 
null);
+        assertTrue(!predicate.test(new TestBean(true)));
+
+        predicate = new BeanPropertyValueEqualsPredicate<>("floatProperty", 
null);
+        assertTrue(!predicate.test(new 
TestBean(expectedFloatValue.floatValue())));
+    }
+
+    /**
+     * Test evaluate with nested mapped property.
+     */
+    public void testEvaluateWithNestedMappedProperty() {
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("anotherNested.mappedProperty(test-key)","match");
+        final TestBean testBean = new TestBean();
+        final TestBean nestedBean = new TestBean();
+        nestedBean.setMappedProperty("test-key", "match");
+        testBean.setAnotherNested(nestedBean);
+        assertTrue(predicate.test(testBean));
+        nestedBean.setMappedProperty("test-key", "no-match");
+        assertTrue(!predicate.test(testBean));
+    }
+
+    /**
+     * Test evaluate with write only property.
+     */
+    public void testEvaluateWithWriteOnlyProperty() {
+        try {
+            new BeanPropertyValueEqualsPredicate<TestBean, 
String>("writeOnlyProperty", null).test(new TestBean());
+        } catch (final IllegalArgumentException e) {
+            /* This is what should happen */
+        }
+    }
+
+    /**
+     * Test evaluate with read only property.
+     */
+    public void testEvaluateWithReadOnlyProperty() {
+        final TestBean testBean = new TestBean();
+        final BeanPropertyValueEqualsPredicate<TestBean, String> predicate =
+            new 
BeanPropertyValueEqualsPredicate<>("readOnlyProperty",testBean.getReadOnlyProperty());
+        assertTrue(predicate.test(new TestBean()));
+    }
+
+    /**
+     * Test evaluate with an invalid property name.
+     */
+    public void testEvaluateWithInvalidPropertyName() {
+        try {
+            new BeanPropertyValueEqualsPredicate<TestBean, 
Object>("bogusProperty", null).test(new TestBean());
+        } catch (final IllegalArgumentException e) {
+            /* This is what should happen */
+        }
+    }
 }
\ No newline at end of file

Reply via email to