Skip to content

Commit 5fb7bf4

Browse files
committed
More tests in ArrayUtilsTest.testContains()
1 parent f73fa2d commit 5fb7bf4

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java

+19-6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.lang.annotation.ElementType;
3232
import java.lang.reflect.Constructor;
3333
import java.lang.reflect.Modifier;
34+
import java.nio.charset.Charset;
3435
import java.nio.charset.StandardCharsets;
3536
import java.util.Arrays;
3637
import java.util.BitSet;
@@ -223,7 +224,7 @@ public void testConstructor() {
223224

224225
@Test
225226
public void testContains() {
226-
final Object[] array = {"0", "1", "2", "3", null, "0"};
227+
final Object[] array = { "0", "1", "2", "3", null, "0" };
227228
assertFalse(ArrayUtils.contains(null, null));
228229
assertFalse(ArrayUtils.contains(null, "1"));
229230
assertTrue(ArrayUtils.contains(array, "0"));
@@ -232,12 +233,27 @@ public void testContains() {
232233
assertTrue(ArrayUtils.contains(array, "3"));
233234
assertFalse(ArrayUtils.contains(array, "notInArray"));
234235
assertTrue(ArrayUtils.contains(array, null));
236+
// Types will never match: an Object is not a String
237+
final String stringToFind = "4";
238+
assertFalse(ArrayUtils.contains(new String[] { stringToFind }, new Object()));
239+
// String and Integer both implement java.io.Serializable
240+
assertFalse(ArrayUtils.contains(new String[] { stringToFind }, Integer.valueOf(1)));
241+
// Charset and Integer both implement Comparable
242+
assertFalse(ArrayUtils.contains(new Charset[] { StandardCharsets.US_ASCII }, Integer.valueOf(1)));
243+
// TestClass and Integer are only Objects
244+
assertFalse(ArrayUtils.contains(new TestClass[] { new TestClass() }, Integer.valueOf(1)));
245+
// Values can match
246+
assertTrue(ArrayUtils.contains(new Object[] { stringToFind }, stringToFind));
247+
// A String is a CharSequence
248+
final CharSequence csToFind = stringToFind;
249+
assertTrue(ArrayUtils.contains(new String[] { stringToFind }, csToFind));
250+
assertTrue(ArrayUtils.contains(new CharSequence[] { stringToFind }, stringToFind));
235251
}
236252

237253
@Test
238254
public void testContains_LANG_1261() {
239-
240255
class LANG1261ParentObject {
256+
241257
@Override
242258
public boolean equals(final Object o) {
243259
return true;
@@ -248,13 +264,10 @@ public int hashCode() {
248264
return 0;
249265
}
250266
}
251-
252267
final class LANG1261ChildObject extends LANG1261ParentObject {
253268
// empty.
254269
}
255-
256-
final Object[] array = new LANG1261ChildObject[]{new LANG1261ChildObject()};
257-
270+
final Object[] array = new LANG1261ChildObject[] { new LANG1261ChildObject() };
258271
assertTrue(ArrayUtils.contains(array, new LANG1261ParentObject()));
259272
}
260273

0 commit comments

Comments
 (0)