/* * Copyright (c) 2002-2012 Alibaba Group Holding Limited. * All rights reserved. * * 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 com.alibaba.citrus.util; import static com.alibaba.citrus.test.TestUtil.*; import static com.alibaba.citrus.util.CollectionUtil.*; import static org.junit.Assert.*; import java.lang.reflect.Array; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import org.junit.Test; /** * 测试<code>ArrayUtil</code>类。 * * @author Michael Zhou */ public class ArrayUtilTests { // ========================================================================== // 取得数组长度。 // ========================================================================== @Test public void arrayLength() { assertEquals(0, ArrayUtil.arrayLength(null)); assertEquals(0, ArrayUtil.arrayLength(new String[0])); assertEquals(10, ArrayUtil.arrayLength(new String[10])); assertEquals(0, ArrayUtil.arrayLength(new int[0])); assertEquals(10, ArrayUtil.arrayLength(new int[10])); assertEquals(0, ArrayUtil.arrayLength(new long[0])); assertEquals(10, ArrayUtil.arrayLength(new long[10])); assertEquals(0, ArrayUtil.arrayLength(new short[0])); assertEquals(10, ArrayUtil.arrayLength(new short[10])); assertEquals(0, ArrayUtil.arrayLength(new byte[0])); assertEquals(10, ArrayUtil.arrayLength(new byte[10])); assertEquals(0, ArrayUtil.arrayLength(new double[0])); assertEquals(10, ArrayUtil.arrayLength(new double[10])); assertEquals(0, ArrayUtil.arrayLength(new float[0])); assertEquals(10, ArrayUtil.arrayLength(new float[10])); assertEquals(0, ArrayUtil.arrayLength(new char[0])); assertEquals(10, ArrayUtil.arrayLength(new char[10])); assertEquals(0, ArrayUtil.arrayLength(new boolean[0])); assertEquals(10, ArrayUtil.arrayLength(new boolean[10])); assertEquals(0, ArrayUtil.arrayLength(new Object())); // not an array } // ========================================================================== // 判空函数。 // // 判断一个数组是否为null或包含0个元素。 // ========================================================================== @Test public void isEmptyArray() { assertTrue(ArrayUtil.isEmptyArray(null)); assertTrue(ArrayUtil.isEmptyArray(new String[0])); assertFalse(ArrayUtil.isEmptyArray(new String[10])); assertTrue(ArrayUtil.isEmptyArray(new int[0])); assertFalse(ArrayUtil.isEmptyArray(new int[10])); assertFalse(ArrayUtil.isEmptyArray(new Object())); // not an array } // ========================================================================== // 默认值函数。 // // 当数组为空时,取得默认数组值。 // 注:判断数组为null时,可用更通用的ObjectUtil.defaultIfNull。 // ========================================================================== @Test public void defaultIfEmptyArray() { // Object array String[] empty = new String[0]; String[] nonempty = new String[10]; assertSame(empty, ArrayUtil.defaultIfEmptyArray(null, empty)); assertSame(empty, ArrayUtil.defaultIfEmptyArray(new String[0], empty)); assertSame(nonempty, ArrayUtil.defaultIfEmptyArray(nonempty, empty)); // primitive array long[] emptylong = new long[0]; long[] nonemptylong = new long[10]; assertSame(emptylong, ArrayUtil.defaultIfEmptyArray(null, emptylong)); assertSame(emptylong, ArrayUtil.defaultIfEmptyArray(new long[0], emptylong)); assertSame(nonemptylong, ArrayUtil.defaultIfEmptyArray(nonemptylong, emptylong)); // non-array Object anyObject = new Object(); assertSame(anyObject, ArrayUtil.defaultIfEmptyArray(anyObject, empty)); } // ========================================================================== // 将数组转换成集合类。 // ========================================================================== @Test public void arrayAsIterable() { // null array assertIterable(ArrayUtil.arrayAsIterable(String.class, null)); // object array assertIterable(ArrayUtil.arrayAsIterable(String.class, new String[] { "a", "b", "c" }), "a", "b", "c"); // primitive array assertIterable(ArrayUtil.arrayAsIterable(Integer.class, new int[] { 1, 2, 3 }), 1, 2, 3); assertIterable(ArrayUtil.arrayAsIterable(Long.class, new long[] { 1, 2, 3 }), 1L, 2L, 3L); assertIterable(ArrayUtil.arrayAsIterable(Short.class, new short[] { 1, 2, 3 }), (short) 1, (short) 2, (short) 3); assertIterable(ArrayUtil.arrayAsIterable(Byte.class, new byte[] { 1, 2, 3 }), (byte) 1, (byte) 2, (byte) 3); assertIterable(ArrayUtil.arrayAsIterable(Double.class, new double[] { 1, 2, 3 }), 1D, 2D, 3D); assertIterable(ArrayUtil.arrayAsIterable(Float.class, new float[] { 1, 2, 3 }), 1F, 2F, 3F); assertIterable(ArrayUtil.arrayAsIterable(Boolean.class, new boolean[] { true, false, true }), true, false, true); assertIterable(ArrayUtil.arrayAsIterable(Character.class, "abc".toCharArray()), 'a', 'b', 'c'); // not an array try { ArrayUtil.arrayAsIterable(String.class, "a"); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("a is not an array")); } // no componentType try { ArrayUtil.arrayAsIterable(null, new String[] { "a", "b", "c" }); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("componentType")); } // componentType not match try { ArrayUtil.arrayAsIterable(String.class, new int[] { 1, 2, 3 }).iterator().next(); fail(); } catch (ClassCastException e) { } } private <T> void assertIterable(Iterable<T> iterable, T... expected) { assertNotNull(iterable.iterator()); // 检查iterable内容 assertArrayEquals(expected, createArrayList(iterable).toArray()); // 异常情况 Iterator<T> i = iterable.iterator(); try { i.remove(); fail(); } catch (UnsupportedOperationException e) { assertThat(e, exception("remove")); } for (@SuppressWarnings("unused") T e : expected) { i.next(); } assertFalse(i.hasNext()); try { i.next(); fail(); } catch (ArrayIndexOutOfBoundsException e) { assertThat(e, exception(expected.length + "")); } } @Test public void arrayToMap() { // keyType is null try { ArrayUtil.arrayToMap(null, null, null, null); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("keyType")); } // valueType is null try { ArrayUtil.arrayToMap(null, String.class, null, null); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("valueType")); } Map<String, Integer> map = createLinkedHashMap(); // keyValueArray is null assertNull(ArrayUtil.arrayToMap(null, String.class, Integer.class)); // no map assertNull(ArrayUtil.arrayToMap(null, String.class, Integer.class, null)); // no map assertSame(map, ArrayUtil.arrayToMap(null, String.class, Integer.class, map)); // with map // keyValueArray is not null Object[][] colors = { { "RED", 0xFF0000 }, { "GREEN", 0x00FF00 }, { "BLUE", 0x0000FF } }; Map<String, Integer> result = ArrayUtil.arrayToMap(colors, String.class, Integer.class); // no map assertTrue(result instanceof LinkedHashMap<?, ?>); assertNotSame(map, result); assertEquals("{RED=16711680, GREEN=65280, BLUE=255}", result.toString()); result = ArrayUtil.arrayToMap(colors, String.class, Integer.class, null); // no map assertTrue(result instanceof LinkedHashMap<?, ?>); assertNotSame(map, result); assertEquals("{RED=16711680, GREEN=65280, BLUE=255}", result.toString()); result = ArrayUtil.arrayToMap(colors, String.class, Integer.class, map); // with map assertSame(map, result); assertEquals("{RED=16711680, GREEN=65280, BLUE=255}", result.toString()); // keyType/valueType doesn't match try { ArrayUtil.arrayToMap(colors, Long.class, Integer.class, null); fail(); } catch (ClassCastException e) { } try { ArrayUtil.arrayToMap(colors, String.class, Long.class, null); fail(); } catch (ClassCastException e) { } // keyValue is null try { ArrayUtil.arrayToMap(new Object[][] { { "RED", 0xFF0000, null }, null, { "BLUE", 0x0000FF } }, String.class, Integer.class, null); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("Array element 1 is not an array of 2 elements")); } // keyValue is not object[2] try { ArrayUtil.arrayToMap(new Object[][] { { "RED", 0xFF0000, null }, { "GREEN", 0x00FF00 }, { "BLUE" } }, String.class, Integer.class, null); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("Array element 2 is not an array of 2 elements")); } } // ========================================================================== // 比较数组的长度和类型。 // ========================================================================== @Test public void isArraySameLength() { assertTrue(ArrayUtil.isArraySameLength(null, (String[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (long[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (int[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (short[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (byte[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (double[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (float[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (boolean[]) null)); assertTrue(ArrayUtil.isArraySameLength(null, (char[]) null)); assertFalse(ArrayUtil.isArraySameLength(null, new String[3])); assertFalse(ArrayUtil.isArraySameLength(null, new long[3])); assertFalse(ArrayUtil.isArraySameLength(null, new int[3])); assertFalse(ArrayUtil.isArraySameLength(null, new short[3])); assertFalse(ArrayUtil.isArraySameLength(null, new byte[3])); assertFalse(ArrayUtil.isArraySameLength(null, new double[3])); assertFalse(ArrayUtil.isArraySameLength(null, new float[3])); assertFalse(ArrayUtil.isArraySameLength(null, new boolean[3])); assertFalse(ArrayUtil.isArraySameLength(null, new char[3])); assertTrue(ArrayUtil.isArraySameLength(null, new String[0])); assertTrue(ArrayUtil.isArraySameLength(null, new long[0])); assertTrue(ArrayUtil.isArraySameLength(null, new int[0])); assertTrue(ArrayUtil.isArraySameLength(null, new short[0])); assertTrue(ArrayUtil.isArraySameLength(null, new byte[0])); assertTrue(ArrayUtil.isArraySameLength(null, new double[0])); assertTrue(ArrayUtil.isArraySameLength(null, new float[0])); assertTrue(ArrayUtil.isArraySameLength(null, new boolean[0])); assertTrue(ArrayUtil.isArraySameLength(null, new char[0])); assertFalse(ArrayUtil.isArraySameLength(new String[3], null)); assertFalse(ArrayUtil.isArraySameLength(new long[3], null)); assertFalse(ArrayUtil.isArraySameLength(new int[3], null)); assertFalse(ArrayUtil.isArraySameLength(new short[3], null)); assertFalse(ArrayUtil.isArraySameLength(new byte[3], null)); assertFalse(ArrayUtil.isArraySameLength(new double[3], null)); assertFalse(ArrayUtil.isArraySameLength(new float[3], null)); assertFalse(ArrayUtil.isArraySameLength(new boolean[3], null)); assertFalse(ArrayUtil.isArraySameLength(new char[3], null)); assertTrue(ArrayUtil.isArraySameLength(new String[3], new String[3])); assertTrue(ArrayUtil.isArraySameLength(new long[3], new long[3])); assertTrue(ArrayUtil.isArraySameLength(new int[3], new int[3])); assertTrue(ArrayUtil.isArraySameLength(new short[3], new short[3])); assertTrue(ArrayUtil.isArraySameLength(new byte[3], new byte[3])); assertTrue(ArrayUtil.isArraySameLength(new double[3], new double[3])); assertTrue(ArrayUtil.isArraySameLength(new float[3], new float[3])); assertTrue(ArrayUtil.isArraySameLength(new boolean[3], new boolean[3])); assertTrue(ArrayUtil.isArraySameLength(new char[3], new char[3])); assertFalse(ArrayUtil.isArraySameLength(new String[3], new String[4])); assertFalse(ArrayUtil.isArraySameLength(new long[3], new long[4])); assertFalse(ArrayUtil.isArraySameLength(new int[3], new int[4])); assertFalse(ArrayUtil.isArraySameLength(new short[3], new short[4])); assertFalse(ArrayUtil.isArraySameLength(new byte[3], new byte[4])); assertFalse(ArrayUtil.isArraySameLength(new double[3], new double[4])); assertFalse(ArrayUtil.isArraySameLength(new float[3], new float[4])); assertFalse(ArrayUtil.isArraySameLength(new boolean[3], new boolean[4])); assertFalse(ArrayUtil.isArraySameLength(new char[3], new char[4])); } // ========================================================================== // 反转数组的元素顺序。 // ========================================================================== @Test public void arrayReverse() { ArrayUtil.arrayReverse((Object[]) null); ArrayUtil.arrayReverse((long[]) null); ArrayUtil.arrayReverse((short[]) null); ArrayUtil.arrayReverse((int[]) null); ArrayUtil.arrayReverse((double[]) null); ArrayUtil.arrayReverse((float[]) null); ArrayUtil.arrayReverse((boolean[]) null); ArrayUtil.arrayReverse((char[]) null); ArrayUtil.arrayReverse((byte[]) null); // object Object[] objectArray; objectArray = new Object[0]; ArrayUtil.arrayReverse(objectArray); assertArrayReverse(new Object[0], objectArray); objectArray = new Object[] { "aaa", "bbb", "ccc" }; ArrayUtil.arrayReverse(objectArray); assertArrayReverse(new Object[] { "ccc", "bbb", "aaa" }, objectArray); objectArray = new Object[] { "aaa", "bbb", "ccc", "ddd" }; ArrayUtil.arrayReverse(objectArray); assertArrayReverse(new Object[] { "ddd", "ccc", "bbb", "aaa" }, objectArray); // long long[] longArray; longArray = new long[0]; ArrayUtil.arrayReverse(longArray); assertArrayReverse(new long[0], longArray); longArray = new long[] { 111, 222, 333 }; ArrayUtil.arrayReverse(longArray); assertArrayReverse(new long[] { 333, 222, 111 }, longArray); longArray = new long[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(longArray); assertArrayReverse(new long[] { 444, 333, 222, 111 }, longArray); // int int[] intArray; intArray = new int[0]; ArrayUtil.arrayReverse(intArray); assertArrayReverse(new int[0], intArray); intArray = new int[] { 111, 222, 333 }; ArrayUtil.arrayReverse(intArray); assertArrayReverse(new int[] { 333, 222, 111 }, intArray); intArray = new int[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(intArray); assertArrayReverse(new int[] { 444, 333, 222, 111 }, intArray); // short short[] shortArray; shortArray = new short[0]; ArrayUtil.arrayReverse(shortArray); assertArrayReverse(new short[0], shortArray); shortArray = new short[] { 111, 222, 333 }; ArrayUtil.arrayReverse(shortArray); assertArrayReverse(new short[] { 333, 222, 111 }, shortArray); shortArray = new short[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(shortArray); assertArrayReverse(new short[] { 444, 333, 222, 111 }, shortArray); // byte byte[] byteArray; byteArray = new byte[0]; ArrayUtil.arrayReverse(byteArray); assertArrayReverse(new byte[0], byteArray); byteArray = new byte[] { 111, (byte) 222, (byte) 333 }; ArrayUtil.arrayReverse(byteArray); assertArrayReverse(new byte[] { (byte) 333, (byte) 222, 111 }, byteArray); byteArray = new byte[] { 111, (byte) 222, (byte) 333, (byte) 444 }; ArrayUtil.arrayReverse(byteArray); assertArrayReverse(new byte[] { (byte) 444, (byte) 333, (byte) 222, 111 }, byteArray); // double double[] doubleArray; doubleArray = new double[0]; ArrayUtil.arrayReverse(doubleArray); assertArrayReverse(new double[0], doubleArray); doubleArray = new double[] { 111, 222, 333 }; ArrayUtil.arrayReverse(doubleArray); assertArrayReverse(new double[] { 333, 222, 111 }, doubleArray); doubleArray = new double[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(doubleArray); assertArrayReverse(new double[] { 444, 333, 222, 111 }, doubleArray); // float float[] floatArray; floatArray = new float[0]; ArrayUtil.arrayReverse(floatArray); assertArrayReverse(new float[0], floatArray); floatArray = new float[] { 111, 222, 333 }; ArrayUtil.arrayReverse(floatArray); assertArrayReverse(new float[] { 333, 222, 111 }, floatArray); floatArray = new float[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(floatArray); assertArrayReverse(new float[] { 444, 333, 222, 111 }, floatArray); // boolean boolean[] booleanArray; booleanArray = new boolean[0]; ArrayUtil.arrayReverse(booleanArray); assertArrayReverse(new boolean[0], booleanArray); booleanArray = new boolean[] { true, false, false }; ArrayUtil.arrayReverse(booleanArray); assertArrayReverse(new boolean[] { false, false, true }, booleanArray); booleanArray = new boolean[] { true, false, false, false }; ArrayUtil.arrayReverse(booleanArray); assertArrayReverse(new boolean[] { false, false, false, true }, booleanArray); // char char[] charArray; charArray = new char[0]; ArrayUtil.arrayReverse(charArray); assertArrayReverse(new char[0], charArray); charArray = new char[] { 111, 222, 333 }; ArrayUtil.arrayReverse(charArray); assertArrayReverse(new char[] { 333, 222, 111 }, charArray); charArray = new char[] { 111, 222, 333, 444 }; ArrayUtil.arrayReverse(charArray); assertArrayReverse(new char[] { 444, 333, 222, 111 }, charArray); } private void assertArrayReverse(Object expected, Object reversed) { assertEquals(Array.getLength(expected), Array.getLength(reversed)); for (int i = 0; i < Array.getLength(expected); i++) { assertEquals(Array.get(expected, i), Array.get(reversed, i)); } } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:Object[] // ========================================================================== @Test public void indexOfObject() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf(null, "a")); assertEquals(1, ArrayUtil.arrayIndexOf(new String[] { "a", null, "c" }, (String) null)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[] { "a", "b", "c" }, (String) null)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[0], "a")); assertEquals(0, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "a")); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b")); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf(null, "a", 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new String[] { "a", null, "c" }, (String) null, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[0], "a", 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", -1)); } @Test public void indexOfObjectArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf(null, new String[] { "a" })); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[] { "a", "b", "c" }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new String[0], new String[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a" })); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" })); assertEquals(1, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a", "b" })); assertEquals(0, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf(null, new String[] { "a" }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[] { "a", "b", "c" }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new String[0], new String[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a" }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a", "b" }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new String[] { "a", "b", "c" }, new String[0], 9)); } @Test public void lastIndexOfObject() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf(null, "a")); assertEquals(1, ArrayUtil.arrayLastIndexOf(new String[] { "a", null, "c" }, (String) null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "b", "c" }, (String) null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[0], "a")); assertEquals(7, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "a")); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b")); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf(null, "a", 0)); assertEquals(1, ArrayUtil.arrayLastIndexOf(new String[] { "a", null, "c" }, (String) null, 2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[0], "a", 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "b", -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, "a", 0)); } @Test public void lastIndexOfObjectArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf(null, new String[] { "a" })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "b", "c" }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[0], new String[] { "a" })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a" })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b", "a" })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf(null, new String[] { "a" }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "b", "c" }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a" }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 8)); assertEquals( 4, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a", "b" }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "a" }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { "b" }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new String[] { "a", "a", "b", "a", "a", "b", "a", "a" }, new String[] { }, 0)); } @Test public void containsObject() { assertFalse(ArrayUtil.arrayContains(null, "a")); assertTrue(ArrayUtil.arrayContains(new String[] { "a", null, "c" }, (String) null)); assertFalse(ArrayUtil.arrayContains(new String[0], "a")); assertTrue(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, "a")); assertFalse(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, "z")); } @Test public void containsObjectArray() { assertFalse(ArrayUtil.arrayContains(null, new String[] { "a" })); assertFalse(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, null)); assertTrue(ArrayUtil.arrayContains(new String[0], new String[0])); assertTrue(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, new String[0])); assertTrue(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, new String[] { "a" })); assertFalse(ArrayUtil.arrayContains(new String[] { "a", "b", "c" }, new String[] { "z" })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:long[] // ========================================================================== @Test public void indexOfLong() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((long[]) null, 1L)); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[0], 1L)); assertEquals(0, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 1L)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((long[]) null, 1L, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[0], 1L, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, -1)); } @Test public void indexOfLongArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((long[]) null, new long[] { 1L })); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[] { 1L, 2L, 3L }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new long[0], new long[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L })); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L })); assertEquals(1, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L, 2L })); assertEquals(0, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((long[]) null, new long[] { 1L }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[] { 1L, 2L, 3L }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new long[0], new long[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L, 2L }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new long[] { 1L, 2L, 3L }, new long[0], 9)); } @Test public void lastIndexOfLong() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((long[]) null, 1L)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[0], 1L)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 1L)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((long[]) null, 1L, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[0], 1L, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 2L, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, 1L, 0)); } @Test public void lastIndexOfLongArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((long[]) null, new long[] { 1L })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 2L, 3L }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[0], new long[] { 1L })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L, 1L })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((long[]) null, new long[] { 1L }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 2L, 3L }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 8)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L, 2L }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 1L }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { 2L }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new long[] { 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L }, new long[] { }, 0)); } @Test public void containsLong() { assertFalse(ArrayUtil.arrayContains((long[]) null, 1L)); assertFalse(ArrayUtil.arrayContains(new long[0], 1L)); assertTrue(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, 1L)); assertFalse(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, 26L)); } @Test public void containsLongArray() { assertFalse(ArrayUtil.arrayContains((long[]) null, new long[] { 1L })); assertFalse(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, null)); assertTrue(ArrayUtil.arrayContains(new long[0], new long[0])); assertTrue(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, new long[0])); assertTrue(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, new long[] { 1L })); assertFalse(ArrayUtil.arrayContains(new long[] { 1L, 2L, 3L }, new long[] { 26L })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:int[] // ========================================================================== @Test public void indexOfInt() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((int[]) null, 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[0], 1)); assertEquals(0, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((int[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[0], 1, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); } @Test public void indexOfIntArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((int[]) null, new int[] { 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[] { 1, 2, 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new int[0], new int[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1 })); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 })); assertEquals(1, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1, 2 })); assertEquals(0, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((int[]) null, new int[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[] { 1, 2, 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new int[0], new int[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1 }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1, 2 }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new int[] { 1, 2, 3 }, new int[0], 9)); } @Test public void lastIndexOfInt() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((int[]) null, 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[0], 1)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((int[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[0], 1, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1, 0)); } @Test public void lastIndexOfIntArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((int[]) null, new int[] { 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 2, 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[0], new int[] { 1 })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2, 1 })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((int[]) null, new int[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 2, 3 }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 8)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1, 2 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { 2 }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new int[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new int[] { }, 0)); } @Test public void containsInt() { assertFalse(ArrayUtil.arrayContains((int[]) null, 1)); assertFalse(ArrayUtil.arrayContains(new int[0], 1)); assertTrue(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, 1)); assertFalse(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, 26)); } @Test public void containsIntArray() { assertFalse(ArrayUtil.arrayContains((int[]) null, new int[] { 1 })); assertFalse(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, null)); assertTrue(ArrayUtil.arrayContains(new int[0], new int[0])); assertTrue(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, new int[0])); assertTrue(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, new int[] { 1 })); assertFalse(ArrayUtil.arrayContains(new int[] { 1, 2, 3 }, new int[] { 26 })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:short[] // ========================================================================== @Test public void indexOfShort() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((short[]) null, (short) 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new short[0], (short) 1)); assertEquals( 0, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((short[]) null, (short) 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new short[0], (short) 1, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, -1)); } @Test public void indexOfShortArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((short[]) null, new short[] { (short) 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 2, (short) 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new short[0], new short[0])); assertEquals( 0, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1 })); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 })); assertEquals( 1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1, (short) 2 })); assertEquals( 0, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((short[]) null, new short[] { (short) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 2, (short) 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new short[0], new short[0], 0)); assertEquals( 0, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1 }, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 0)); assertEquals( 1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1, (short) 2 }, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, -1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new short[] { (short) 1, (short) 2, (short) 3 }, new short[0], 9)); } @Test public void lastIndexOfShort() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((short[]) null, (short) 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new short[0], (short) 1)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 1)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((short[]) null, (short) 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new short[0], (short) 1, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 8)); assertEquals( 2, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 4)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 2, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, (short) 1, 0)); } @Test public void lastIndexOfShortArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((short[]) null, new short[] { (short) 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 2, (short) 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new short[0], new short[] { (short) 1 })); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2, (short) 1 })); assertEquals( 8, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((short[]) null, new short[] { (short) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 2, (short) 3 }, null, 0)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 8)); assertEquals( 4, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1, (short) 2 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 1 }, 0)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { (short) 2 }, 0)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new short[] { (short) 1, (short) 1, (short) 2, (short) 1, (short) 1, (short) 2, (short) 1, (short) 1 }, new short[] { }, 0)); } @Test public void containsShort() { assertFalse(ArrayUtil.arrayContains((short[]) null, (short) 1)); assertFalse(ArrayUtil.arrayContains(new short[0], (short) 1)); assertTrue(ArrayUtil.arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, (short) 1)); assertFalse(ArrayUtil.arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, (short) 26)); } @Test public void containsShortArray() { assertFalse(ArrayUtil.arrayContains((short[]) null, new short[] { (short) 1 })); assertFalse(ArrayUtil.arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, null)); assertTrue(ArrayUtil.arrayContains(new short[0], new short[0])); assertTrue(ArrayUtil.arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, new short[0])); assertTrue(ArrayUtil.arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, new short[] { (short) 1 })); assertFalse(ArrayUtil .arrayContains(new short[] { (short) 1, (short) 2, (short) 3 }, new short[] { (short) 26 })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:byte[] // ========================================================================== @Test public void indexOfByte() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((byte[]) null, (byte) 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new byte[0], (byte) 1)); assertEquals( 0, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((byte[]) null, (byte) 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new byte[0], (byte) 1, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, -1)); } @Test public void indexOfByteArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((byte[]) null, new byte[] { (byte) 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new byte[0], new byte[0])); assertEquals( 0, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1 })); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 })); assertEquals( 1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1, (byte) 2 })); assertEquals( 0, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((byte[]) null, new byte[] { (byte) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new byte[0], new byte[0], 0)); assertEquals( 0, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1 }, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 0)); assertEquals( 1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1, (byte) 2 }, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, -1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, new byte[0], 9)); } @Test public void lastIndexOfByte() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((byte[]) null, (byte) 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new byte[0], (byte) 1)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 1)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((byte[]) null, (byte) 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new byte[0], (byte) 1, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 8)); assertEquals( 2, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 4)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 2, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, (byte) 1, 0)); } @Test public void lastIndexOfByteArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((byte[]) null, new byte[] { (byte) 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new byte[0], new byte[] { (byte) 1 })); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2, (byte) 1 })); assertEquals( 8, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((byte[]) null, new byte[] { (byte) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, null, 0)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 8)); assertEquals( 4, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1, (byte) 2 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 1 }, 0)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { (byte) 2 }, 0)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new byte[] { (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 1 }, new byte[] { }, 0)); } @Test public void containsByte() { assertFalse(ArrayUtil.arrayContains((byte[]) null, (byte) 1)); assertFalse(ArrayUtil.arrayContains(new byte[0], (byte) 1)); assertTrue(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, (byte) 1)); assertFalse(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, (byte) 26)); } @Test public void containsByteArray() { assertFalse(ArrayUtil.arrayContains((byte[]) null, new byte[] { (byte) 1 })); assertFalse(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, null)); assertTrue(ArrayUtil.arrayContains(new byte[0], new byte[0])); assertTrue(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, new byte[0])); assertTrue(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, new byte[] { (byte) 1 })); assertFalse(ArrayUtil.arrayContains(new byte[] { (byte) 1, (byte) 2, (byte) 3 }, new byte[] { (byte) 26 })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:double[] // ========================================================================== @Test public void indexOfDouble() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[0], 1)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[0], 1, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); } @Test public void indexOfDoubleTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, 1, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[0], 1, 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 1, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 0.2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, 1, 0, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[0], 1, 0, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 0, 0.2)); assertEquals(5, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 3, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 9, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, -1, 0.2)); } @Test public void indexOfDoubleArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, new double[] { 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1, 2, 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[0], new double[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1 })); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 })); assertEquals(1, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1, 2 })); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, new double[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1, 2, 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[0], new double[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1 }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1, 2 }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new double[] { 1, 2, 3 }, new double[0], 9)); } @Test public void indexOfDoubleArrayTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, new double[] { 1.1 }, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1.1, 2.1, 3.1 }, null, 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[0], new double[0], 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1 }, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 0.2)); assertEquals(1, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1, 2 }, 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[0], 0.2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((double[]) null, new double[] { 1 }, 0, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1, 2, 3 }, null, 0, 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[0], new double[0], 0, 0.2)); assertEquals(0, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1 }, 0, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 0, 0.2)); assertEquals(1, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1, 2 }, 0, 0.2)); assertEquals(5, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 3, 0.2)); assertEquals(-1, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 9, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, -1, 0.2)); assertEquals(2, ArrayUtil.arrayIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[0], 2, 0.2)); assertEquals(3, ArrayUtil.arrayIndexOf(new double[] { 1.1, 2.1, 3.1 }, new double[0], 9, 0.2)); } @Test public void lastIndexOfDouble() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], 1)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], 1, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1, 0)); } @Test public void lastIndexOfDoubleTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, 1, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], 1, 0.2)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 1, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 0.2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, 1, 0, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], 1, 0, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 8, 0.2)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 4, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 0, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, 9, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 2, -1, 0.2)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, 1, 0, 0.2)); } @Test public void lastIndexOfDoubleArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, new double[] { 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 2, 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], new double[] { 1 })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2, 1 })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, new double[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 2, 3 }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 8)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1, 2 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { 2 }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new double[] { }, 0)); } @Test public void lastIndexOfDoubleArrayTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, new double[] { 1 }, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 2.1, 3.1 }, null, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[0], new double[] { 1 }, 0.2)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1 }, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2, 1 }, 0.2)); assertEquals(8, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { }, 0.2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((double[]) null, new double[] { 1 }, 0, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 2.1, 3.1 }, null, 0, 0.2)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1 }, 8, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 8, 0.2)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1, 2 }, 8, 0.2)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 9, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, -1, 0.2)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 1 }, 0, 0.2)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { 2 }, 0, 0.2)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new double[] { 1.1, 1.1, 2.1, 1.1, 1.1, 2.1, 1.1, 1.1 }, new double[] { }, 0, 0.2)); } @Test public void containsDouble() { assertFalse(ArrayUtil.arrayContains((double[]) null, 1)); assertFalse(ArrayUtil.arrayContains(new double[0], 1)); assertTrue(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, 1)); assertFalse(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, 26)); } @Test public void containsDoubleTolerance() { assertFalse(ArrayUtil.arrayContains((double[]) null, 1, 0.2)); assertFalse(ArrayUtil.arrayContains(new double[0], 1, 0.2)); assertTrue(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, 1, 0.2)); assertFalse(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, 26, 0.2)); } @Test public void containsDoubleArray() { assertFalse(ArrayUtil.arrayContains((double[]) null, new double[] { 1 })); assertFalse(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, null)); assertTrue(ArrayUtil.arrayContains(new double[0], new double[0])); assertTrue(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, new double[0])); assertTrue(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, new double[] { 1 })); assertFalse(ArrayUtil.arrayContains(new double[] { 1, 2, 3 }, new double[] { 26 })); } @Test public void containsDoubleArrayTolerance() { assertFalse(ArrayUtil.arrayContains((double[]) null, new double[] { 1 }, 0.2)); assertFalse(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, null, 0.2)); assertTrue(ArrayUtil.arrayContains(new double[0], new double[0], 0.2)); assertTrue(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, new double[0], 0.2)); assertTrue(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, new double[] { 1 }, 0.2)); assertFalse(ArrayUtil.arrayContains(new double[] { 1.1, 2.1, 3.1 }, new double[] { 26 }, 0.2)); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:float[] // ========================================================================== @Test public void indexOfFloat() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[0], 1)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[0], 1, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); } @Test public void indexOfFloatTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, 1, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[0], 1, 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 1, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 0.2F)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, 1, 0, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[0], 1, 0, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 0, 0.2F)); assertEquals(5, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 3, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 9, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, -1, 0.2F)); } @Test public void indexOfFloatArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, new float[] { 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1, 2, 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[0], new float[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1 })); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 })); assertEquals(1, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1, 2 })); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, new float[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1, 2, 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[0], new float[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1 }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1, 2 }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new float[] { 1, 2, 3 }, new float[0], 9)); } @Test public void indexOfFloatArrayTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, new float[] { 1 }, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 2.1F, 3.1F }, null, 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[0], new float[0], 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1 }, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 0.2F)); assertEquals( 1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1, 2 }, 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[0], 0.2F)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((float[]) null, new float[] { 1 }, 0, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 2.1F, 3.1F }, null, 0, 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[0], new float[0], 0, 0.2F)); assertEquals(0, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1 }, 0, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 0, 0.2F)); assertEquals( 1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1, 2 }, 0, 0.2F)); assertEquals(5, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 3, 0.2F)); assertEquals(-1, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 9, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, -1, 0.2F)); assertEquals(2, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[0], 2, 0.2F)); assertEquals(3, ArrayUtil.arrayIndexOf(new float[] { 1.1F, 2.1F, 3.1F }, new float[0], 9, 0.2F)); } @Test public void lastIndexOfFloat() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], 1)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], 1, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 2, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, 1, 0)); } @Test public void lastIndexOfFloatTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, 1, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], 1, 0.2F)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 1, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 0.2F)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, 1, 0, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], 1, 0, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 8, 0.2F)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 4, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 0, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, 9, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 2, -1, 0.2F)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, 1, 0, 0.2F)); } @Test public void lastIndexOfFloatArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, new float[] { 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 2, 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], new float[] { 1 })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2, 1 })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, new float[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 2, 3 }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 8)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1, 2 }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { 2 }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1, 1, 2, 1, 1, 2, 1, 1 }, new float[] { }, 0)); } @Test public void lastIndexOfFloatArrayTolerance() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, new float[] { 1 }, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 2.1F, 3.1F }, null, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[0], new float[] { 1 }, 0.2F)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1 }, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 0.2F)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2, 1 }, 0.2F)); assertEquals(8, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { }, 0.2F)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((float[]) null, new float[] { 1 }, 0, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 2.1F, 3.1F }, null, 0, 0.2F)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1 }, 8, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 8, 0.2F)); assertEquals( 4, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1, 2 }, 8, 0.2F)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 9, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, -1, 0.2F)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 1 }, 0, 0.2F)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { 2 }, 0, 0.2F)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new float[] { 1.1F, 1.1F, 2.1F, 1.1F, 1.1F, 2.1F, 1.1F, 1.1F }, new float[] { }, 0, 0.2F)); } @Test public void containsFloat() { assertFalse(ArrayUtil.arrayContains((float[]) null, 1)); assertFalse(ArrayUtil.arrayContains(new float[0], 1)); assertTrue(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, 1)); assertFalse(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, 26)); } @Test public void containsFloatTolerance() { assertFalse(ArrayUtil.arrayContains((float[]) null, 1, 0.2F)); assertFalse(ArrayUtil.arrayContains(new float[0], 1, 0.2F)); assertTrue(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, 1, 0.2F)); assertFalse(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, 26, 0.2F)); } @Test public void containsFloatArray() { assertFalse(ArrayUtil.arrayContains((float[]) null, new float[] { 1 })); assertFalse(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, null)); assertTrue(ArrayUtil.arrayContains(new float[0], new float[0])); assertTrue(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, new float[0])); assertTrue(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, new float[] { 1 })); assertFalse(ArrayUtil.arrayContains(new float[] { 1, 2, 3 }, new float[] { 26 })); } @Test public void containsFloatArrayTolerance() { assertFalse(ArrayUtil.arrayContains((float[]) null, new float[] { 1 }, 0.2F)); assertFalse(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, null, 0.2F)); assertTrue(ArrayUtil.arrayContains(new float[0], new float[0], 0.2F)); assertTrue(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, new float[0], 0.2F)); assertTrue(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, new float[] { 1 }, 0.2F)); assertFalse(ArrayUtil.arrayContains(new float[] { 1.1F, 2.1F, 3.1F }, new float[] { 26 }, 0.2F)); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:boolean[] // ========================================================================== @Test public void indexOfBoolean() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((boolean[]) null, true)); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[0], true)); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, true)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((boolean[]) null, true, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[0], true, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, -1)); } @Test public void indexOfBooleanArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((boolean[]) null, new boolean[] { true })); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, true }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[0], new boolean[0])); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true })); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false })); assertEquals(1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true, false })); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((boolean[]) null, new boolean[] { true }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, true }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[0], new boolean[0], 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true }, 0)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 0)); assertEquals(1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true, false }, 0)); assertEquals(5, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 3)); assertEquals(-1, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 9)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, -1)); assertEquals(2, ArrayUtil.arrayIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new boolean[] { true, true, true }, new boolean[0], 9)); } @Test public void lastIndexOfBoolean() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((boolean[]) null, true)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[0], true)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, true)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((boolean[]) null, true, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[0], true, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 8)); assertEquals(2, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 4)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 0)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, false, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, true, 0)); } @Test public void lastIndexOfBooleanArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((boolean[]) null, new boolean[] { true })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, true }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[0], new boolean[] { true })); assertEquals(7, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false })); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false, true })); assertEquals(8, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((boolean[]) null, new boolean[] { true }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, true }, null, 0)); assertEquals(7, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 8)); assertEquals(4, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true, false }, 8)); assertEquals(5, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 9)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, -1)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { true }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { false }, 0)); assertEquals(0, ArrayUtil.arrayLastIndexOf(new boolean[] { true, true, false, true, true, false, true, true }, new boolean[] { }, 0)); } @Test public void containsBoolean() { assertFalse(ArrayUtil.arrayContains((boolean[]) null, true)); assertFalse(ArrayUtil.arrayContains(new boolean[0], true)); assertTrue(ArrayUtil.arrayContains(new boolean[] { true, true, true }, true)); assertFalse(ArrayUtil.arrayContains(new boolean[] { true, true, true }, false)); } @Test public void containsBooleanArray() { assertFalse(ArrayUtil.arrayContains((boolean[]) null, new boolean[] { true })); assertFalse(ArrayUtil.arrayContains(new boolean[] { true, true, true }, null)); assertTrue(ArrayUtil.arrayContains(new boolean[0], new boolean[0])); assertTrue(ArrayUtil.arrayContains(new boolean[] { true, true, true }, new boolean[0])); assertTrue(ArrayUtil.arrayContains(new boolean[] { true, true, true }, new boolean[] { true })); assertFalse(ArrayUtil.arrayContains(new boolean[] { true, true, true }, new boolean[] { false })); } // ========================================================================== // 在数组中查找一个元素或一个元素序列。 // // 类型:char[] // ========================================================================== @Test public void indexOfChar() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((char[]) null, (char) 1)); assertEquals(-1, ArrayUtil.arrayIndexOf(new char[0], (char) 1)); assertEquals( 0, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((char[]) null, (char) 1, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new char[0], (char) 1, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, -1)); } @Test public void indexOfCharArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayIndexOf((char[]) null, new char[] { (char) 1 })); assertEquals(-1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 2, (char) 3 }, null)); assertEquals(0, ArrayUtil.arrayIndexOf(new char[0], new char[0])); assertEquals( 0, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1 })); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 })); assertEquals( 1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1, (char) 2 })); assertEquals( 0, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[0])); // 形式2 assertEquals(-1, ArrayUtil.arrayIndexOf((char[]) null, new char[] { (char) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 2, (char) 3 }, null, 0)); assertEquals(0, ArrayUtil.arrayIndexOf(new char[0], new char[0], 0)); assertEquals( 0, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1 }, 0)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 0)); assertEquals( 1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1, (char) 2 }, 0)); assertEquals( 5, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 3)); assertEquals( -1, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 9)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, -1)); assertEquals( 2, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[0], 2)); assertEquals(3, ArrayUtil.arrayIndexOf(new char[] { (char) 1, (char) 2, (char) 3 }, new char[0], 9)); } @Test public void lastIndexOfChar() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((char[]) null, (char) 1)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new char[0], (char) 1)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 1)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2)); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((char[]) null, (char) 1, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new char[0], (char) 1, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 8)); assertEquals( 2, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 4)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 0)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 2, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, (char) 1, 0)); } @Test public void lastIndexOfCharArray() { // 形式1 assertEquals(-1, ArrayUtil.arrayLastIndexOf((char[]) null, new char[] { (char) 1 })); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 2, (char) 3 }, null)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new char[0], new char[] { (char) 1 })); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 })); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2, (char) 1 })); assertEquals( 8, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { })); // 形式2 assertEquals(-1, ArrayUtil.arrayLastIndexOf((char[]) null, new char[] { (char) 1 }, 0)); assertEquals(-1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 2, (char) 3 }, null, 0)); assertEquals( 7, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 8)); assertEquals( 4, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1, (char) 2 }, 8)); assertEquals( 5, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 9)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, -1)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 1 }, 0)); assertEquals( -1, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { (char) 2 }, 0)); assertEquals( 0, ArrayUtil.arrayLastIndexOf(new char[] { (char) 1, (char) 1, (char) 2, (char) 1, (char) 1, (char) 2, (char) 1, (char) 1 }, new char[] { }, 0)); } @Test public void containsChar() { assertFalse(ArrayUtil.arrayContains((char[]) null, (char) 1)); assertFalse(ArrayUtil.arrayContains(new char[0], (char) 1)); assertTrue(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, (char) 1)); assertFalse(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, (char) 26)); } @Test public void containsCharArray() { assertFalse(ArrayUtil.arrayContains((char[]) null, new char[] { (char) 1 })); assertFalse(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, null)); assertTrue(ArrayUtil.arrayContains(new char[0], new char[0])); assertTrue(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, new char[0])); assertTrue(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, new char[] { (char) 1 })); assertFalse(ArrayUtil.arrayContains(new char[] { (char) 1, (char) 2, (char) 3 }, new char[] { (char) 26 })); } }