/** * Merges two arrays into a new array. Elements from array1 and array2 will * be copied into a new array, that has array1.length + array2.length * elements. * * @param pArray1 First array * @param pArray2 Second array, must be compatible with (assignable from) * the first array * @return A new array, containing the values of array1 and array2. The * array (wrapped as an object), will have the length of array1 + * array2, and can be safely cast to the type of the array1 * parameter. * @see #mergeArrays(Object,int,int,Object,int,int) * @see java.lang.System#arraycopy(Object,int,Object,int,int) */ public static Object mergeArrays(Object pArray1, Object pArray2) { return mergeArrays(pArray1, 0, Array.getLength(pArray1), pArray2, 0, Array.getLength(pArray2)); }
@Test(expected = ArrayStoreException.class) public void testMergeArraysObjectIllegalType() { String[] strings = {"foo", "bar", "baz"}; Integer[] integers = {1, 2, 3}; // Integer not assignable to String CollectionUtil.mergeArrays(strings, integers); }
@Test(expected = ArrayStoreException.class) public void testMergeArraysNativeIllegalType() { char[] chars = {'a', 'b', 'c'}; int[] integers = {1, 2, 3}; // Integer not assignable to String CollectionUtil.mergeArrays(chars, integers); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectBadOffset() { CollectionUtil.mergeArrays(stringObjects, 4, 2, integerObjects, 2, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectNegativeSecondOffset() { CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, -1, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectNegativeSecondLength() { CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 2, -1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectBadSecondOffset() { CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 4, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectBadLength() { CollectionUtil.mergeArrays(stringObjects, 1, 4, integerObjects, 2, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectNegativeOffset() { CollectionUtil.mergeArrays(stringObjects, -1, 2, integerObjects, 2, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectNegativeLength() { CollectionUtil.mergeArrays(stringObjects, 1, -1, integerObjects, 2, 1); }
@Test(expected = IndexOutOfBoundsException.class) public void testMergeArraysObjectBadSecondLength() { CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 2, 2); }
@Test public void testMergeArraysObjectAssignable() { Integer[] integers = {1, 2, 3}; // Integer assignable to Object Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, integers); assertArrayEquals(new Object[] {"foo", "bar", "baz", 1, 2, 3}, merged); }
@Test public void testMergeArraysNative() { char[] chars = {'a', 'b', 'c'}; char[] more = {'x', 'y', 'z'}; char[] merged = (char[]) CollectionUtil.mergeArrays(chars, more); assertArrayEquals(new char[] {'a', 'b', 'c', 'x', 'y', 'z'}, merged); }
@Test public void testMergeArraysObjectOffset() { Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 2, 1); assertArrayEquals(new Object[] {"bar", "baz", 3}, merged); }
@Test public void testMergeArraysObject() { Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, integerObjects); assertArrayEquals(new Object[] {"foo", "bar", "baz", 1, 2, 3}, merged); }
@Test public void testMergeArraysObject() { Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, integerObjects); assertArrayEquals(new Object[] {"foo", "bar", "baz", 1, 2, 3}, merged); }
@Test public void testMergeArraysObjectAssignable() { Integer[] integers = {1, 2, 3}; // Integer assignable to Object Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, integers); assertArrayEquals(new Object[] {"foo", "bar", "baz", 1, 2, 3}, merged); }
@Test public void testMergeArraysObjectOffset() { Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 2, 1); assertArrayEquals(new Object[] {"bar", "baz", 3}, merged); }
@Test public void testMergeArraysObjectOffset() { Object[] merged = (Object[]) CollectionUtil.mergeArrays(stringObjects, 1, 2, integerObjects, 2, 1); assertArrayEquals(new Object[] {"bar", "baz", 3}, merged); }
@Test public void testMergeArraysNative() { char[] chars = {'a', 'b', 'c'}; char[] more = {'x', 'y', 'z'}; char[] merged = (char[]) CollectionUtil.mergeArrays(chars, more); assertArrayEquals(new char[] {'a', 'b', 'c', 'x', 'y', 'z'}, merged); }