ArrayUtils { public static Object[] concatArrays(Object[]... arrays) { int length = 0; for (Object[] array: arrays) { length += array.length; } Object[] result = new Object[length]; int offset = 0; for (Object[] array: arrays) { System.arraycopy(array, 0, result, offset, array.length); offset += array.length; } return result; } private  ArrayUtils(); static Object[] concatArrays(Object[]... arrays);  }
@Test public void testWithZeroArray() { Object[] result = ArrayUtils.concatArrays(); assertArrayEquals(testArray(), result); }
@Test public void testWithSingleArrayEmpty() { Object[] result = ArrayUtils.concatArrays(testArray()); assertArrayEquals(testArray(), result); }
@Test public void testWithSingleArraySingleElement() { Object[] result = ArrayUtils.concatArrays(testArray(1)); assertArrayEquals(testArray(1), result); }
@Test public void testWithSingleArray() { Object[] result = ArrayUtils.concatArrays(testArray(1, 2, 3, 4)); assertArrayEquals(testArray(1, 2, 3, 4), result); }
@Test public void testWithTwoArrays() { Object[] result = ArrayUtils.concatArrays(testArray(1, 2, 3), testArray(4, 5, 6, 7)); assertArrayEquals(testArray(1, 2, 3, 4, 5, 6, 7), result); }
@Test public void testWithTwoArraysEmpty() { Object[] result = ArrayUtils.concatArrays(testArray(), testArray()); assertArrayEquals(testArray(), result); }
@Test public void testWithThreeArrays() { Object[] result = ArrayUtils.concatArrays(testArray(1, 2), testArray(3, 4, 5), testArray(6)); assertArrayEquals(testArray(1, 2, 3, 4, 5, 6), result); }