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 5fb7bf410 More tests in ArrayUtilsTest.testContains() 5fb7bf410 is described below commit 5fb7bf4107325ef5a5cbe02df405897f9ac14431 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Wed Mar 5 08:29:32 2025 -0500 More tests in ArrayUtilsTest.testContains() --- .../org/apache/commons/lang3/ArrayUtilsTest.java | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java index 2e4edff85..9d35cbbba 100644 --- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java @@ -31,6 +31,7 @@ import java.lang.annotation.ElementType; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.BitSet; @@ -223,7 +224,7 @@ public void testConstructor() { @Test public void testContains() { - final Object[] array = {"0", "1", "2", "3", null, "0"}; + final Object[] array = { "0", "1", "2", "3", null, "0" }; assertFalse(ArrayUtils.contains(null, null)); assertFalse(ArrayUtils.contains(null, "1")); assertTrue(ArrayUtils.contains(array, "0")); @@ -232,12 +233,27 @@ public void testContains() { assertTrue(ArrayUtils.contains(array, "3")); assertFalse(ArrayUtils.contains(array, "notInArray")); assertTrue(ArrayUtils.contains(array, null)); + // Types will never match: an Object is not a String + final String stringToFind = "4"; + assertFalse(ArrayUtils.contains(new String[] { stringToFind }, new Object())); + // String and Integer both implement java.io.Serializable + assertFalse(ArrayUtils.contains(new String[] { stringToFind }, Integer.valueOf(1))); + // Charset and Integer both implement Comparable + assertFalse(ArrayUtils.contains(new Charset[] { StandardCharsets.US_ASCII }, Integer.valueOf(1))); + // TestClass and Integer are only Objects + assertFalse(ArrayUtils.contains(new TestClass[] { new TestClass() }, Integer.valueOf(1))); + // Values can match + assertTrue(ArrayUtils.contains(new Object[] { stringToFind }, stringToFind)); + // A String is a CharSequence + final CharSequence csToFind = stringToFind; + assertTrue(ArrayUtils.contains(new String[] { stringToFind }, csToFind)); + assertTrue(ArrayUtils.contains(new CharSequence[] { stringToFind }, stringToFind)); } @Test public void testContains_LANG_1261() { - class LANG1261ParentObject { + @Override public boolean equals(final Object o) { return true; @@ -248,13 +264,10 @@ public int hashCode() { return 0; } } - final class LANG1261ChildObject extends LANG1261ParentObject { // empty. } - - final Object[] array = new LANG1261ChildObject[]{new LANG1261ChildObject()}; - + final Object[] array = new LANG1261ChildObject[] { new LANG1261ChildObject() }; assertTrue(ArrayUtils.contains(array, new LANG1261ParentObject())); }