31
31
import java .lang .annotation .ElementType ;
32
32
import java .lang .reflect .Constructor ;
33
33
import java .lang .reflect .Modifier ;
34
+ import java .nio .charset .Charset ;
34
35
import java .nio .charset .StandardCharsets ;
35
36
import java .util .Arrays ;
36
37
import java .util .BitSet ;
@@ -223,7 +224,7 @@ public void testConstructor() {
223
224
224
225
@ Test
225
226
public void testContains () {
226
- final Object [] array = {"0" , "1" , "2" , "3" , null , "0" };
227
+ final Object [] array = { "0" , "1" , "2" , "3" , null , "0" };
227
228
assertFalse (ArrayUtils .contains (null , null ));
228
229
assertFalse (ArrayUtils .contains (null , "1" ));
229
230
assertTrue (ArrayUtils .contains (array , "0" ));
@@ -232,12 +233,27 @@ public void testContains() {
232
233
assertTrue (ArrayUtils .contains (array , "3" ));
233
234
assertFalse (ArrayUtils .contains (array , "notInArray" ));
234
235
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 ));
235
251
}
236
252
237
253
@ Test
238
254
public void testContains_LANG_1261 () {
239
-
240
255
class LANG1261ParentObject {
256
+
241
257
@ Override
242
258
public boolean equals (final Object o ) {
243
259
return true ;
@@ -248,13 +264,10 @@ public int hashCode() {
248
264
return 0 ;
249
265
}
250
266
}
251
-
252
267
final class LANG1261ChildObject extends LANG1261ParentObject {
253
268
// empty.
254
269
}
255
-
256
- final Object [] array = new LANG1261ChildObject []{new LANG1261ChildObject ()};
257
-
270
+ final Object [] array = new LANG1261ChildObject [] { new LANG1261ChildObject () };
258
271
assertTrue (ArrayUtils .contains (array , new LANG1261ParentObject ()));
259
272
}
260
273
0 commit comments