diff options
Diffstat (limited to 'src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java')
-rw-r--r-- | src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java | 6584 |
1 files changed, 6584 insertions, 0 deletions
diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java new file mode 100644 index 000000000..4f751c56d --- /dev/null +++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java @@ -0,0 +1,6584 @@ +/* + * 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.lang3; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.Map; +import java.util.Random; + +import org.junit.jupiter.api.Test; + +/** + * Unit tests {@link org.apache.commons.lang3.ArrayUtils}. + */ +@SuppressWarnings("deprecation") // deliberate use of deprecated code +public class ArrayUtilsTest extends AbstractLangTest { + + private class TestClass { + // empty + } + + /** A predefined seed used to initialize {@link Random} in order to get predictable results */ + private static final long SEED = 16111981L; + + @SafeVarargs + private static <T> T[] toArrayPropagatingType(final T... items) { + return ArrayUtils.toArray(items); + } + + private void assertIsEquals(final Object array1, final Object array2, final Object array3) { + assertTrue(ArrayUtils.isEquals(array1, array1)); + assertTrue(ArrayUtils.isEquals(array2, array2)); + assertTrue(ArrayUtils.isEquals(array3, array3)); + assertFalse(ArrayUtils.isEquals(array1, array2)); + assertFalse(ArrayUtils.isEquals(array2, array1)); + assertFalse(ArrayUtils.isEquals(array1, array3)); + assertFalse(ArrayUtils.isEquals(array3, array1)); + assertFalse(ArrayUtils.isEquals(array1, array2)); + assertFalse(ArrayUtils.isEquals(array2, array1)); + } + + /** + * Tests generic array creation with parameters of same type. + */ + @Test + public void testArrayCreation() { + final String[] array = ArrayUtils.toArray("foo", "bar"); + assertEquals(2, array.length); + assertEquals("foo", array[0]); + assertEquals("bar", array[1]); + } + /** + * Tests generic array creation with parameters of common base type. + */ + @Test + public void testArrayCreationWithDifferentTypes() { + final Number[] array = ArrayUtils.<Number>toArray(Integer.valueOf(42), Double.valueOf(Math.PI)); + assertEquals(2, array.length); + assertEquals(Integer.valueOf(42), array[0]); + assertEquals(Double.valueOf(Math.PI), array[1]); + } + + /** + * Tests generic array creation with general return type. + */ + @Test + public void testArrayCreationWithGeneralReturnType() { + final Object obj = ArrayUtils.toArray("foo", "bar"); + assertTrue(obj instanceof String[]); + } + + @Test + public void testClone() { + assertArrayEquals(null, ArrayUtils.clone((Object[]) null)); + Object[] original1 = {}; + Object[] cloned1 = ArrayUtils.clone(original1); + assertArrayEquals(original1, cloned1); + assertNotSame(original1, cloned1); + + final StringBuilder builder = new StringBuilder("pick"); + original1 = new Object[]{builder, "a", new String[]{"stick"}}; + cloned1 = ArrayUtils.clone(original1); + assertArrayEquals(original1, cloned1); + assertNotSame(original1, cloned1); + assertSame(original1[0], cloned1[0]); + assertSame(original1[1], cloned1[1]); + assertSame(original1[2], cloned1[2]); + } + + @Test + public void testCloneBoolean() { + assertNull(ArrayUtils.clone((boolean[]) null)); + final boolean[] original = {true, false}; + final boolean[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneByte() { + assertNull(ArrayUtils.clone((byte[]) null)); + final byte[] original = {1, 6}; + final byte[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneChar() { + assertNull(ArrayUtils.clone((char[]) null)); + final char[] original = {'a', '4'}; + final char[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneDouble() { + assertNull(ArrayUtils.clone((double[]) null)); + final double[] original = {2.4d, 5.7d}; + final double[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneFloat() { + assertNull(ArrayUtils.clone((float[]) null)); + final float[] original = {2.6f, 6.4f}; + final float[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneInt() { + assertNull(ArrayUtils.clone((int[]) null)); + final int[] original = {5, 8}; + final int[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneLong() { + assertNull(ArrayUtils.clone((long[]) null)); + final long[] original = {0L, 1L}; + final long[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testCloneShort() { + assertNull(ArrayUtils.clone((short[]) null)); + final short[] original = {1, 4}; + final short[] cloned = ArrayUtils.clone(original); + assertArrayEquals(original, cloned); + assertNotSame(original, cloned); + } + + @Test + public void testConstructor() { + assertNotNull(new ArrayUtils()); + final Constructor<?>[] cons = ArrayUtils.class.getDeclaredConstructors(); + assertEquals(1, cons.length); + assertTrue(Modifier.isPublic(cons[0].getModifiers())); + assertTrue(Modifier.isPublic(ArrayUtils.class.getModifiers())); + assertFalse(Modifier.isFinal(ArrayUtils.class.getModifiers())); + } + + @Test + public void testContains() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertFalse(ArrayUtils.contains(null, null)); + assertFalse(ArrayUtils.contains(null, "1")); + assertTrue(ArrayUtils.contains(array, "0")); + assertTrue(ArrayUtils.contains(array, "1")); + assertTrue(ArrayUtils.contains(array, "2")); + assertTrue(ArrayUtils.contains(array, "3")); + assertFalse(ArrayUtils.contains(array, "notInArray")); + assertTrue(ArrayUtils.contains(array, null)); + } + + @Test + public void testContainsAny() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertFalse(ArrayUtils.containsAny(null, null)); + assertFalse(ArrayUtils.containsAny(null, "1")); + assertTrue(ArrayUtils.containsAny(array, "0")); + assertTrue(ArrayUtils.containsAny(array, "1")); + assertTrue(ArrayUtils.containsAny(array, "2")); + assertTrue(ArrayUtils.containsAny(array, "3")); + assertFalse(ArrayUtils.containsAny(array, "notInArray")); + assertTrue(ArrayUtils.containsAny(array, new String[] {null})); + } + + @Test + public void testContains_LANG_1261() { + + class LANG1261ParentObject { + @Override + public boolean equals(final Object o) { + return true; + } + } + + class LANG1261ChildObject extends LANG1261ParentObject { + // empty. + } + + final Object[] array = new LANG1261ChildObject[]{new LANG1261ChildObject()}; + + assertTrue(ArrayUtils.contains(array, new LANG1261ParentObject())); + } + + @Test + public void testContainsBoolean() { + boolean[] array = null; + assertFalse(ArrayUtils.contains(array, true)); + array = new boolean[]{true, false, true}; + assertTrue(ArrayUtils.contains(array, true)); + assertTrue(ArrayUtils.contains(array, false)); + array = new boolean[]{true, true}; + assertTrue(ArrayUtils.contains(array, true)); + assertFalse(ArrayUtils.contains(array, false)); + } + + @Test + public void testContainsByte() { + byte[] array = null; + assertFalse(ArrayUtils.contains(array, (byte) 1)); + array = new byte[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, (byte) 0)); + assertTrue(ArrayUtils.contains(array, (byte) 1)); + assertTrue(ArrayUtils.contains(array, (byte) 2)); + assertTrue(ArrayUtils.contains(array, (byte) 3)); + assertFalse(ArrayUtils.contains(array, (byte) 99)); + } + + @Test + public void testContainsChar() { + char[] array = null; + assertFalse(ArrayUtils.contains(array, 'b')); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + assertTrue(ArrayUtils.contains(array, 'a')); + assertTrue(ArrayUtils.contains(array, 'b')); + assertTrue(ArrayUtils.contains(array, 'c')); + assertTrue(ArrayUtils.contains(array, 'd')); + assertFalse(ArrayUtils.contains(array, 'e')); + } + + @SuppressWarnings("cast") + @Test + public void testContainsDouble() { + double[] array = null; + assertFalse(ArrayUtils.contains(array, (double) 1)); + array = new double[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, (double) 0)); + assertTrue(ArrayUtils.contains(array, (double) 1)); + assertTrue(ArrayUtils.contains(array, (double) 2)); + assertTrue(ArrayUtils.contains(array, (double) 3)); + assertFalse(ArrayUtils.contains(array, (double) 99)); + } + + @Test + public void testContainsDoubleNaN() { + final double[] a = { Double.NEGATIVE_INFINITY, Double.NaN, Double.POSITIVE_INFINITY }; + assertTrue(ArrayUtils.contains(a, Double.POSITIVE_INFINITY)); + assertTrue(ArrayUtils.contains(a, Double.NEGATIVE_INFINITY)); + assertTrue(ArrayUtils.contains(a, Double.NaN)); + } + + @SuppressWarnings("cast") + @Test + public void testContainsDoubleTolerance() { + double[] array = null; + assertFalse(ArrayUtils.contains(array, (double) 1, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertFalse(ArrayUtils.contains(array, 4.0, 0.33)); + assertFalse(ArrayUtils.contains(array, 2.5, 0.49)); + assertTrue(ArrayUtils.contains(array, 2.5, 0.50)); + assertTrue(ArrayUtils.contains(array, 2.5, 0.51)); + } + + @SuppressWarnings("cast") + @Test + public void testContainsFloat() { + float[] array = null; + assertFalse(ArrayUtils.contains(array, (float) 1)); + array = new float[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, (float) 0)); + assertTrue(ArrayUtils.contains(array, (float) 1)); + assertTrue(ArrayUtils.contains(array, (float) 2)); + assertTrue(ArrayUtils.contains(array, (float) 3)); + assertFalse(ArrayUtils.contains(array, (float) 99)); + } + + @Test + public void testContainsFloatNaN() { + final float[] array = { Float.NEGATIVE_INFINITY, Float.NaN, Float.POSITIVE_INFINITY }; + assertTrue(ArrayUtils.contains(array, Float.POSITIVE_INFINITY)); + assertTrue(ArrayUtils.contains(array, Float.NEGATIVE_INFINITY)); + assertTrue(ArrayUtils.contains(array, Float.NaN)); + } + + @Test + public void testContainsInt() { + int[] array = null; + assertFalse(ArrayUtils.contains(array, 1)); + array = new int[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, 0)); + assertTrue(ArrayUtils.contains(array, 1)); + assertTrue(ArrayUtils.contains(array, 2)); + assertTrue(ArrayUtils.contains(array, 3)); + assertFalse(ArrayUtils.contains(array, 99)); + } + + @Test + public void testContainsLong() { + long[] array = null; + assertFalse(ArrayUtils.contains(array, 1)); + array = new long[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, 0)); + assertTrue(ArrayUtils.contains(array, 1)); + assertTrue(ArrayUtils.contains(array, 2)); + assertTrue(ArrayUtils.contains(array, 3)); + assertFalse(ArrayUtils.contains(array, 99)); + } + + @Test + public void testContainsShort() { + short[] array = null; + assertFalse(ArrayUtils.contains(array, (short) 1)); + array = new short[]{0, 1, 2, 3, 0}; + assertTrue(ArrayUtils.contains(array, (short) 0)); + assertTrue(ArrayUtils.contains(array, (short) 1)); + assertTrue(ArrayUtils.contains(array, (short) 2)); + assertTrue(ArrayUtils.contains(array, (short) 3)); + assertFalse(ArrayUtils.contains(array, (short) 99)); + } + + @Test + public void testCreatePrimitiveArray() { + assertNull(ArrayUtils.toPrimitive((Object[]) null)); + assertArrayEquals(new boolean[]{true}, ArrayUtils.toPrimitive(new Boolean[]{true})); + assertArrayEquals(new char[]{'a'}, ArrayUtils.toPrimitive(new Character[]{'a'})); + assertArrayEquals(new byte[]{1}, ArrayUtils.toPrimitive(new Byte[]{1})); + assertArrayEquals(new int[]{}, ArrayUtils.toPrimitive(new Integer[]{})); + assertArrayEquals(new short[]{2}, ArrayUtils.toPrimitive(new Short[]{2})); + assertArrayEquals(new long[]{2, 3}, ArrayUtils.toPrimitive(new Long[]{2L, 3L})); + assertArrayEquals(new float[]{3.14f}, ArrayUtils.toPrimitive(new Float[]{3.14f}), 0.1f); + assertArrayEquals(new double[]{2.718}, ArrayUtils.toPrimitive(new Double[]{2.718}), 0.1); + } + + @Test + public void testCreatePrimitiveArrayViaObjectArray() { + assertNull(ArrayUtils.toPrimitive((Object) null)); + assertArrayEquals(new boolean[]{true}, (boolean[]) ArrayUtils.toPrimitive((Object) new Boolean[]{true})); + assertArrayEquals(new char[]{'a'}, (char[]) ArrayUtils.toPrimitive((Object) new Character[]{'a'})); + assertArrayEquals(new byte[]{1}, (byte[]) ArrayUtils.toPrimitive((Object) new Byte[]{1})); + assertArrayEquals(new int[]{}, (int[]) ArrayUtils.toPrimitive((Object) new Integer[]{})); + assertArrayEquals(new short[]{2}, (short[]) ArrayUtils.toPrimitive((Object) new Short[]{2})); + assertArrayEquals(new long[]{2, 3}, (long[]) ArrayUtils.toPrimitive((Object) new Long[]{2L, 3L})); + assertArrayEquals(new float[]{3.14f}, (float[]) ArrayUtils.toPrimitive((Object) new Float[]{3.14f}), 0.1f); + assertArrayEquals(new double[]{2.718}, (double[]) ArrayUtils.toPrimitive((Object) new Double[]{2.718}), 0.1); + } + + /** + * Tests generic empty array creation with generic type. + */ + @Test + public void testEmptyArrayCreation() { + final String[] array = ArrayUtils.<String>toArray(); + assertEquals(0, array.length); + } + + @Test + public void testGet() { + assertNull(ArrayUtils.get(null, -1)); + assertNull(ArrayUtils.get(null, 0)); + assertNull(ArrayUtils.get(null, 1)); + final String[] array0 = {}; + assertNull(ArrayUtils.get(array0, -1)); + assertNull(ArrayUtils.get(array0, 0)); + assertNull(ArrayUtils.get(array0, 1)); + final String[] array1 = { StringUtils.EMPTY }; + assertNull(ArrayUtils.get(array1, -1)); + assertEquals(StringUtils.EMPTY, ArrayUtils.get(array1, 0)); + assertNull(ArrayUtils.get(array1, 1)); + } + + @Test + public void testGetComponentType() { + final TestClass[] newArray = {}; + // No type-cast required. + final Class<TestClass> componentType = ArrayUtils.getComponentType(newArray); + assertEquals(TestClass.class, componentType); + assertNull(ArrayUtils.getComponentType(null)); + } + + @Test + public void testGetDefault() { + // null default + { + assertNull(ArrayUtils.get(null, -1, null)); + assertNull(ArrayUtils.get(null, 0, null)); + assertNull(ArrayUtils.get(null, 1, null)); + final String[] array0 = {}; + assertNull(ArrayUtils.get(array0, -1, null)); + assertNull(ArrayUtils.get(array0, 0, null)); + assertNull(ArrayUtils.get(array0, 1, null)); + final String[] array1 = { StringUtils.EMPTY }; + assertNull(ArrayUtils.get(array1, -1, null)); + assertEquals(StringUtils.EMPTY, ArrayUtils.get(array1, 0, null)); + assertNull(ArrayUtils.get(array1, 1, null)); + } + // non-null default + { + final String defaultValue = "defaultValue"; + final String[] array1 = { StringUtils.EMPTY }; + assertEquals(defaultValue, ArrayUtils.get(array1, -1, defaultValue)); + assertEquals(StringUtils.EMPTY, ArrayUtils.get(array1, 0, defaultValue)); + assertEquals(defaultValue, ArrayUtils.get(array1, 1, defaultValue)); + } + } + + @Test + public void testGetLength() { + assertEquals(0, ArrayUtils.getLength(null)); + + final Object[] emptyObjectArray = {}; + final Object[] notEmptyObjectArray = {"aValue"}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyObjectArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyObjectArray)); + + final int[] emptyIntArray = {}; + final int[] notEmptyIntArray = {1}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyIntArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyIntArray)); + + final short[] emptyShortArray = {}; + final short[] notEmptyShortArray = {1}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyShortArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyShortArray)); + + final char[] emptyCharArray = {}; + final char[] notEmptyCharArray = {1}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyCharArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyCharArray)); + + final byte[] emptyByteArray = {}; + final byte[] notEmptyByteArray = {1}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyByteArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyByteArray)); + + final double[] emptyDoubleArray = {}; + final double[] notEmptyDoubleArray = {1.0}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyDoubleArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyDoubleArray)); + + final float[] emptyFloatArray = {}; + final float[] notEmptyFloatArray = {1.0F}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyFloatArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyFloatArray)); + + final boolean[] emptyBooleanArray = {}; + final boolean[] notEmptyBooleanArray = {true}; + assertEquals(0, ArrayUtils.getLength(null)); + assertEquals(0, ArrayUtils.getLength(emptyBooleanArray)); + assertEquals(1, ArrayUtils.getLength(notEmptyBooleanArray)); + + assertThrows(IllegalArgumentException.class, () -> ArrayUtils.getLength("notAnArray")); + } + + @Test + public void testHashCode() { + final long[][] array1 = {{2, 5}, {4, 5}}; + final long[][] array2 = {{2, 5}, {4, 6}}; + assertEquals(ArrayUtils.hashCode(array1), ArrayUtils.hashCode(array1)); + assertNotEquals(ArrayUtils.hashCode(array1), ArrayUtils.hashCode(array2)); + + final Object[] array3 = {new String(new char[]{'A', 'B'})}; + final Object[] array4 = {"AB"}; + assertEquals(ArrayUtils.hashCode(array3), ArrayUtils.hashCode(array3)); + assertEquals(ArrayUtils.hashCode(array3), ArrayUtils.hashCode(array4)); + + final Object[] arrayA = {new boolean[]{true, false}, new int[]{6, 7}}; + final Object[] arrayB = {new boolean[]{true, false}, new int[]{6, 7}}; + assertEquals(ArrayUtils.hashCode(arrayB), ArrayUtils.hashCode(arrayA)); + } + + @Test + public void testIndexesOf() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf((Object[]) null, null)); + assertEquals(emptySet, ArrayUtils.indexesOf(new Object[0], "0")); + testSet.set(5); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, "0")); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, "2")); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, "3")); + testSet.clear(); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, null)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, "notInArray")); + } + + @Test + public void testIndexesOfBoolean() { + boolean[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, true)); + array = new boolean[0]; + assertEquals(emptySet, ArrayUtils.indexesOf(array, true)); + array = new boolean[]{true, false, true}; + testSet.set(0); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, true)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, false)); + array = new boolean[]{true, true}; + assertEquals(emptySet, ArrayUtils.indexesOf(array, false)); + } + + @Test + public void testIndexesOfBooleanWithStartIndex() { + boolean[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, true, 0)); + array = new boolean[0]; + assertEquals(emptySet, ArrayUtils.indexesOf(array, true, 0)); + array = new boolean[]{true, false, true}; + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, true, 1)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, true, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, false, 1)); + array = new boolean[]{true, true}; + assertEquals(emptySet, ArrayUtils.indexesOf(array, false, 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, false, -1)); + } + + @Test + public void testIndexesOfByte() { + byte[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (byte) 0)); + array = new byte[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 3)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (byte) 99)); + } + + @Test + public void testIndexesOfByteWithStartIndex() { + byte[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (byte) 0, 2)); + array = new byte[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 0, 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 0, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 1, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 3, 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, (byte) 3, -1)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (byte) 99, 0)); + } + + @Test + public void testIndexesOfChar() { + char[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 'a')); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'a')); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'b')); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'c')); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'd')); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 'e')); + } + + @Test + public void testIndexesOfCharWithStartIndex() { + char[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 'a', 0)); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'a', 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'a', 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'a', -1)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'b', 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'c', 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 'd', 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 'd', 5)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 'e', 0)); + } + + @Test + public void testIndexesOfDouble() { + double[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0)); + array = new double[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexesOfDoubleTolerance() { + double[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (double) 0, (double) 0)); + array = new double[0]; + assertEquals(emptySet, ArrayUtils.indexesOf(array, (double) 0, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (double) 0, 0.3)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 4.15, 2.0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1.00001324, 0.0001)); + } + + @Test + public void testIndexesOfDoubleWithStartIndex() { + double[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0, 2)); + array = new double[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, -1)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99, 0)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexesOfDoubleWithStartIndexTolerance() { + double[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (double) 0, 0, (double) 0)); + array = new double[0]; + assertEquals(emptySet, ArrayUtils.indexesOf(array, (double) 0, 0, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (double) 0, 1, 0.3)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, (double) 0, 0, 0.3)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 0, 0.35)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 2, 0.35)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, -1, 0.35)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 2, 3, 0.35)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 4.15, 0, 2.0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1.00001324, 0, 0.0001)); + } + + @Test + public void testIndexesOfFloat() { + float[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0)); + array = new float[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99)); + } + + @Test + public void testIndexesOfFloatWithStartIndex() { + float[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0, 2)); + array = new float[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, -1)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99, 0)); + } + + @Test + public void testIndexesOfIntWithStartIndex() { + int[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0, 2)); + array = new int[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, -1)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99, 0)); + } + + @Test + public void testIndexesOfLong() { + final long[] array = {0, 1, 2, 3}; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf((long[]) null, 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 4)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3)); + } + + @Test + public void testIndexesOfLongWithStartIndex() { + final long[] array = {0, 1, 2, 3, 2, 1, 0, 1}; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf((long[]) null, 0, 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 4, 0)); + testSet.set(6); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 1)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0, 0)); + testSet.clear(); + testSet.set(1); + testSet.set(5); + testSet.set(7); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1, 0)); + testSet.clear(); + testSet.set(2); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3, 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 3, 8)); + } + + @Test + public void testIndexesOfShort() { + short[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (short) 0)); + array = new short[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 3)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (short) 99)); + } + + @Test + public void testIndexesOfShortWithStartIndex() { + short[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (short) 0, 2)); + array = new short[]{0, 1, 2, 3, 0}; + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 0, 2)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 0, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 1, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 2, 0)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 3, 0)); + assertEquals(testSet, ArrayUtils.indexesOf(array, (short) 3, -1)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, (short) 99, 0)); + } + + @Test + public void testIndexesOfWithStartIndex() { + final Object[] array = {"0", "1", "2", "3", "2", "3", "1", null, "0"}; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(null, null, 2)); + assertEquals(emptySet, ArrayUtils.indexesOf(new Object[0], "0", 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(null, "0", 2)); + testSet.set(8); + assertEquals(testSet, ArrayUtils.indexesOf(array, "0", 8)); + testSet.set(0); + assertEquals(testSet, ArrayUtils.indexesOf(array, "0", 0)); + testSet.clear(); + testSet.set(6); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, "1", 0)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, "1", 9)); + testSet.clear(); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, "2", 3)); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, "2", 0)); + testSet.clear(); + testSet.set(3); + testSet.set(5); + assertEquals(testSet, ArrayUtils.indexesOf(array, "3", 0)); + testSet.clear(); + testSet.set(7); + assertEquals(testSet, ArrayUtils.indexesOf(array, null, 0)); + + } + + @Test + public void testIndexOf() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertEquals(-1, ArrayUtils.indexOf(null, null)); + assertEquals(-1, ArrayUtils.indexOf(null, "0")); + assertEquals(-1, ArrayUtils.indexOf(new Object[0], "0")); + assertEquals(0, ArrayUtils.indexOf(array, "0")); + assertEquals(1, ArrayUtils.indexOf(array, "1")); + assertEquals(2, ArrayUtils.indexOf(array, "2")); + assertEquals(3, ArrayUtils.indexOf(array, "3")); + assertEquals(4, ArrayUtils.indexOf(array, null)); + assertEquals(-1, ArrayUtils.indexOf(array, "notInArray")); + } + + @Test + public void testIndexOfBoolean() { + boolean[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, true)); + array = new boolean[0]; + assertEquals(-1, ArrayUtils.indexOf(array, true)); + array = new boolean[]{true, false, true}; + assertEquals(0, ArrayUtils.indexOf(array, true)); + assertEquals(1, ArrayUtils.indexOf(array, false)); + array = new boolean[]{true, true}; + assertEquals(-1, ArrayUtils.indexOf(array, false)); + } + + @Test + public void testIndexOfBooleanWithStartIndex() { + boolean[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, true, 2)); + array = new boolean[0]; + assertEquals(-1, ArrayUtils.indexOf(array, true, 2)); + array = new boolean[]{true, false, true}; + assertEquals(2, ArrayUtils.indexOf(array, true, 1)); + assertEquals(-1, ArrayUtils.indexOf(array, false, 2)); + assertEquals(1, ArrayUtils.indexOf(array, false, 0)); + assertEquals(1, ArrayUtils.indexOf(array, false, -1)); + array = new boolean[]{true, true}; + assertEquals(-1, ArrayUtils.indexOf(array, false, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, false, -1)); + } + + @Test + public void testIndexOfByte() { + byte[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 0)); + array = new byte[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, (byte) 0)); + assertEquals(1, ArrayUtils.indexOf(array, (byte) 1)); + assertEquals(2, ArrayUtils.indexOf(array, (byte) 2)); + assertEquals(3, ArrayUtils.indexOf(array, (byte) 3)); + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 99)); + } + + @Test + public void testIndexOfByteWithStartIndex() { + byte[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 0, 2)); + array = new byte[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, (byte) 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, (byte) 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (byte) 3, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (byte) 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, (byte) 0, 6)); + } + + @Test + public void testIndexOfChar() { + char[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 'a')); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + assertEquals(0, ArrayUtils.indexOf(array, 'a')); + assertEquals(1, ArrayUtils.indexOf(array, 'b')); + assertEquals(2, ArrayUtils.indexOf(array, 'c')); + assertEquals(3, ArrayUtils.indexOf(array, 'd')); + assertEquals(-1, ArrayUtils.indexOf(array, 'e')); + } + + @Test + public void testIndexOfCharWithStartIndex() { + char[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 'a', 2)); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + assertEquals(4, ArrayUtils.indexOf(array, 'a', 2)); + assertEquals(-1, ArrayUtils.indexOf(array, 'b', 2)); + assertEquals(2, ArrayUtils.indexOf(array, 'c', 2)); + assertEquals(3, ArrayUtils.indexOf(array, 'd', 2)); + assertEquals(3, ArrayUtils.indexOf(array, 'd', -1)); + assertEquals(-1, ArrayUtils.indexOf(array, 'e', 0)); + assertEquals(-1, ArrayUtils.indexOf(array, 'a', 6)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfDouble() { + double[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, (double) 0)); + assertEquals(1, ArrayUtils.indexOf(array, (double) 1)); + assertEquals(2, ArrayUtils.indexOf(array, (double) 2)); + assertEquals(3, ArrayUtils.indexOf(array, (double) 3)); + assertEquals(3, ArrayUtils.indexOf(array, (double) 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, (double) 99)); + } + + @Test + public void testIndexOfDoubleNaN() { + final double[] array = { Double.NEGATIVE_INFINITY, Double.NaN, Double.POSITIVE_INFINITY, Double.NaN }; + assertEquals(0, ArrayUtils.indexOf(array, Double.NEGATIVE_INFINITY)); + assertEquals(1, ArrayUtils.indexOf(array, Double.NaN)); + assertEquals(2, ArrayUtils.indexOf(array, Double.POSITIVE_INFINITY)); + + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfDoubleTolerance() { + double[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, (double) 0, 0.3)); + assertEquals(2, ArrayUtils.indexOf(array, 2.2, 0.35)); + assertEquals(3, ArrayUtils.indexOf(array, 4.15, 2.0)); + assertEquals(1, ArrayUtils.indexOf(array, 1.00001324, 0.0001)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfDoubleWithStartIndex() { + double[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 2)); + array = new double[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 2)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, (double) 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, (double) 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, (double) 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (double) 3, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, (double) 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 6)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfDoubleWithStartIndexTolerance() { + double[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 2, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 2, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(-1, ArrayUtils.indexOf(array, (double) 0, 99, 0.3)); + assertEquals(0, ArrayUtils.indexOf(array, (double) 0, 0, 0.3)); + assertEquals(4, ArrayUtils.indexOf(array, (double) 0, 3, 0.3)); + assertEquals(2, ArrayUtils.indexOf(array, 2.2, 0, 0.35)); + assertEquals(3, ArrayUtils.indexOf(array, 4.15, 0, 2.0)); + assertEquals(1, ArrayUtils.indexOf(array, 1.00001324, 0, 0.0001)); + assertEquals(3, ArrayUtils.indexOf(array, 4.15, -1, 2.0)); + assertEquals(1, ArrayUtils.indexOf(array, 1.00001324, -300, 0.0001)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfFloat() { + float[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (float) 0)); + array = new float[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (float) 0)); + array = new float[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, (float) 0)); + assertEquals(1, ArrayUtils.indexOf(array, (float) 1)); + assertEquals(2, ArrayUtils.indexOf(array, (float) 2)); + assertEquals(3, ArrayUtils.indexOf(array, (float) 3)); + assertEquals(-1, ArrayUtils.indexOf(array, (float) 99)); + } + + @Test + public void testIndexOfFloatNaN() { + final float[] array = { Float.NEGATIVE_INFINITY, Float.NaN, Float.POSITIVE_INFINITY, Float.NaN }; + assertEquals(0, ArrayUtils.indexOf(array, Float.NEGATIVE_INFINITY)); + assertEquals(1, ArrayUtils.indexOf(array, Float.NaN)); + assertEquals(2, ArrayUtils.indexOf(array, Float.POSITIVE_INFINITY)); + } + + @SuppressWarnings("cast") + @Test + public void testIndexOfFloatWithStartIndex() { + float[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (float) 0, 2)); + array = new float[0]; + assertEquals(-1, ArrayUtils.indexOf(array, (float) 0, 2)); + array = new float[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, (float) 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, (float) 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, (float) 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (float) 3, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (float) 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, (float) 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, (float) 0, 6)); + } + + @Test + public void testIndexOfInt() { + int[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 0)); + array = new int[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, 0)); + assertEquals(1, ArrayUtils.indexOf(array, 1)); + assertEquals(2, ArrayUtils.indexOf(array, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3)); + assertEquals(-1, ArrayUtils.indexOf(array, 99)); + } + + @Test + public void testIndexOfIntWithStartIndex() { + int[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 0, 2)); + array = new int[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, 0, 6)); + } + + @Test + public void testIndexOfLong() { + long[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 0)); + array = new long[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, 0)); + assertEquals(1, ArrayUtils.indexOf(array, 1)); + assertEquals(2, ArrayUtils.indexOf(array, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3)); + assertEquals(-1, ArrayUtils.indexOf(array, 99)); + } + + @Test + public void testIndexOfLongWithStartIndex() { + long[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, 0, 2)); + array = new long[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3, 2)); + assertEquals(3, ArrayUtils.indexOf(array, 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, 0, 6)); + } + + @Test + public void testIndexOfShort() { + short[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (short) 0)); + array = new short[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.indexOf(array, (short) 0)); + assertEquals(1, ArrayUtils.indexOf(array, (short) 1)); + assertEquals(2, ArrayUtils.indexOf(array, (short) 2)); + assertEquals(3, ArrayUtils.indexOf(array, (short) 3)); + assertEquals(-1, ArrayUtils.indexOf(array, (short) 99)); + } + + @Test + public void testIndexOfShortWithStartIndex() { + short[] array = null; + assertEquals(-1, ArrayUtils.indexOf(array, (short) 0, 2)); + array = new short[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.indexOf(array, (short) 0, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, (short) 1, 2)); + assertEquals(2, ArrayUtils.indexOf(array, (short) 2, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (short) 3, 2)); + assertEquals(3, ArrayUtils.indexOf(array, (short) 3, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, (short) 99, 0)); + assertEquals(-1, ArrayUtils.indexOf(array, (short) 0, 6)); + } + + @Test + public void testIndexOfWithStartIndex() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertEquals(-1, ArrayUtils.indexOf(null, null, 2)); + assertEquals(-1, ArrayUtils.indexOf(new Object[0], "0", 0)); + assertEquals(-1, ArrayUtils.indexOf(null, "0", 2)); + assertEquals(5, ArrayUtils.indexOf(array, "0", 2)); + assertEquals(-1, ArrayUtils.indexOf(array, "1", 2)); + assertEquals(2, ArrayUtils.indexOf(array, "2", 2)); + assertEquals(3, ArrayUtils.indexOf(array, "3", 2)); + assertEquals(4, ArrayUtils.indexOf(array, null, 2)); + assertEquals(-1, ArrayUtils.indexOf(array, "notInArray", 2)); + + assertEquals(4, ArrayUtils.indexOf(array, null, -1)); + assertEquals(-1, ArrayUtils.indexOf(array, null, 8)); + assertEquals(-1, ArrayUtils.indexOf(array, "0", 8)); + } + + /** + * Tests generic array creation with generic type. + */ + @Test + public void testIndirectArrayCreation() { + final String[] array = toArrayPropagatingType("foo", "bar"); + assertEquals(2, array.length); + assertEquals("foo", array[0]); + assertEquals("bar", array[1]); + } + + /** + * Tests indirect generic empty array creation with generic type. + */ + @Test + public void testIndirectEmptyArrayCreation() { + final String[] array = ArrayUtilsTest.<String>toArrayPropagatingType(); + assertEquals(0, array.length); + } + + @Test + public void testIsArrayIndexValid() { + assertFalse(ArrayUtils.isArrayIndexValid(null, 0)); + final String[] array = new String[1]; + + //too big + assertFalse(ArrayUtils.isArrayIndexValid(array, 1)); + + //negative index + assertFalse(ArrayUtils.isArrayIndexValid(array, -1)); + + //good to go + assertTrue(ArrayUtils.isArrayIndexValid(array, 0)); + } + + /** + * Test for {@link ArrayUtils#isEmpty(java.lang.Object[])}. + */ + @Test + public void testIsEmptyObject() { + final Object[] emptyArray = {}; + final Object[] notEmptyArray = {"Value"}; + assertTrue(ArrayUtils.isEmpty((Object[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyArray)); + } + + /** + * Tests for {@link ArrayUtils#isEmpty(long[])}, + * {@link ArrayUtils#isEmpty(int[])}, + * {@link ArrayUtils#isEmpty(short[])}, + * {@link ArrayUtils#isEmpty(char[])}, + * {@link ArrayUtils#isEmpty(byte[])}, + * {@link ArrayUtils#isEmpty(double[])}, + * {@link ArrayUtils#isEmpty(float[])} and + * {@link ArrayUtils#isEmpty(boolean[])}. + */ + @Test + public void testIsEmptyPrimitives() { + final long[] emptyLongArray = {}; + final long[] notEmptyLongArray = {1L}; + assertTrue(ArrayUtils.isEmpty((long[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyLongArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyLongArray)); + + final int[] emptyIntArray = {}; + final int[] notEmptyIntArray = {1}; + assertTrue(ArrayUtils.isEmpty((int[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyIntArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyIntArray)); + + final short[] emptyShortArray = {}; + final short[] notEmptyShortArray = {1}; + assertTrue(ArrayUtils.isEmpty((short[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyShortArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyShortArray)); + + final char[] emptyCharArray = {}; + final char[] notEmptyCharArray = {1}; + assertTrue(ArrayUtils.isEmpty((char[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyCharArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyCharArray)); + + final byte[] emptyByteArray = {}; + final byte[] notEmptyByteArray = {1}; + assertTrue(ArrayUtils.isEmpty((byte[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyByteArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyByteArray)); + + final double[] emptyDoubleArray = {}; + final double[] notEmptyDoubleArray = {1.0}; + assertTrue(ArrayUtils.isEmpty((double[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyDoubleArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyDoubleArray)); + + final float[] emptyFloatArray = {}; + final float[] notEmptyFloatArray = {1.0F}; + assertTrue(ArrayUtils.isEmpty((float[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyFloatArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyFloatArray)); + + final boolean[] emptyBooleanArray = {}; + final boolean[] notEmptyBooleanArray = {true}; + assertTrue(ArrayUtils.isEmpty((boolean[]) null)); + assertTrue(ArrayUtils.isEmpty(emptyBooleanArray)); + assertFalse(ArrayUtils.isEmpty(notEmptyBooleanArray)); + } + + @Test + public void testIsEquals() { + final long[][] larray1 = {{2, 5}, {4, 5}}; + final long[][] larray2 = {{2, 5}, {4, 6}}; + final long[] larray3 = {2, 5}; + this.assertIsEquals(larray1, larray2, larray3); + + final int[][] iarray1 = {{2, 5}, {4, 5}}; + final int[][] iarray2 = {{2, 5}, {4, 6}}; + final int[] iarray3 = {2, 5}; + this.assertIsEquals(iarray1, iarray2, iarray3); + + final short[][] sarray1 = {{2, 5}, {4, 5}}; + final short[][] sarray2 = {{2, 5}, {4, 6}}; + final short[] sarray3 = {2, 5}; + this.assertIsEquals(sarray1, sarray2, sarray3); + + final float[][] farray1 = {{2, 5}, {4, 5}}; + final float[][] farray2 = {{2, 5}, {4, 6}}; + final float[] farray3 = {2, 5}; + this.assertIsEquals(farray1, farray2, farray3); + + final double[][] darray1 = {{2, 5}, {4, 5}}; + final double[][] darray2 = {{2, 5}, {4, 6}}; + final double[] darray3 = {2, 5}; + this.assertIsEquals(darray1, darray2, darray3); + + final byte[][] byteArray1 = {{2, 5}, {4, 5}}; + final byte[][] byteArray2 = {{2, 5}, {4, 6}}; + final byte[] byteArray3 = {2, 5}; + this.assertIsEquals(byteArray1, byteArray2, byteArray3); + + final char[][] charArray1 = {{2, 5}, {4, 5}}; + final char[][] charArray2 = {{2, 5}, {4, 6}}; + final char[] charArray3 = {2, 5}; + this.assertIsEquals(charArray1, charArray2, charArray3); + + final boolean[][] barray1 = {{true, false}, {true, true}}; + final boolean[][] barray2 = {{true, false}, {true, false}}; + final boolean[] barray3 = {false, true}; + this.assertIsEquals(barray1, barray2, barray3); + + final Object[] array3 = {new String(new char[]{'A', 'B'})}; + final Object[] array4 = {"AB"}; + assertTrue(ArrayUtils.isEquals(array3, array3)); + assertTrue(ArrayUtils.isEquals(array3, array4)); + + assertTrue(ArrayUtils.isEquals(null, null)); + assertFalse(ArrayUtils.isEquals(null, array4)); + } + + /** + * Test for {@link ArrayUtils#isNotEmpty(java.lang.Object[])}. + */ + @Test + public void testIsNotEmptyObject() { + final Object[] emptyArray = {}; + final Object[] notEmptyArray = {"Value"}; + assertFalse(ArrayUtils.isNotEmpty((Object[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyArray)); + } + + /** + * Tests for {@link ArrayUtils#isNotEmpty(long[])}, + * {@link ArrayUtils#isNotEmpty(int[])}, + * {@link ArrayUtils#isNotEmpty(short[])}, + * {@link ArrayUtils#isNotEmpty(char[])}, + * {@link ArrayUtils#isNotEmpty(byte[])}, + * {@link ArrayUtils#isNotEmpty(double[])}, + * {@link ArrayUtils#isNotEmpty(float[])} and + * {@link ArrayUtils#isNotEmpty(boolean[])}. + */ + @Test + public void testIsNotEmptyPrimitives() { + final long[] emptyLongArray = {}; + final long[] notEmptyLongArray = {1L}; + assertFalse(ArrayUtils.isNotEmpty((long[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyLongArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyLongArray)); + + final int[] emptyIntArray = {}; + final int[] notEmptyIntArray = {1}; + assertFalse(ArrayUtils.isNotEmpty((int[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyIntArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyIntArray)); + + final short[] emptyShortArray = {}; + final short[] notEmptyShortArray = {1}; + assertFalse(ArrayUtils.isNotEmpty((short[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyShortArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyShortArray)); + + final char[] emptyCharArray = {}; + final char[] notEmptyCharArray = {1}; + assertFalse(ArrayUtils.isNotEmpty((char[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyCharArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyCharArray)); + + final byte[] emptyByteArray = {}; + final byte[] notEmptyByteArray = {1}; + assertFalse(ArrayUtils.isNotEmpty((byte[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyByteArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyByteArray)); + + final double[] emptyDoubleArray = {}; + final double[] notEmptyDoubleArray = {1.0}; + assertFalse(ArrayUtils.isNotEmpty((double[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyDoubleArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyDoubleArray)); + + final float[] emptyFloatArray = {}; + final float[] notEmptyFloatArray = {1.0F}; + assertFalse(ArrayUtils.isNotEmpty((float[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyFloatArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyFloatArray)); + + final boolean[] emptyBooleanArray = {}; + final boolean[] notEmptyBooleanArray = {true}; + assertFalse(ArrayUtils.isNotEmpty((boolean[]) null)); + assertFalse(ArrayUtils.isNotEmpty(emptyBooleanArray)); + assertTrue(ArrayUtils.isNotEmpty(notEmptyBooleanArray)); + } + + @Test + public void testIsSorted() { + Integer[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new Integer[]{1}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new Integer[]{1, 2, 3}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new Integer[]{1, 3, 2}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedBool() { + boolean[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new boolean[]{true}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new boolean[]{false, true}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new boolean[]{true, false}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedByte() { + byte[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new byte[]{0x10}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new byte[]{0x10, 0x20, 0x30}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new byte[]{0x10, 0x30, 0x20}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedChar() { + char[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new char[]{'a'}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new char[]{'a', 'b', 'c'}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new char[]{'a', 'c', 'b'}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedComparator() { + final Comparator<Integer> c = Comparator.reverseOrder(); + + Integer[] array = null; + assertTrue(ArrayUtils.isSorted(array, c)); + + array = new Integer[]{1}; + assertTrue(ArrayUtils.isSorted(array, c)); + + array = new Integer[]{3, 2, 1}; + assertTrue(ArrayUtils.isSorted(array, c)); + + array = new Integer[]{1, 3, 2}; + assertFalse(ArrayUtils.isSorted(array, c)); + } + + @Test + public void testIsSortedDouble() { + double[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new double[]{0.0}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new double[]{-1.0, 0.0, 0.1, 0.2}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new double[]{-1.0, 0.2, 0.1, 0.0}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedFloat() { + float[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new float[]{0f}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new float[]{-1f, 0f, 0.1f, 0.2f}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new float[]{-1f, 0.2f, 0.1f, 0f}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedInt() { + int[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new int[]{1}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new int[]{1, 2, 3}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new int[]{1, 3, 2}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedLong() { + long[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new long[]{0L}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new long[]{-1L, 0L, 1L}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new long[]{-1L, 1L, 0L}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testIsSortedNullComparator() { + assertThrows(NullPointerException.class, () -> ArrayUtils.isSorted(null, null)); + } + + @Test + public void testIsSortedShort() { + short[] array = null; + assertTrue(ArrayUtils.isSorted(array)); + + array = new short[]{0}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new short[]{-1, 0, 1}; + assertTrue(ArrayUtils.isSorted(array)); + + array = new short[]{-1, 1, 0}; + assertFalse(ArrayUtils.isSorted(array)); + } + + @Test + public void testLastIndexOf() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertEquals(-1, ArrayUtils.lastIndexOf(null, null)); + assertEquals(-1, ArrayUtils.lastIndexOf(null, "0")); + assertEquals(5, ArrayUtils.lastIndexOf(array, "0")); + assertEquals(1, ArrayUtils.lastIndexOf(array, "1")); + assertEquals(2, ArrayUtils.lastIndexOf(array, "2")); + assertEquals(3, ArrayUtils.lastIndexOf(array, "3")); + assertEquals(4, ArrayUtils.lastIndexOf(array, null)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, "notInArray")); + } + + @Test + public void testLastIndexOfBoolean() { + boolean[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, true)); + array = new boolean[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, true)); + array = new boolean[]{true, false, true}; + assertEquals(2, ArrayUtils.lastIndexOf(array, true)); + assertEquals(1, ArrayUtils.lastIndexOf(array, false)); + array = new boolean[]{true, true}; + assertEquals(-1, ArrayUtils.lastIndexOf(array, false)); + } + + @Test + public void testLastIndexOfBooleanWithStartIndex() { + boolean[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, true, 2)); + array = new boolean[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, true, 2)); + array = new boolean[]{true, false, true}; + assertEquals(2, ArrayUtils.lastIndexOf(array, true, 2)); + assertEquals(0, ArrayUtils.lastIndexOf(array, true, 1)); + assertEquals(1, ArrayUtils.lastIndexOf(array, false, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, true, -1)); + array = new boolean[]{true, true}; + assertEquals(-1, ArrayUtils.lastIndexOf(array, false, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, true, -1)); + } + + @Test + public void testLastIndexOfByte() { + byte[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 0)); + array = new byte[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (byte) 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (byte) 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (byte) 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, (byte) 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 99)); + } + + @Test + public void testLastIndexOfByteWithStartIndex() { + byte[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 0, 2)); + array = new byte[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, (byte) 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (byte) 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (byte) 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (byte) 99)); + assertEquals(4, ArrayUtils.lastIndexOf(array, (byte) 0, 88)); + } + + @Test + public void testLastIndexOfChar() { + char[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'a')); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + assertEquals(4, ArrayUtils.lastIndexOf(array, 'a')); + assertEquals(1, ArrayUtils.lastIndexOf(array, 'b')); + assertEquals(2, ArrayUtils.lastIndexOf(array, 'c')); + assertEquals(3, ArrayUtils.lastIndexOf(array, 'd')); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'e')); + } + + @Test + public void testLastIndexOfCharWithStartIndex() { + char[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'a', 2)); + array = new char[]{'a', 'b', 'c', 'd', 'a'}; + assertEquals(0, ArrayUtils.lastIndexOf(array, 'a', 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 'b', 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 'c', 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'd', 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'd', -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 'e')); + assertEquals(4, ArrayUtils.lastIndexOf(array, 'a', 88)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfDouble() { + double[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (double) 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (double) 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (double) 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, (double) 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 99)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfDoubleTolerance() { + double[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (double) 0, 0.3)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2.2, 0.35)); + assertEquals(3, ArrayUtils.lastIndexOf(array, 4.15, 2.0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1.00001324, 0.0001)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfDoubleWithStartIndex() { + double[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, 2)); + array = new double[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, 2)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, (double) 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (double) 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (double) 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 99)); + assertEquals(4, ArrayUtils.lastIndexOf(array, (double) 0, 88)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfDoubleWithStartIndexTolerance() { + double[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, 2, (double) 0)); + array = new double[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 0, 2, (double) 0)); + array = new double[]{(double) 3}; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (double) 1, 0, (double) 0)); + array = new double[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (double) 0, 99, 0.3)); + assertEquals(0, ArrayUtils.lastIndexOf(array, (double) 0, 3, 0.3)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2.2, 3, 0.35)); + assertEquals(3, ArrayUtils.lastIndexOf(array, 4.15, array.length, 2.0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1.00001324, array.length, 0.0001)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 4.15, -200, 2.0)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfFloat() { + float[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 0)); + array = new float[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 0)); + array = new float[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (float) 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (float) 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (float) 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, (float) 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 99)); + } + + @SuppressWarnings("cast") + @Test + public void testLastIndexOfFloatWithStartIndex() { + float[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 0, 2)); + array = new float[0]; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 0, 2)); + array = new float[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, (float) 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (float) 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (float) 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (float) 99)); + assertEquals(4, ArrayUtils.lastIndexOf(array, (float) 0, 88)); + } + + @Test + public void testLastIndexOfInt() { + int[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 0)); + array = new int[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 99)); + } + + @Test + public void testLastIndexOfIntWithStartIndex() { + int[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 0, 2)); + array = new int[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 99)); + assertEquals(4, ArrayUtils.lastIndexOf(array, 0, 88)); + } + + @Test + public void testLastIndexOfLong() { + long[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 0)); + array = new long[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 99)); + } + + @Test + public void testLastIndexOfLongWithStartIndex() { + long[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, 0, 2)); + array = new long[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, 99, 4)); + assertEquals(4, ArrayUtils.lastIndexOf(array, 0, 88)); + } + + @Test + public void testLastIndexOfShort() { + short[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 0)); + array = new short[]{0, 1, 2, 3, 0}; + assertEquals(4, ArrayUtils.lastIndexOf(array, (short) 0)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (short) 1)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (short) 2)); + assertEquals(3, ArrayUtils.lastIndexOf(array, (short) 3)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 99)); + } + + @Test + public void testLastIndexOfShortWithStartIndex() { + short[] array = null; + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 0, 2)); + array = new short[]{0, 1, 2, 3, 0}; + assertEquals(0, ArrayUtils.lastIndexOf(array, (short) 0, 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, (short) 1, 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, (short) 2, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 3, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 3, -1)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, (short) 99)); + assertEquals(4, ArrayUtils.lastIndexOf(array, (short) 0, 88)); + } + + @Test + public void testLastIndexOfWithStartIndex() { + final Object[] array = {"0", "1", "2", "3", null, "0"}; + assertEquals(-1, ArrayUtils.lastIndexOf(null, null, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(null, "0", 2)); + assertEquals(0, ArrayUtils.lastIndexOf(array, "0", 2)); + assertEquals(1, ArrayUtils.lastIndexOf(array, "1", 2)); + assertEquals(2, ArrayUtils.lastIndexOf(array, "2", 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, "3", 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, "3", -1)); + assertEquals(4, ArrayUtils.lastIndexOf(array, null, 5)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, null, 2)); + assertEquals(-1, ArrayUtils.lastIndexOf(array, "notInArray", 5)); + + assertEquals(-1, ArrayUtils.lastIndexOf(array, null, -1)); + assertEquals(5, ArrayUtils.lastIndexOf(array, "0", 88)); + } + + @Test + public void testNullToEmptyBoolean() { + final boolean[] original = {true, false}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyBooleanEmptyArray() { + final boolean[] empty = {}; + final boolean[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyBooleanNull() { + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.nullToEmpty((boolean[]) null)); + } + + @Test + public void testNullToEmptyBooleanObject() { + final Boolean[] original = {Boolean.TRUE, Boolean.FALSE}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyBooleanObjectEmptyArray() { + final Boolean[] empty = {}; + final Boolean[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyBooleanObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Boolean[]) null)); + } + + @Test + public void testNullToEmptyByte() { + final byte[] original = {0x0F, 0x0E}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyByteEmptyArray() { + final byte[] empty = {}; + final byte[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyByteNull() { + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.nullToEmpty((byte[]) null)); + } + + @Test + public void testNullToEmptyByteObject() { + final Byte[] original = {0x0F, 0x0E}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyByteObjectEmptyArray() { + final Byte[] empty = {}; + final Byte[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_BYTE_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyByteObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_BYTE_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Byte[]) null)); + } + + @Test + public void testNullToEmptyChar() { + final char[] original = {'a', 'b'}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyCharEmptyArray() { + final char[] empty = {}; + final char[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyCharNull() { + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.nullToEmpty((char[]) null)); + } + + @Test + public void testNullToEmptyCharObject() { + final Character[] original = {'a', 'b'}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyCharObjectEmptyArray() { + final Character[] empty = {}; + final Character[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_CHARACTER_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNUllToEmptyCharObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_CHARACTER_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Character[]) null)); + } + + @Test + public void testNullToEmptyClass() { + final Class<?>[] original = {Object.class, String.class}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyClassEmptyArray() { + final Class<?>[] empty = {}; + final Class<?>[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_CLASS_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyClassNull() { + assertArrayEquals(ArrayUtils.EMPTY_CLASS_ARRAY, ArrayUtils.nullToEmpty((Class<?>[]) null)); + } + + @Test + public void testNullToEmptyDouble() { + final double[] original = {1L, 2L}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyDoubleEmptyArray() { + final double[] empty = {}; + final double[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyDoubleNull() { + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.nullToEmpty((double[]) null)); + } + + @Test + public void testNullToEmptyDoubleObject() { + final Double[] original = {1D, 2D}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyDoubleObjectEmptyArray() { + final Double[] empty = {}; + final Double[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyDoubleObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Double[]) null)); + } + + @Test + public void testNullToEmptyFloat() { + final float[] original = {2.6f, 3.8f}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyFloatEmptyArray() { + final float[] empty = {}; + final float[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyFloatNull() { + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.nullToEmpty((float[]) null)); + } + + @Test + public void testNullToEmptyFloatObject() { + final Float[] original = {2.6f, 3.8f}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyFloatObjectEmptyArray() { + final Float[] empty = {}; + final Float[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_FLOAT_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyFloatObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_FLOAT_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Float[]) null)); + } + + @Test + public void testNullToEmptyGeneric() { + final TestClass[] input = {new TestClass(), new TestClass()}; + final TestClass[] output = ArrayUtils.nullToEmpty(input, TestClass[].class); + + assertSame(input, output); + } + + @Test + public void testNullToEmptyGenericEmpty() { + final TestClass[] input = {}; + final TestClass[] output = ArrayUtils.nullToEmpty(input, TestClass[].class); + + assertSame(input, output); + } + + @Test + public void testNullToEmptyGenericNull() { + final TestClass[] output = ArrayUtils.nullToEmpty(null, TestClass[].class); + + assertNotNull(output); + assertEquals(0, output.length); + } + + @Test + public void testNullToEmptyGenericNullType() { + final TestClass[] input = {}; + assertThrows(IllegalArgumentException.class, () -> ArrayUtils.nullToEmpty(input, null)); + } + + @Test + public void testNullToEmptyInt() { + final int[] original = {1, 2}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyIntEmptyArray() { + final int[] empty = {}; + final int[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyIntNull() { + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.nullToEmpty((int[]) null)); + } + + @Test + public void testNullToEmptyIntObject() { + final Integer[] original = {1, 2}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyIntObjectEmptyArray() { + final Integer[] empty = {}; + final Integer[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_INTEGER_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyIntObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_INTEGER_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Integer[]) null)); + } + + @Test + public void testNullToEmptyLong() { + final long[] original = {1L, 2L}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyLongEmptyArray() { + final long[] empty = {}; + final long[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyLongNull() { + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.nullToEmpty((long[]) null)); + } + + @Test + public void testNullToEmptyLongObject() { + @SuppressWarnings("boxing") final Long[] original = {1L, 2L}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyLongObjectEmptyArray() { + final Long[] empty = {}; + final Long[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_LONG_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyLongObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_LONG_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Long[]) null)); + } + + @Test + public void testNullToEmptyObject() { + final Object[] original = {Boolean.TRUE, Boolean.FALSE}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyObjectEmptyArray() { + final Object[] empty = {}; + final Object[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Object[]) null)); + } + + @Test + public void testNullToEmptyShort() { + final short[] original = {1, 2}; + assertEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyShortEmptyArray() { + final short[] empty = {}; + final short[] result = ArrayUtils.nullToEmpty(empty); + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyShortNull() { + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.nullToEmpty((short[]) null)); + } + + @Test + public void testNullToEmptyShortObject() { + @SuppressWarnings("boxing") final Short[] original = {1, 2}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyShortObjectEmptyArray() { + final Short[] empty = {}; + final Short[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_SHORT_OBJECT_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyShortObjectNull() { + assertArrayEquals(ArrayUtils.EMPTY_SHORT_OBJECT_ARRAY, ArrayUtils.nullToEmpty((Short[]) null)); + } + + @Test + public void testNullToEmptyString() { + final String[] original = {"abc", "def"}; + assertArrayEquals(original, ArrayUtils.nullToEmpty(original)); + } + + @Test + public void testNullToEmptyStringEmptyArray() { + final String[] empty = {}; + final String[] result = ArrayUtils.nullToEmpty(empty); + assertArrayEquals(ArrayUtils.EMPTY_STRING_ARRAY, result); + assertNotSame(empty, result); + } + + @Test + public void testNullToEmptyStringNull() { + assertArrayEquals(ArrayUtils.EMPTY_STRING_ARRAY, ArrayUtils.nullToEmpty((String[]) null)); + } + + @Test + public void testReverse() { + final StringBuffer str1 = new StringBuffer("pick"); + final String str2 = "a"; + final String[] str3 = {"stick"}; + final String str4 = "up"; + + Object[] array = {str1, str2, str3}; + ArrayUtils.reverse(array); + assertEquals(array[0], str3); + assertEquals(array[1], str2); + assertEquals(array[2], str1); + + array = new Object[]{str1, str2, str3, str4}; + ArrayUtils.reverse(array); + assertEquals(array[0], str4); + assertEquals(array[1], str3); + assertEquals(array[2], str2); + assertEquals(array[3], str1); + + array = null; + ArrayUtils.reverse(array); + assertArrayEquals(null, array); + } + + @Test + public void testReverseBoolean() { + boolean[] array = {false, false, true}; + ArrayUtils.reverse(array); + assertTrue(array[0]); + assertFalse(array[1]); + assertFalse(array[2]); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseBooleanRange() { + boolean[] array = {false, false, true}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertTrue(array[0]); + assertFalse(array[1]); + assertFalse(array[2]); + // a range + array = new boolean[]{false, false, true}; + ArrayUtils.reverse(array, 0, 2); + assertFalse(array[0]); + assertFalse(array[1]); + assertTrue(array[2]); + // a range with a negative start + array = new boolean[]{false, false, true}; + ArrayUtils.reverse(array, -1, 3); + assertTrue(array[0]); + assertFalse(array[1]); + assertFalse(array[2]); + // a range with a large stop index + array = new boolean[]{false, false, true}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertTrue(array[0]); + assertFalse(array[1]); + assertFalse(array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseByte() { + byte[] array = {2, 3, 4}; + ArrayUtils.reverse(array); + assertEquals(array[0], 4); + assertEquals(array[1], 3); + assertEquals(array[2], 2); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseByteRange() { + byte[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new byte[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new byte[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new byte[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseChar() { + char[] array = {'a', 'f', 'C'}; + ArrayUtils.reverse(array); + assertEquals(array[0], 'C'); + assertEquals(array[1], 'f'); + assertEquals(array[2], 'a'); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseCharRange() { + char[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new char[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new char[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new char[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseDouble() { + double[] array = {0.3d, 0.4d, 0.5d}; + ArrayUtils.reverse(array); + assertEquals(0.5d, array[0]); + assertEquals(0.4d, array[1]); + assertEquals(0.3d, array[2]); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseDoubleRange() { + double[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new double[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new double[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new double[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseFloat() { + float[] array = {0.3f, 0.4f, 0.5f}; + ArrayUtils.reverse(array); + assertEquals(0.5f, array[0]); + assertEquals(0.4f, array[1]); + assertEquals(0.3f, array[2]); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseFloatRange() { + float[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new float[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new float[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new float[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseInt() { + int[] array = {1, 2, 3}; + ArrayUtils.reverse(array); + assertEquals(array[0], 3); + assertEquals(array[1], 2); + assertEquals(array[2], 1); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseIntRange() { + int[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new int[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new int[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new int[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseLong() { + long[] array = {1L, 2L, 3L}; + ArrayUtils.reverse(array); + assertEquals(array[0], 3L); + assertEquals(array[1], 2L); + assertEquals(array[2], 1L); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseLongRange() { + long[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new long[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new long[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new long[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseObjectRange() { + String[] array = {"1", "2", "3"}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals("3", array[0]); + assertEquals("2", array[1]); + assertEquals("1", array[2]); + // a range + array = new String[]{"1", "2", "3"}; + ArrayUtils.reverse(array, 0, 2); + assertEquals("2", array[0]); + assertEquals("1", array[1]); + assertEquals("3", array[2]); + // a range with a negative start + array = new String[]{"1", "2", "3"}; + ArrayUtils.reverse(array, -1, 3); + assertEquals("3", array[0]); + assertEquals("2", array[1]); + assertEquals("1", array[2]); + // a range with a large stop index + array = new String[]{"1", "2", "3"}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals("3", array[0]); + assertEquals("2", array[1]); + assertEquals("1", array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testReverseShort() { + short[] array = {1, 2, 3}; + ArrayUtils.reverse(array); + assertEquals(array[0], 3); + assertEquals(array[1], 2); + assertEquals(array[2], 1); + + array = null; + ArrayUtils.reverse(array); + assertNull(array); + } + + @Test + public void testReverseShortRange() { + short[] array = {1, 2, 3}; + // The whole array + ArrayUtils.reverse(array, 0, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range + array = new short[]{1, 2, 3}; + ArrayUtils.reverse(array, 0, 2); + assertEquals(2, array[0]); + assertEquals(1, array[1]); + assertEquals(3, array[2]); + // a range with a negative start + array = new short[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, 3); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // a range with a large stop index + array = new short[]{1, 2, 3}; + ArrayUtils.reverse(array, -1, array.length + 1000); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + // null + array = null; + ArrayUtils.reverse(array, 0, 3); + assertNull(array); + } + + @Test + public void testSameLength() { + final Object[] nullArray = null; + final Object[] emptyArray = {}; + final Object[] oneArray = {"pick"}; + final Object[] twoArray = {"pick", "stick"}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthAll() { + final Object[] nullArrayObject = null; + final Object[] emptyArrayObject = {}; + final Object[] oneArrayObject = {"pick"}; + final Object[] twoArrayObject = {"pick", "stick"}; + final boolean[] nullArrayBoolean = null; + final boolean[] emptyArrayBoolean = {}; + final boolean[] oneArrayBoolean = {true}; + final boolean[] twoArrayBoolean = {true, false}; + final long[] nullArrayLong = null; + final long[] emptyArrayLong = {}; + final long[] oneArrayLong = {0L}; + final long[] twoArrayLong = {0L, 76L}; + final int[] nullArrayInt = null; + final int[] emptyArrayInt = {}; + final int[] oneArrayInt = {4}; + final int[] twoArrayInt = {5, 7}; + final short[] nullArrayShort = null; + final short[] emptyArrayShort = {}; + final short[] oneArrayShort = {4}; + final short[] twoArrayShort = {6, 8}; + final char[] nullArrayChar = null; + final char[] emptyArrayChar = {}; + final char[] oneArrayChar = {'f'}; + final char[] twoArrayChar = {'d', 't'}; + final byte[] nullArrayByte = null; + final byte[] emptyArrayByte = {}; + final byte[] oneArrayByte = {3}; + final byte[] twoArrayByte = {4, 6}; + final double[] nullArrayDouble = null; + final double[] emptyArrayDouble = {}; + final double[] oneArrayDouble = {1.3d}; + final double[] twoArrayDouble = {4.5d, 6.3d}; + final float[] nullArrayFloat = null; + final float[] emptyArrayFloat = {}; + final float[] oneArrayFloat = {2.5f}; + final float[] twoArrayFloat = {6.4f, 5.8f}; + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayObject, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayBoolean, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayLong, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayInt, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayShort, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayChar, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayByte, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayDouble, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(nullArrayFloat, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayObject, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayBoolean, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayLong, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayInt, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayShort, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayChar, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayByte, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayDouble, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(nullArrayFloat, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, nullArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayObject, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayBoolean, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayLong, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayInt, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayShort, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayChar, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayByte, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayDouble, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayObject)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayLong)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayInt)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayShort)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayChar)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayByte)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayDouble)); + assertTrue(ArrayUtils.isSameLength(emptyArrayFloat, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayObject, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayBoolean, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayLong, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayInt, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayShort, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayChar, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayByte, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayDouble, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(emptyArrayFloat, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, emptyArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayObject, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayBoolean, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayLong, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayInt, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayShort, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayChar, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayByte, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayDouble, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayObject)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayLong)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayInt)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayShort)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayChar)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayByte)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayDouble)); + assertTrue(ArrayUtils.isSameLength(oneArrayFloat, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayObject, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayBoolean, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayLong, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayInt, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayShort, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayChar, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayByte, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayDouble, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayObject)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayLong)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayInt)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayShort)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayChar)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayByte)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayDouble)); + assertFalse(ArrayUtils.isSameLength(oneArrayFloat, twoArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, nullArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, emptyArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayObject, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayBoolean, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayLong, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayInt, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayShort, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayChar, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayByte, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayDouble, oneArrayFloat)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayObject)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayBoolean)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayLong)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayInt)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayShort)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayChar)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayByte)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayDouble)); + assertFalse(ArrayUtils.isSameLength(twoArrayFloat, oneArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayObject, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayBoolean, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayLong, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayInt, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayShort, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayChar, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayByte, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayDouble, twoArrayFloat)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayObject)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayBoolean)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayLong)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayInt)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayShort)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayChar)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayByte)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayDouble)); + assertTrue(ArrayUtils.isSameLength(twoArrayFloat, twoArrayFloat)); + } + + @Test + public void testSameLengthBoolean() { + final boolean[] nullArray = null; + final boolean[] emptyArray = {}; + final boolean[] oneArray = {true}; + final boolean[] twoArray = {true, false}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthByte() { + final byte[] nullArray = null; + final byte[] emptyArray = {}; + final byte[] oneArray = {3}; + final byte[] twoArray = {4, 6}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthChar() { + final char[] nullArray = null; + final char[] emptyArray = {}; + final char[] oneArray = {'f'}; + final char[] twoArray = {'d', 't'}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthDouble() { + final double[] nullArray = null; + final double[] emptyArray = {}; + final double[] oneArray = {1.3d}; + final double[] twoArray = {4.5d, 6.3d}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthFloat() { + final float[] nullArray = null; + final float[] emptyArray = {}; + final float[] oneArray = {2.5f}; + final float[] twoArray = {6.4f, 5.8f}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthInt() { + final int[] nullArray = null; + final int[] emptyArray = {}; + final int[] oneArray = {4}; + final int[] twoArray = {5, 7}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthLong() { + final long[] nullArray = null; + final long[] emptyArray = {}; + final long[] oneArray = {0L}; + final long[] twoArray = {0L, 76L}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameLengthShort() { + final short[] nullArray = null; + final short[] emptyArray = {}; + final short[] oneArray = {4}; + final short[] twoArray = {6, 8}; + + assertTrue(ArrayUtils.isSameLength(nullArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(nullArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(nullArray, twoArray)); + + assertTrue(ArrayUtils.isSameLength(emptyArray, nullArray)); + assertTrue(ArrayUtils.isSameLength(emptyArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(emptyArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(oneArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, emptyArray)); + assertTrue(ArrayUtils.isSameLength(oneArray, oneArray)); + assertFalse(ArrayUtils.isSameLength(oneArray, twoArray)); + + assertFalse(ArrayUtils.isSameLength(twoArray, nullArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, emptyArray)); + assertFalse(ArrayUtils.isSameLength(twoArray, oneArray)); + assertTrue(ArrayUtils.isSameLength(twoArray, twoArray)); + } + + @Test + public void testSameType() { + assertThrows(IllegalArgumentException.class, () -> ArrayUtils.isSameType(null, null)); + assertThrows(IllegalArgumentException.class, () -> ArrayUtils.isSameType(null, new Object[0])); + assertThrows(IllegalArgumentException.class, () -> ArrayUtils.isSameType(new Object[0], null)); + + assertTrue(ArrayUtils.isSameType(new Object[0], new Object[0])); + assertFalse(ArrayUtils.isSameType(new String[0], new Object[0])); + assertTrue(ArrayUtils.isSameType(new String[0][0], new String[0][0])); + assertFalse(ArrayUtils.isSameType(new String[0], new String[0][0])); + assertFalse(ArrayUtils.isSameType(new String[0][0], new String[0])); + } + + @Test + public void testShiftAllByte() { + final byte[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllChar() { + final char[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllDouble() { + final double[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllFloat() { + final float[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllInt() { + final int[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllLong() { + final long[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftAllObject() { + final String[] array = {"1", "2", "3", "4"}; + ArrayUtils.shift(array, 4); + assertEquals("1", array[0]); + assertEquals("2", array[1]); + assertEquals("3", array[2]); + assertEquals("4", array[3]); + ArrayUtils.shift(array, -4); + assertEquals("1", array[0]); + assertEquals("2", array[1]); + assertEquals("3", array[2]); + assertEquals("4", array[3]); + } + + @Test + public void testShiftAllShort() { + final short[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, -4); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftBoolean() { + final boolean[] array = {true, true, false, false}; + + ArrayUtils.shift(array, 1); + assertFalse(array[0]); + assertTrue(array[1]); + assertTrue(array[2]); + assertFalse(array[3]); + + ArrayUtils.shift(array, -1); + assertTrue(array[0]); + assertTrue(array[1]); + assertFalse(array[2]); + assertFalse(array[3]); + + ArrayUtils.shift(array, 5); + assertFalse(array[0]); + assertTrue(array[1]); + assertTrue(array[2]); + assertFalse(array[3]); + + ArrayUtils.shift(array, -3); + assertFalse(array[0]); + assertFalse(array[1]); + assertTrue(array[2]); + assertTrue(array[3]); + } + + @Test + public void testShiftByte() { + final byte[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + @Test + public void testShiftChar() { + final char[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + @Test + public void testShiftDouble() { + final double[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + @Test + public void testShiftFloat() { + final float[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + + @Test + public void testShiftInt() { + final int[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + @Test + public void testShiftLong() { + final long[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + } + + @Test + public void testShiftNullBoolean() { + final boolean[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullDouble() { + final double[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullFloat() { + final float[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullInt() { + final int[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullLong() { + final long[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullObject() { + final String[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftNullShort() { + final short[] array = null; + + ArrayUtils.shift(array, 1); + assertNull(array); + } + + @Test + public void testShiftObject() { + final String[] array = {"1", "2", "3", "4"}; + ArrayUtils.shift(array, 1); + assertEquals("4", array[0]); + assertEquals("1", array[1]); + assertEquals("2", array[2]); + assertEquals("3", array[3]); + ArrayUtils.shift(array, -1); + assertEquals("1", array[0]); + assertEquals("2", array[1]); + assertEquals("3", array[2]); + assertEquals("4", array[3]); + ArrayUtils.shift(array, 5); + assertEquals("4", array[0]); + assertEquals("1", array[1]); + assertEquals("2", array[2]); + assertEquals("3", array[3]); + ArrayUtils.shift(array, -3); + assertEquals("3", array[0]); + assertEquals("4", array[1]); + assertEquals("1", array[2]); + assertEquals("2", array[3]); + } + + @Test + public void testShiftRangeByte() { + final byte[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeChar() { + final char[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeDouble() { + final double[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeFloat() { + final float[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeInt() { + final int[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeLong() { + final long[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftRangeNoElemByte() { + final byte[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemChar() { + final char[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemDouble() { + final double[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemFloat() { + final float[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemInt() { + final int[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemLong() { + final long[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNoElemObject() { + final String[] array = {"1", "2", "3", "4"}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals("1", array[0]); + assertEquals("2", array[1]); + assertEquals("3", array[2]); + assertEquals("4", array[3]); + } + + @Test + public void testShiftRangeNoElemShort() { + final short[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1, 1, 1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + } + + @Test + public void testShiftRangeNullByte() { + final byte[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullChar() { + final char[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullDouble() { + final double[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullFloat() { + final float[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullInt() { + final int[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullLong() { + final long[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullObject() { + final String[] array = null; + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeNullShort() { + final short[] array = null; + + ArrayUtils.shift(array, 1, 1, 1); + assertNull(array); + } + + @Test + public void testShiftRangeObject() { + final String[] array = {"1", "2", "3", "4", "5"}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals("1", array[0]); + assertEquals("3", array[1]); + assertEquals("2", array[2]); + assertEquals("4", array[3]); + assertEquals("5", array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals("1", array[0]); + assertEquals("2", array[1]); + assertEquals("4", array[2]); + assertEquals("3", array[3]); + assertEquals("5", array[4]); + } + + @Test + public void testShiftRangeShort() { + final short[] array = {1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 1, 3, 1); + assertEquals(1, array[0]); + assertEquals(3, array[1]); + assertEquals(2, array[2]); + assertEquals(4, array[3]); + assertEquals(5, array[4]); + ArrayUtils.shift(array, 1, 4, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(4, array[2]); + assertEquals(3, array[3]); + assertEquals(5, array[4]); + } + + @Test + public void testShiftShort() { + short[] array = {1, 2, 3, 4}; + ArrayUtils.shift(array, 1); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -1); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + assertEquals(4, array[3]); + ArrayUtils.shift(array, 5); + assertEquals(4, array[0]); + assertEquals(1, array[1]); + assertEquals(2, array[2]); + assertEquals(3, array[3]); + ArrayUtils.shift(array, -3); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + array = new short[]{1, 2, 3, 4, 5}; + ArrayUtils.shift(array, 2); + assertEquals(4, array[0]); + assertEquals(5, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + assertEquals(3, array[4]); + } + + @Test + public void testShuffle() { + final String[] array1 = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; + final String[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final String element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleBoolean() { + final boolean[] array1 = {true, false, true, true, false, false, true, false, false, true}; + final boolean[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + assertEquals(5, ArrayUtils.removeAllOccurrences(array1, true).length); + } + + @Test + public void testShuffleByte() { + final byte[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final byte[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final byte element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleChar() { + final char[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final char[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final char element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleDouble() { + final double[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final double[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final double element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleFloat() { + final float[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final float[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final float element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleInt() { + final int[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final int[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final int element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleLong() { + final long[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final long[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final long element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testShuffleShort() { + final short[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final short[] array2 = ArrayUtils.clone(array1); + + ArrayUtils.shuffle(array1, new Random(SEED)); + assertFalse(Arrays.equals(array1, array2)); + for (final short element : array2) { + assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found"); + } + } + + @Test + public void testSubarrayBoolean() { + final boolean[] nullArray = null; + final boolean[] array = {true, true, false, true, false, true}; + final boolean[] leftSubarray = {true, true, false, true}; + final boolean[] midSubarray = {true, false, true, false}; + final boolean[] rightSubarray = {false, true, false, true}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_BOOLEAN_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_BOOLEAN_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(boolean.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "boolean type"); + } + + @Test + public void testSubarrayByte() { + final byte[] nullArray = null; + final byte[] array = {10, 11, 12, 13, 14, 15}; + final byte[] leftSubarray = {10, 11, 12, 13}; + final byte[] midSubarray = {11, 12, 13, 14}; + final byte[] rightSubarray = {12, 13, 14, 15}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_BYTE_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_BYTE_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(byte.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "byte type"); + } + + @Test + public void testSubarrayDouble() { + final double[] nullArray = null; + final double[] array = {10.123, 11.234, 12.345, 13.456, 14.567, 15.678}; + final double[] leftSubarray = {10.123, 11.234, 12.345, 13.456}; + final double[] midSubarray = {11.234, 12.345, 13.456, 14.567}; + final double[] rightSubarray = {12.345, 13.456, 14.567, 15.678}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_DOUBLE_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_DOUBLE_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(double.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "double type"); + } + + @Test + public void testSubarrayFloat() { + final float[] nullArray = null; + final float[] array = {10, 11, 12, 13, 14, 15}; + final float[] leftSubarray = {10, 11, 12, 13}; + final float[] midSubarray = {11, 12, 13, 14}; + final float[] rightSubarray = {12, 13, 14, 15}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_FLOAT_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_FLOAT_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(float.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "float type"); + } + + @Test + public void testSubarrayInt() { + final int[] nullArray = null; + final int[] array = {10, 11, 12, 13, 14, 15}; + final int[] leftSubarray = {10, 11, 12, 13}; + final int[] midSubarray = {11, 12, 13, 14}; + final int[] rightSubarray = {12, 13, 14, 15}; + + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_INT_ARRAY, 1, 2), "empty array"); + + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + + assertEquals(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_INT_ARRAY, 1, 2), + "empty array, object test"); + + assertSame(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + + assertSame(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + + assertSame(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(int.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "int type"); + } + + @Test + public void testSubarrayLong() { + final long[] nullArray = null; + final long[] array = {999910, 999911, 999912, 999913, 999914, 999915}; + final long[] leftSubarray = {999910, 999911, 999912, 999913}; + final long[] midSubarray = {999911, 999912, 999913, 999914}; + final long[] rightSubarray = {999912, 999913, 999914, 999915}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_LONG_ARRAY, 1, 2), + "empty array"); + + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + + assertEquals(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_LONG_ARRAY, 1, 2), + "empty array, object test"); + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(long.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "long type"); + + } + + @Test + public void testSubarrayObject() { + final Object[] nullArray = null; + final Object[] objectArray = {"a", "b", "c", "d", "e", "f"}; + + assertEquals("abcd", StringUtils.join(ArrayUtils.subarray(objectArray, 0, 4)), "0 start, mid end"); + assertEquals("abcdef", StringUtils.join(ArrayUtils.subarray(objectArray, 0, objectArray.length)), + "0 start, length end"); + assertEquals("bcd", StringUtils.join(ArrayUtils.subarray(objectArray, 1, 4)), "mid start, mid end"); + assertEquals("bcdef", StringUtils.join(ArrayUtils.subarray(objectArray, 1, objectArray.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals("", StringUtils.join(ArrayUtils.subarray(ArrayUtils.EMPTY_OBJECT_ARRAY, 1, 2)), "empty array"); + assertEquals("", StringUtils.join(ArrayUtils.subarray(objectArray, 4, 2)), "start > end"); + assertEquals("", StringUtils.join(ArrayUtils.subarray(objectArray, 3, 3)), "start == end"); + assertEquals("abcd", StringUtils.join(ArrayUtils.subarray(objectArray, -2, 4)), "start undershoot, normal end"); + assertEquals("", StringUtils.join(ArrayUtils.subarray(objectArray, 33, 4)), "start overshoot, any end"); + assertEquals("cdef", StringUtils.join(ArrayUtils.subarray(objectArray, 2, 33)), "normal start, end overshoot"); + assertEquals("abcdef", StringUtils.join(ArrayUtils.subarray(objectArray, -2, 12)), + "start undershoot, end overshoot"); + + // array type tests + final Date[] dateArray = {new java.sql.Date(new Date().getTime()), + new Date(), new Date(), new Date(), new Date()}; + + assertSame(Object.class, ArrayUtils.subarray(objectArray, 2, 4).getClass().getComponentType(), "Object type"); + assertSame(Date.class, ArrayUtils.subarray(dateArray, 1, 4).getClass().getComponentType(), + "java.util.Date type"); + assertNotSame(java.sql.Date.class, ArrayUtils.subarray(dateArray, 1, 4).getClass().getComponentType(), + "java.sql.Date type"); + assertThrows(ClassCastException.class, + () -> java.sql.Date[].class.cast(ArrayUtils.subarray(dateArray, 1, 3)), + "Invalid downcast"); + } + + @Test + public void testSubarrayShort() { + final short[] nullArray = null; + final short[] array = {10, 11, 12, 13, 14, 15}; + final short[] leftSubarray = {10, 11, 12, 13}; + final short[] midSubarray = {11, 12, 13, 14}; + final short[] rightSubarray = {12, 13, 14, 15}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_SHORT_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_SHORT_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(short.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "short type"); + } + + @Test + public void testSubarrChar() { + final char[] nullArray = null; + final char[] array = {'a', 'b', 'c', 'd', 'e', 'f'}; + final char[] leftSubarray = {'a', 'b', 'c', 'd'}; + final char[] midSubarray = {'b', 'c', 'd', 'e'}; + final char[] rightSubarray = {'c', 'd', 'e', 'f'}; + + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, 0, 4)), "0 start, mid end"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, 0, array.length)), "0 start, length end"); + assertTrue(ArrayUtils.isEquals(midSubarray, ArrayUtils.subarray(array, 1, 5)), "mid start, mid end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, array.length)), + "mid start, length end"); + + assertNull(ArrayUtils.subarray(nullArray, 0, 3), "null input"); + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_CHAR_ARRAY, 1, 2), + "empty array"); + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 4, 2), "start > end"); + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end"); + assertTrue(ArrayUtils.isEquals(leftSubarray, ArrayUtils.subarray(array, -2, 4)), + "start undershoot, normal end"); + assertEquals(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 33, 4), "start overshoot, any end"); + assertTrue(ArrayUtils.isEquals(rightSubarray, ArrayUtils.subarray(array, 2, 33)), + "normal start, end overshoot"); + assertTrue(ArrayUtils.isEquals(array, ArrayUtils.subarray(array, -2, 12)), "start undershoot, end overshoot"); + + // empty-return tests + + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(ArrayUtils.EMPTY_CHAR_ARRAY, 1, 2), + "empty array, object test"); + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 4, 1), "start > end, object test"); + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 3, 3), "start == end, object test"); + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.subarray(array, 8733, 4), + "start overshoot, any end, object test"); + + // array type tests + + assertSame(char.class, ArrayUtils.subarray(array, 2, 4).getClass().getComponentType(), "char type"); + } + + @Test + public void testSwapBoolean() { + final boolean[] array = {true, false, false}; + ArrayUtils.swap(array, 0, 2); + assertFalse(array[0]); + assertFalse(array[1]); + assertTrue(array[2]); + } + + @Test + public void testSwapBooleanRange() { + boolean[] array = {false, false, true, true}; + ArrayUtils.swap(array, 0, 2, 2); + assertTrue(array[0]); + assertTrue(array[1]); + assertFalse(array[2]); + assertFalse(array[3]); + + array = new boolean[]{false, true, false}; + ArrayUtils.swap(array, 0, 3); + assertFalse(array[0]); + assertTrue(array[1]); + assertFalse(array[2]); + + array = new boolean[]{true, true, false}; + ArrayUtils.swap(array, 0, 2, 2); + assertFalse(array[0]); + assertTrue(array[1]); + assertTrue(array[2]); + + array = new boolean[]{true, true, false}; + ArrayUtils.swap(array, -1, 2, 2); + assertFalse(array[0]); + assertTrue(array[1]); + assertTrue(array[2]); + + array = new boolean[]{true, true, false}; + ArrayUtils.swap(array, 0, -1, 2); + assertTrue(array[0]); + assertTrue(array[1]); + assertFalse(array[2]); + + array = new boolean[]{true, true, false}; + ArrayUtils.swap(array, -1, -1, 2); + assertTrue(array[0]); + assertTrue(array[1]); + assertFalse(array[2]); + } + + @Test + public void testSwapByte() { + final byte[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapByteRange() { + byte[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new byte[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 3); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new byte[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new byte[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new byte[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new byte[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapChar() { + char[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertArrayEquals(new char[]{3, 2, 1}, array); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 0); + assertArrayEquals(new char[]{1, 2, 3}, array); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, 1, 0); + assertArrayEquals(new char[]{2, 1, 3}, array); + } + + @Test + public void testSwapCharRange() { + char[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 3); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new char[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapDouble() { + final double[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapDoubleRange() { + double[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new double[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 3); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new double[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new double[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new double[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new double[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapEmptyBooleanArray() { + final boolean[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyByteArray() { + final byte[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyCharArray() { + final char[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyDoubleArray() { + final double[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyFloatArray() { + final float[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyIntArray() { + final int[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyLongArray() { + final long[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyObjectArray() { + final String[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapEmptyShortArray() { + final short[] array = {}; + ArrayUtils.swap(array, 0, 2); + assertEquals(0, array.length); + } + + @Test + public void testSwapFloat() { + final float[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapFloatRange() { + float[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new float[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 3); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new float[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new float[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new float[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new float[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapInt() { + final int[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapIntExchangedOffsets() { + int[] array; + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 1, 2); + assertArrayEquals(new int[]{2, 3, 1}, array); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, 1, 0, 2); + assertArrayEquals(new int[]{2, 3, 1}, array); + } + + @Test + public void testSwapIntRange() { + int[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, 3, 0); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new int[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapLong() { + final long[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapLongRange() { + long[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new long[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 3); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new long[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new long[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new long[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new long[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testSwapNullBooleanArray() { + final boolean[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullByteArray() { + final byte[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullCharArray() { + final char[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullDoubleArray() { + final double[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullFloatArray() { + final float[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullIntArray() { + final int[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullLongArray() { + final long[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullObjectArray() { + final String[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapNullShortArray() { + final short[] array = null; + ArrayUtils.swap(array, 0, 2); + assertNull(array); + } + + @Test + public void testSwapObject() { + final String[] array = {"1", "2", "3"}; + ArrayUtils.swap(array, 0, 2); + assertEquals("3", array[0]); + assertEquals("2", array[1]); + assertEquals("1", array[2]); + } + + @Test + public void testSwapObjectRange() { + String[] array = {"1", "2", "3", "4"}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals("3", array[0]); + assertEquals("4", array[1]); + assertEquals("1", array[2]); + assertEquals("2", array[3]); + + array = new String[]{"1", "2", "3", "4"}; + ArrayUtils.swap(array, -1, 2, 3); + assertEquals("3", array[0]); + assertEquals("4", array[1]); + assertEquals("1", array[2]); + assertEquals("2", array[3]); + + array = new String[]{"1", "2", "3", "4", "5"}; + ArrayUtils.swap(array, -3, 2, 3); + assertEquals("3", array[0]); + assertEquals("4", array[1]); + assertEquals("5", array[2]); + assertEquals("2", array[3]); + assertEquals("1", array[4]); + + array = new String[]{"1", "2", "3", "4", "5"}; + ArrayUtils.swap(array, 2, -2, 3); + assertEquals("3", array[0]); + assertEquals("4", array[1]); + assertEquals("5", array[2]); + assertEquals("2", array[3]); + assertEquals("1", array[4]); + + array = new String[0]; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(0, array.length); + + array = null; + ArrayUtils.swap(array, 0, 2, 2); + assertNull(array); + } + + @Test + public void testSwapShort() { + final short[] array = {1, 2, 3}; + ArrayUtils.swap(array, 0, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + } + + @Test + public void testSwapShortRange() { + short[] array = {1, 2, 3, 4}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(4, array[1]); + assertEquals(1, array[2]); + assertEquals(2, array[3]); + + array = new short[]{1, 2, 3}; + ArrayUtils.swap(array, 3, 0); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new short[]{1, 2, 3}; + ArrayUtils.swap(array, 0, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new short[]{1, 2, 3}; + ArrayUtils.swap(array, -1, 2, 2); + assertEquals(3, array[0]); + assertEquals(2, array[1]); + assertEquals(1, array[2]); + + array = new short[]{1, 2, 3}; + ArrayUtils.swap(array, 0, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + + array = new short[]{1, 2, 3}; + ArrayUtils.swap(array, -1, -1, 2); + assertEquals(1, array[0]); + assertEquals(2, array[1]); + assertEquals(3, array[2]); + } + + @Test + public void testToMap() { + Map<?, ?> map = ArrayUtils.toMap(new String[][]{{"foo", "bar"}, {"hello", "world"}}); + + assertEquals("bar", map.get("foo")); + assertEquals("world", map.get("hello")); + + assertNull(ArrayUtils.toMap(null)); + assertThrows(IllegalArgumentException.class, () -> + ArrayUtils.toMap(new String[][]{{"foo", "bar"}, {"short"}})); + assertThrows(IllegalArgumentException.class, () -> + ArrayUtils.toMap(new Object[]{new Object[]{"foo", "bar"}, "illegal type"})); + assertThrows(IllegalArgumentException.class, () -> + ArrayUtils.toMap(new Object[]{new Object[]{"foo", "bar"}, null})); + + map = ArrayUtils.toMap(new Object[]{new Map.Entry<Object, Object>() { + @Override + public boolean equals(final Object o) { + throw new UnsupportedOperationException(); + } + + @Override + public Object getKey() { + return "foo"; + } + + @Override + public Object getValue() { + return "bar"; + } + + @Override + public int hashCode() { + throw new UnsupportedOperationException(); + } + + @Override + public Object setValue(final Object value) { + throw new UnsupportedOperationException(); + } + }}); + assertEquals("bar", map.get("foo")); + + // Return empty map when got input array with length = 0 + assertEquals(Collections.emptyMap(), ArrayUtils.toMap(new Object[0])); + + // Test all null values + map = ArrayUtils.toMap(new Object[][] { {null, null}, {null, null} }); + assertEquals(Collections.singletonMap(null, null), map); + + // Test duplicate keys + map = ArrayUtils.toMap(new Object[][] { {"key", "value2"}, {"key", "value1"} }); + assertEquals(Collections.singletonMap("key", "value1"), map); + } + + @Test + public void testToObject_boolean() { + final boolean[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + assertSame(ArrayUtils.EMPTY_BOOLEAN_OBJECT_ARRAY, ArrayUtils.toObject(new boolean[0])); + assertArrayEquals(new Boolean[]{Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}, ArrayUtils.toObject(new boolean[]{true, false, true})); + } + + @Test + public void testToObject_byte() { + final byte[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame(ArrayUtils.EMPTY_BYTE_OBJECT_ARRAY, + ArrayUtils.toObject(new byte[0])); + + assertArrayEquals(new Byte[]{Byte.valueOf(Byte.MIN_VALUE), + Byte.valueOf(Byte.MAX_VALUE), Byte.valueOf((byte) 9999999)}, ArrayUtils.toObject(new byte[]{Byte.MIN_VALUE, Byte.MAX_VALUE, + (byte) 9999999})); + } + + @Test + public void testToObject_char() { + final char[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame(ArrayUtils.EMPTY_CHARACTER_OBJECT_ARRAY, + ArrayUtils.toObject(new char[0])); + + assertArrayEquals(new Character[]{Character.valueOf(Character.MIN_VALUE), + Character.valueOf(Character.MAX_VALUE), Character.valueOf('0')}, ArrayUtils.toObject(new char[]{Character.MIN_VALUE, Character.MAX_VALUE, + '0'})); + } + + @Test + public void testToObject_double() { + final double[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame( + ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY, + ArrayUtils.toObject(new double[0])); + + assertArrayEquals(new Double[]{ + Double.valueOf(Double.MIN_VALUE), + Double.valueOf(Double.MAX_VALUE), + Double.valueOf(9999999)}, ArrayUtils.toObject( + new double[]{Double.MIN_VALUE, Double.MAX_VALUE, 9999999})); + } + + @Test + public void testToObject_float() { + final float[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame( + ArrayUtils.EMPTY_FLOAT_OBJECT_ARRAY, + ArrayUtils.toObject(new float[0])); + + assertArrayEquals(new Float[]{ + Float.valueOf(Float.MIN_VALUE), + Float.valueOf(Float.MAX_VALUE), + Float.valueOf(9999999)}, ArrayUtils.toObject( + new float[]{Float.MIN_VALUE, Float.MAX_VALUE, 9999999})); + } + + @Test + public void testToObject_int() { + final int[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame( + ArrayUtils.EMPTY_INTEGER_OBJECT_ARRAY, + ArrayUtils.toObject(new int[0])); + + assertArrayEquals(new Integer[]{ + Integer.valueOf(Integer.MIN_VALUE), + Integer.valueOf(Integer.MAX_VALUE), + Integer.valueOf(9999999)}, ArrayUtils.toObject( + new int[]{Integer.MIN_VALUE, Integer.MAX_VALUE, 9999999})); + } + + @Test + public void testToObject_long() { + final long[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame( + ArrayUtils.EMPTY_LONG_OBJECT_ARRAY, + ArrayUtils.toObject(new long[0])); + + assertArrayEquals(new Long[]{ + Long.valueOf(Long.MIN_VALUE), + Long.valueOf(Long.MAX_VALUE), + Long.valueOf(9999999)}, ArrayUtils.toObject( + new long[]{Long.MIN_VALUE, Long.MAX_VALUE, 9999999})); + } + + @Test + public void testToObject_short() { + final short[] b = null; + assertArrayEquals(null, ArrayUtils.toObject(b)); + + assertSame(ArrayUtils.EMPTY_SHORT_OBJECT_ARRAY, + ArrayUtils.toObject(new short[0])); + + assertArrayEquals(new Short[]{Short.valueOf(Short.MIN_VALUE), Short.valueOf(Short.MAX_VALUE), + Short.valueOf((short) 9999999)}, ArrayUtils.toObject(new short[]{Short.MIN_VALUE, Short.MAX_VALUE, + (short) 9999999})); + } + + /** testToPrimitive/Object for boolean */ + @Test + public void testToPrimitive_boolean() { + final Boolean[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0])); + assertArrayEquals(new boolean[]{true, false, true}, ArrayUtils.toPrimitive(new Boolean[]{Boolean.TRUE, Boolean.FALSE, Boolean.TRUE})); + assertArrayEquals(new boolean[]{true, false}, ArrayUtils.toPrimitive(new Boolean[]{Boolean.TRUE, null})); + } + + @Test + public void testToPrimitive_boolean_boolean() { + assertNull(ArrayUtils.toPrimitive(null, false)); + assertSame(ArrayUtils.EMPTY_BOOLEAN_ARRAY, ArrayUtils.toPrimitive(new Boolean[0], false)); + assertArrayEquals(new boolean[]{true, false, true}, ArrayUtils.toPrimitive(new Boolean[]{Boolean.TRUE, Boolean.FALSE, Boolean.TRUE}, false)); + assertArrayEquals(new boolean[]{true, false, false}, ArrayUtils.toPrimitive(new Boolean[]{Boolean.TRUE, null, Boolean.FALSE}, false)); + assertArrayEquals(new boolean[]{true, true, false}, ArrayUtils.toPrimitive(new Boolean[]{Boolean.TRUE, null, Boolean.FALSE}, true)); + } + + /** testToPrimitive/Object for byte */ + @Test + public void testToPrimitive_byte() { + final Byte[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.toPrimitive(new Byte[0])); + + assertArrayEquals(new byte[]{Byte.MIN_VALUE, Byte.MAX_VALUE, (byte) 9999999}, ArrayUtils.toPrimitive(new Byte[]{Byte.valueOf(Byte.MIN_VALUE), + Byte.valueOf(Byte.MAX_VALUE), Byte.valueOf((byte) 9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Byte[]{Byte.valueOf(Byte.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_byte_byte() { + final Byte[] b = null; + assertNull(ArrayUtils.toPrimitive(b, Byte.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_BYTE_ARRAY, + ArrayUtils.toPrimitive(new Byte[0], (byte) 1)); + + assertArrayEquals(new byte[]{Byte.MIN_VALUE, Byte.MAX_VALUE, (byte) 9999999}, ArrayUtils.toPrimitive(new Byte[]{Byte.valueOf(Byte.MIN_VALUE), + Byte.valueOf(Byte.MAX_VALUE), Byte.valueOf((byte) 9999999)}, + Byte.MIN_VALUE)); + + assertArrayEquals(new byte[]{Byte.MIN_VALUE, Byte.MAX_VALUE, (byte) 9999999}, ArrayUtils.toPrimitive(new Byte[]{Byte.valueOf(Byte.MIN_VALUE), null, + Byte.valueOf((byte) 9999999)}, Byte.MAX_VALUE)); + } + + /** testToPrimitive/Object for byte */ + @Test + public void testToPrimitive_char() { + final Character[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, ArrayUtils.toPrimitive(new Character[0])); + + assertArrayEquals(new char[]{Character.MIN_VALUE, Character.MAX_VALUE, '0'}, ArrayUtils.toPrimitive(new Character[]{Character.valueOf(Character.MIN_VALUE), + Character.valueOf(Character.MAX_VALUE), Character.valueOf('0')})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Character[]{Character.valueOf(Character.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_char_char() { + final Character[] b = null; + assertNull(ArrayUtils.toPrimitive(b, Character.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_CHAR_ARRAY, + ArrayUtils.toPrimitive(new Character[0], (char) 0)); + + assertArrayEquals(new char[]{Character.MIN_VALUE, Character.MAX_VALUE, '0'}, ArrayUtils.toPrimitive(new Character[]{Character.valueOf(Character.MIN_VALUE), + Character.valueOf(Character.MAX_VALUE), Character.valueOf('0')}, + Character.MIN_VALUE)); + + assertArrayEquals(new char[]{Character.MIN_VALUE, Character.MAX_VALUE, '0'}, ArrayUtils.toPrimitive(new Character[]{Character.valueOf(Character.MIN_VALUE), null, + Character.valueOf('0')}, Character.MAX_VALUE)); + } + + /** testToPrimitive/Object for double */ + @Test + public void testToPrimitive_double() { + final Double[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, + ArrayUtils.toPrimitive(new Double[0])); + + assertArrayEquals(new double[]{Double.MIN_VALUE, Double.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Double[]{Double.valueOf(Double.MIN_VALUE), + Double.valueOf(Double.MAX_VALUE), Double.valueOf(9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Float[]{Float.valueOf(Float.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_double_double() { + final Double[] l = null; + assertNull(ArrayUtils.toPrimitive(l, Double.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_DOUBLE_ARRAY, + ArrayUtils.toPrimitive(new Double[0], 1)); + + assertArrayEquals(new double[]{Double.MIN_VALUE, Double.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Double[]{Double.valueOf(Double.MIN_VALUE), + Double.valueOf(Double.MAX_VALUE), Double.valueOf(9999999)}, 1)); + + assertArrayEquals(new double[]{Double.MIN_VALUE, Double.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Double[]{Double.valueOf(Double.MIN_VALUE), + null, Double.valueOf(9999999)}, Double.MAX_VALUE)); + } + + /** testToPrimitive/Object for float */ + @Test + public void testToPrimitive_float() { + final Float[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, + ArrayUtils.toPrimitive(new Float[0])); + + assertArrayEquals(new float[]{Float.MIN_VALUE, Float.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Float[]{Float.valueOf(Float.MIN_VALUE), + Float.valueOf(Float.MAX_VALUE), Float.valueOf(9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Float[]{Float.valueOf(Float.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_float_float() { + final Float[] l = null; + assertNull(ArrayUtils.toPrimitive(l, Float.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_FLOAT_ARRAY, + ArrayUtils.toPrimitive(new Float[0], 1)); + + assertArrayEquals(new float[]{Float.MIN_VALUE, Float.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Float[]{Float.valueOf(Float.MIN_VALUE), + Float.valueOf(Float.MAX_VALUE), Float.valueOf(9999999)}, 1)); + + assertArrayEquals(new float[]{Float.MIN_VALUE, Float.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Float[]{Float.valueOf(Float.MIN_VALUE), + null, Float.valueOf(9999999)}, Float.MAX_VALUE)); + } + + /** testToPrimitive/Object for int */ + @Test + public void testToPrimitive_int() { + final Integer[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + assertSame(ArrayUtils.EMPTY_INT_ARRAY, ArrayUtils.toPrimitive(new Integer[0])); + assertArrayEquals(new int[]{Integer.MIN_VALUE, Integer.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Integer[]{Integer.valueOf(Integer.MIN_VALUE), + Integer.valueOf(Integer.MAX_VALUE), Integer.valueOf(9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Integer[]{Integer.valueOf(Integer.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_int_int() { + final Long[] l = null; + assertNull(ArrayUtils.toPrimitive(l, Integer.MIN_VALUE)); + assertSame(ArrayUtils.EMPTY_INT_ARRAY, + ArrayUtils.toPrimitive(new Integer[0], 1)); + assertArrayEquals(new int[]{Integer.MIN_VALUE, Integer.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Integer[]{Integer.valueOf(Integer.MIN_VALUE), + Integer.valueOf(Integer.MAX_VALUE), Integer.valueOf(9999999)}, 1)); + assertArrayEquals(new int[]{Integer.MIN_VALUE, Integer.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Integer[]{Integer.valueOf(Integer.MIN_VALUE), + null, Integer.valueOf(9999999)}, Integer.MAX_VALUE)); + } + + @Test + public void testToPrimitive_intNull() { + final Integer[] iArray = null; + assertNull(ArrayUtils.toPrimitive(iArray, Integer.MIN_VALUE)); + } + + /** testToPrimitive/Object for long */ + @Test + public void testToPrimitive_long() { + final Long[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, + ArrayUtils.toPrimitive(new Long[0])); + + assertArrayEquals(new long[]{Long.MIN_VALUE, Long.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Long[]{Long.valueOf(Long.MIN_VALUE), + Long.valueOf(Long.MAX_VALUE), Long.valueOf(9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Long[]{Long.valueOf(Long.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_long_long() { + final Long[] l = null; + assertNull(ArrayUtils.toPrimitive(l, Long.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_LONG_ARRAY, + ArrayUtils.toPrimitive(new Long[0], 1)); + + assertArrayEquals(new long[]{Long.MIN_VALUE, Long.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Long[]{Long.valueOf(Long.MIN_VALUE), + Long.valueOf(Long.MAX_VALUE), Long.valueOf(9999999)}, 1)); + + assertArrayEquals(new long[]{Long.MIN_VALUE, Long.MAX_VALUE, 9999999}, ArrayUtils.toPrimitive(new Long[]{Long.valueOf(Long.MIN_VALUE), + null, Long.valueOf(9999999)}, Long.MAX_VALUE)); + } + + /** testToPrimitive/Object for short */ + @Test + public void testToPrimitive_short() { + final Short[] b = null; + assertNull(ArrayUtils.toPrimitive(b)); + + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.toPrimitive(new Short[0])); + + assertArrayEquals(new short[]{Short.MIN_VALUE, Short.MAX_VALUE, (short) 9999999}, ArrayUtils.toPrimitive(new Short[]{Short.valueOf(Short.MIN_VALUE), + Short.valueOf(Short.MAX_VALUE), Short.valueOf((short) 9999999)})); + + assertThrows(NullPointerException.class, + () -> ArrayUtils.toPrimitive(new Short[]{Short.valueOf(Short.MIN_VALUE), null})); + } + + @Test + public void testToPrimitive_short_short() { + final Short[] s = null; + assertNull(ArrayUtils.toPrimitive(s, Short.MIN_VALUE)); + + assertSame(ArrayUtils.EMPTY_SHORT_ARRAY, ArrayUtils.toPrimitive(new Short[0], + Short.MIN_VALUE)); + + assertArrayEquals(new short[]{Short.MIN_VALUE, Short.MAX_VALUE, (short) 9999999}, ArrayUtils.toPrimitive(new Short[]{Short.valueOf(Short.MIN_VALUE), + Short.valueOf(Short.MAX_VALUE), Short.valueOf((short) 9999999)}, Short.MIN_VALUE)); + + assertArrayEquals(new short[]{Short.MIN_VALUE, Short.MAX_VALUE, (short) 9999999}, ArrayUtils.toPrimitive(new Short[]{Short.valueOf(Short.MIN_VALUE), null, + Short.valueOf((short) 9999999)}, Short.MAX_VALUE)); + } + + @Test + public void testToString() { + assertEquals("{}", ArrayUtils.toString(null)); + assertEquals("{}", ArrayUtils.toString(new Object[0])); + assertEquals("{}", ArrayUtils.toString(new String[0])); + assertEquals("{<null>}", ArrayUtils.toString(new String[]{null})); + assertEquals("{pink,blue}", ArrayUtils.toString(new String[]{"pink", "blue"})); + + assertEquals("<empty>", ArrayUtils.toString(null, "<empty>")); + assertEquals("{}", ArrayUtils.toString(new Object[0], "<empty>")); + assertEquals("{}", ArrayUtils.toString(new String[0], "<empty>")); + assertEquals("{<null>}", ArrayUtils.toString(new String[]{null}, "<empty>")); + assertEquals("{pink,blue}", ArrayUtils.toString(new String[]{"pink", "blue"}, "<empty>")); + } + + @Test + public void testToStringArray_array() { + assertNull(ArrayUtils.toStringArray(null)); + + assertArrayEquals(new String[0], ArrayUtils.toStringArray(new Object[0])); + + final Object[] array = {1, 2, 3, "array", "test"}; + assertArrayEquals(new String[]{"1", "2", "3", "array", "test"}, ArrayUtils.toStringArray(array)); + + assertThrows(NullPointerException.class, () -> ArrayUtils.toStringArray(new Object[]{null})); + } + + @Test + public void testToStringArray_array_string() { + assertNull(ArrayUtils.toStringArray(null, "")); + + assertArrayEquals(new String[0], ArrayUtils.toStringArray(new Object[0], "")); + + final Object[] array = {1, null, "test"}; + assertArrayEquals(new String[]{"1", "valueForNullElements", "test"}, + ArrayUtils.toStringArray(array, "valueForNullElements")); + } + + @Test + public void textIndexesOfInt() { + int[] array = null; + final BitSet emptySet = new BitSet(); + final BitSet testSet = new BitSet(); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 0)); + array = new int[]{0, 1, 2, 3, 0}; + testSet.set(0); + testSet.set(4); + assertEquals(testSet, ArrayUtils.indexesOf(array, 0)); + testSet.clear(); + testSet.set(1); + assertEquals(testSet, ArrayUtils.indexesOf(array, 1)); + testSet.clear(); + testSet.set(2); + assertEquals(testSet, ArrayUtils.indexesOf(array, 2)); + testSet.clear(); + testSet.set(3); + assertEquals(testSet, ArrayUtils.indexesOf(array, 3)); + assertEquals(emptySet, ArrayUtils.indexesOf(array, 99)); + } +} |