/* * Copyright 2013 Nokia Solutions and Networks Oyj * * Licensed 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.robotframework.javalib.util; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import org.apache.commons.collections.CollectionUtils; public class ArrayUtil { public static boolean arrayContains(String needle, String[] haystack) { for (int i = 0; i < haystack.length; i++) { if (haystack[i].equals(needle)) { return true; } } return false; } public static void assertArraysContainSame(String[] expected, String[] actual) { if (!new HashSet(Arrays.asList(expected)).equals(new HashSet(Arrays.asList(actual)))) throw new AssertionError(); } public static <T> void assertArraysEquals(T[] expected, T[] actual) { if (!Arrays.equals(expected, actual)) throw new AssertionError("Expected " + Arrays.asList(expected) + " but was " + Arrays.asList(actual)); } public static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) { int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength)); return copy; } public static <T> T[] copyOfRange(T[] original, int from, int to) { return copyOfRange(original, from, to, (Class<T[]>) original.getClass()); } public static <T> T[] add(T[] original, T... newElements) { List<T> results = new ArrayList<T>(original.length + newElements.length); CollectionUtils.addAll(results, original); CollectionUtils.addAll(results, newElements); return results.toArray(original); } }