summaryrefslogtreecommitdiffstats
path: root/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java')
-rw-r--r--harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java472
1 files changed, 472 insertions, 0 deletions
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
new file mode 100644
index 0000000..d6adbb5
--- /dev/null
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/java/util/Arrays2Test.java
@@ -0,0 +1,472 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.harmony.tests.java.util;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.RandomAccess;
+
+import junit.framework.TestCase;
+
+import org.apache.harmony.testframework.serialization.SerializationTest;
+
+public class Arrays2Test extends TestCase {
+
+ /**
+ * java.util.Arrays#binarySearch(double[], double)
+ */
+ public void test_binarySearch$DD() {
+ double[] specials = new double[] { Double.NEGATIVE_INFINITY,
+ -Double.MAX_VALUE, -2d, -Double.MIN_VALUE, -0d, 0d,
+ Double.MIN_VALUE, 2d, Double.MAX_VALUE,
+ Double.POSITIVE_INFINITY, Double.NaN };
+
+ for (int i = 0; i < specials.length; i++) {
+ int result = Arrays.binarySearch(specials, specials[i]);
+ assertTrue("Assert 0: " + specials[i] + " invalid: " + result,
+ result == i);
+ }
+ assertEquals("Assert 1: Invalid search index for -1d",
+ -4, Arrays.binarySearch(specials, -1d));
+ assertEquals("Assert 2: Invalid search index for 1d",
+ -8, Arrays.binarySearch(specials, 1d));
+ }
+
+ /**
+ * java.util.Arrays#binarySearch(float[], float)
+ */
+ public void test_binarySearch$FF() {
+ float[] specials = new float[] { Float.NEGATIVE_INFINITY,
+ -Float.MAX_VALUE, -2f, -Float.MIN_VALUE, -0f, 0f,
+ Float.MIN_VALUE, 2f, Float.MAX_VALUE, Float.POSITIVE_INFINITY,
+ Float.NaN };
+
+ for (int i = 0; i < specials.length; i++) {
+ int result = Arrays.binarySearch(specials, specials[i]);
+ assertTrue("Assert 0: " + specials[i] + " invalid: " + result,
+ result == i);
+ }
+ assertEquals("Assert 1: Invalid search index for -1f",
+ -4, Arrays.binarySearch(specials, -1f));
+ assertEquals("Assert 2: Invalid search index for 1f",
+ -8, Arrays.binarySearch(specials, 1f));
+ }
+
+ /**
+ * java.util.Arrays#equals(double[], double[])
+ */
+ public void test_equals$D$D() {
+ double d[] = new double[100];
+ double x[] = new double[100];
+ Arrays.fill(d, Double.MAX_VALUE);
+ Arrays.fill(x, Double.MIN_VALUE);
+
+ assertTrue("Assert 0: Inequal arrays returned true", !Arrays.equals(d, x));
+
+ Arrays.fill(x, Double.MAX_VALUE);
+ assertTrue("Assert 1: equal arrays returned false", Arrays.equals(d, x));
+
+ assertTrue("Assert 2: should be false",
+ !Arrays.equals(new double[] { 1.0 }, new double[] { 2.0 }));
+
+ assertTrue("Assert 3: NaN not equals",
+ Arrays.equals(new double[] { Double.NaN }, new double[] { Double.NaN }));
+ assertTrue("Assert 4: 0d equals -0d",
+ !Arrays.equals(new double[] { 0d }, new double[] { -0d }));
+ }
+
+ /**
+ * java.util.Arrays#equals(float[], float[])
+ */
+ public void test_equals$F$F() {
+ float d[] = new float[100];
+ float x[] = new float[100];
+ Arrays.fill(d, Float.MAX_VALUE);
+ Arrays.fill(x, Float.MIN_VALUE);
+
+ assertTrue("Assert 0: Inequal arrays returned true", !Arrays.equals(d, x));
+
+ Arrays.fill(x, Float.MAX_VALUE);
+ assertTrue("Assert 1: equal arrays returned false", Arrays.equals(d, x));
+
+ assertTrue("Assert 2: NaN not equals",
+ Arrays.equals(new float[] { Float.NaN }, new float[] { Float.NaN }));
+ assertTrue("Assert 3: 0f equals -0f",
+ !Arrays.equals(new float[] { 0f }, new float[] { -0f }));
+ }
+
+ /**
+ * java.util.Arrays#sort(double[])
+ */
+ public void test_sort$D() {
+ // Test a basic sort
+ double[] reversedArray = new double[100];
+ for (int counter = 0; counter < reversedArray.length; counter++) {
+ reversedArray[counter] = (reversedArray.length - counter - 1);
+ }
+ Arrays.sort(reversedArray);
+ for (int counter = 0; counter < reversedArray.length; counter++) {
+ assertTrue("Assert 0: Resulting array not sorted",
+ reversedArray[counter] == counter);
+ }
+
+ // These have to sort as per the Double compare ordering
+ double[] specials1 = new double[] { Double.NaN, Double.MAX_VALUE, Double.MIN_VALUE, 0d, -0d, Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY };
+ double[] specials2 = new double[] { 0d, Double.POSITIVE_INFINITY, -0d, Double.NEGATIVE_INFINITY, Double.MIN_VALUE, Double.NaN, Double.MAX_VALUE };
+ double[] answer = new double[] { Double.NEGATIVE_INFINITY, -0d, 0d, Double.MIN_VALUE, Double.MAX_VALUE, Double.POSITIVE_INFINITY, Double.NaN };
+
+ Arrays.sort(specials1);
+ Object[] print1 = new Object[specials1.length];
+ for (int i = 0; i < specials1.length; i++) {
+ print1[i] = new Double(specials1[i]);
+ }
+ assertTrue("Assert 1: specials sort incorrectly" + Arrays.asList(print1),
+ Arrays.equals(specials1, answer));
+
+ Arrays.sort(specials2);
+ Object[] print2 = new Object[specials2.length];
+ for (int i = 0; i < specials2.length; i++) {
+ print2[i] = new Double(specials2[i]);
+ }
+ assertTrue("Assert 2: specials sort incorrectly " + Arrays.asList(print2),
+ Arrays.equals(specials2, answer));
+ }
+
+ /**
+ * java.util.Arrays#sort(float[])
+ */
+ public void test_sort$F() {
+ // Test a basic sort
+ float[] reversedArray = new float[100];
+ for (int counter = 0; counter < reversedArray.length; counter++) {
+ reversedArray[counter] = (reversedArray.length - counter - 1);
+ }
+ Arrays.sort(reversedArray);
+ for (int counter = 0; counter < reversedArray.length; counter++) {
+ assertTrue("Assert 0: Resulting array not sorted",
+ reversedArray[counter] == counter);
+ }
+
+ float[] specials1 = new float[] { Float.NaN, Float.MAX_VALUE, Float.MIN_VALUE, 0f, -0f, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY };
+ float[] specials2 = new float[] { 0f, Float.POSITIVE_INFINITY, -0f, Float.NEGATIVE_INFINITY, Float.MIN_VALUE, Float.NaN, Float.MAX_VALUE };
+ float[] answer = new float[] { Float.NEGATIVE_INFINITY, -0f, 0f, Float.MIN_VALUE, Float.MAX_VALUE, Float.POSITIVE_INFINITY, Float.NaN };
+
+ Arrays.sort(specials1);
+ Object[] print1 = new Object[specials1.length];
+ for (int i = 0; i < specials1.length; i++) {
+ print1[i] = new Float(specials1[i]);
+ }
+ assertTrue("Assert 1: specials sort incorrectly" + Arrays.asList(print1),
+ Arrays.equals(specials1, answer));
+
+ Arrays.sort(specials2);
+ Object[] print2 = new Object[specials2.length];
+ for (int i = 0; i < specials2.length; i++) {
+ print2[i] = new Float(specials2[i]);
+ }
+ assertTrue("Assert 2: specials sort incorrectly" + Arrays.asList(print2),
+ Arrays.equals(specials2, answer));
+ }
+
+ /**
+ * java.util.Arrays#toString(boolean[])
+ */
+ public void test_toString$Z() {
+ assertEquals("null", Arrays.toString((boolean[]) null));
+ assertEquals("[]", Arrays.toString(new boolean[] { }));
+ assertEquals("[true]", Arrays.toString(new boolean[] { true }));
+ assertEquals("[true, false]", Arrays.toString(new boolean[] { true, false }));
+ assertEquals("[true, false, true]", Arrays.toString(new boolean[] { true, false, true }));
+ }
+
+ /**
+ * java.util.Arrays#toString(byte[])
+ */
+ public void test_toString$B() {
+ assertEquals("null", Arrays.toString((byte[]) null));
+ assertEquals("[]", Arrays.toString(new byte[] { }));
+ assertEquals("[0]", Arrays.toString(new byte[] { 0 }));
+ assertEquals("[-1, 0]", Arrays.toString(new byte[] { -1, 0 }));
+ assertEquals("[-1, 0, 1]", Arrays.toString(new byte[] { -1, 0, 1 }));
+ }
+
+ /**
+ * java.util.Arrays#toString(char[])
+ */
+ public void test_toString$C() {
+ assertEquals("null", Arrays.toString((char[]) null));
+ assertEquals("[]", Arrays.toString(new char[] { }));
+ assertEquals("[a]", Arrays.toString(new char[] { 'a' }));
+ assertEquals("[a, b]", Arrays.toString(new char[] { 'a', 'b' }));
+ assertEquals("[a, b, c]", Arrays.toString(new char[] { 'a', 'b', 'c' }));
+ }
+
+ /**
+ * java.util.Arrays#toString(double[])
+ */
+ public void test_toString$D() {
+ assertEquals("null", Arrays.toString((double[]) null));
+ assertEquals("[]", Arrays.toString(new double[] { }));
+ assertEquals("[0.0]", Arrays.toString(new double[] { 0.0D }));
+ assertEquals("[-1.0, 0.0]", Arrays.toString(new double[] { -1.0D, 0.0D }));
+ assertEquals("[-1.0, 0.0, 1.0]", Arrays.toString(new double[] { -1.0D, 0.0D, 1.0D }));
+ }
+
+ /**
+ * java.util.Arrays#toString(float[])
+ */
+ public void test_toString$F() {
+ assertEquals("null", Arrays.toString((float[]) null));
+ assertEquals("[]", Arrays.toString(new float[] { }));
+ assertEquals("[0.0]", Arrays.toString(new float[] { 0.0F }));
+ assertEquals("[-1.0, 0.0]", Arrays.toString(new float[] { -1.0F, 0.0F }));
+ assertEquals("[-1.0, 0.0, 1.0]", Arrays.toString(new float[] { -1.0F, 0.0F, 1.0F }));
+ }
+
+ /**
+ * java.util.Arrays#toString(int[])
+ */
+ public void test_toString$I() {
+ assertEquals("null", Arrays.toString((int[]) null));
+ assertEquals("[]", Arrays.toString(new int[] { }));
+ assertEquals("[0]", Arrays.toString(new int[] { 0 }));
+ assertEquals("[-1, 0]", Arrays.toString(new int[] { -1, 0 }));
+ assertEquals("[-1, 0, 1]", Arrays.toString(new int[] { -1, 0, 1 }));
+ }
+
+ /**
+ * java.util.Arrays#toString(long[])
+ */
+ public void test_toString$J() {
+ assertEquals("null", Arrays.toString((long[]) null));
+ assertEquals("[]", Arrays.toString(new long[] { }));
+ assertEquals("[0]", Arrays.toString(new long[] { 0 }));
+ assertEquals("[-1, 0]", Arrays.toString(new long[] { -1, 0 }));
+ assertEquals("[-1, 0, 1]", Arrays.toString(new long[] { -1, 0, 1 }));
+ }
+
+ /**
+ * java.util.Arrays#toString(short[])
+ */
+ public void test_toString$S() {
+ assertEquals("null", Arrays.toString((short[]) null));
+ assertEquals("[]", Arrays.toString(new short[] { }));
+ assertEquals("[0]", Arrays.toString(new short[] { 0 }));
+ assertEquals("[-1, 0]", Arrays.toString(new short[] { -1, 0 }));
+ assertEquals("[-1, 0, 1]", Arrays.toString(new short[] { -1, 0, 1 }));
+ }
+
+ /**
+ * java.util.Arrays#toString(Object[])
+ */
+ public void test_toString$Ljava_lang_Object() {
+ assertEquals("null", Arrays.toString((Object[]) null));
+ assertEquals("[]", Arrays.toString(new Object[] { }));
+ assertEquals("[fixture]", Arrays.toString(new Object[] { "fixture" }));
+ assertEquals("[fixture, null]", Arrays.toString(new Object[] { "fixture", null }));
+ assertEquals("[fixture, null, fixture]", Arrays.toString(new Object[] { "fixture", null, "fixture" }));
+ }
+
+ /**
+ * java.util.Arrays#deepToString(Object[])
+ */
+ public void test_deepToString$java_lang_Object() {
+ assertEquals("null", Arrays.deepToString((Object[]) null));
+ assertEquals("[]", Arrays.deepToString(new Object[] { }));
+ assertEquals("[fixture]", Arrays.deepToString(new Object[] { "fixture" }));
+ assertEquals("[fixture, null]", Arrays.deepToString(new Object[] { "fixture", null }));
+ assertEquals("[fixture, null, fixture]", Arrays.deepToString(new Object[] { "fixture", null, "fixture" }));
+
+ Object[] fixture = new Object[1];
+ fixture[0] = fixture;
+ assertEquals("[[...]]", Arrays.deepToString(fixture));
+
+ fixture = new Object[2];
+ fixture[0] = "fixture";
+ fixture[1] = fixture;
+ assertEquals("[fixture, [...]]", Arrays.deepToString(fixture));
+
+ fixture = new Object[10];
+ fixture[0] = new boolean[] { true, false };
+ fixture[1] = new byte[] { 0, 1 };
+ fixture[2] = new char[] { 'a', 'b' };
+ fixture[3] = new double[] { 0.0D, 1.0D };
+ fixture[4] = new float[] { 0.0F, 1.0F };
+ fixture[5] = new int[] { 0, 1 };
+ fixture[6] = new long[] { 0L, 1L };
+ fixture[7] = new short[] { 0, 1 };
+ fixture[8] = fixture[0];
+ fixture[9] = new Object[9];
+ ((Object[]) fixture[9])[0] = fixture;
+ ((Object[]) fixture[9])[1] = fixture[1];
+ ((Object[]) fixture[9])[2] = fixture[2];
+ ((Object[]) fixture[9])[3] = fixture[3];
+ ((Object[]) fixture[9])[4] = fixture[4];
+ ((Object[]) fixture[9])[5] = fixture[5];
+ ((Object[]) fixture[9])[6] = fixture[6];
+ ((Object[]) fixture[9])[7] = fixture[7];
+ Object[] innerFixture = new Object[4];
+ innerFixture[0] = "innerFixture0";
+ innerFixture[1] = innerFixture;
+ innerFixture[2] = fixture;
+ innerFixture[3] = "innerFixture3";
+ ((Object[]) fixture[9])[8] = innerFixture;
+
+ String expected = "[[true, false], [0, 1], [a, b], [0.0, 1.0], [0.0, 1.0], [0, 1], [0, 1], [0, 1], [true, false], [[...], [0, 1], [a, b], [0.0, 1.0], [0.0, 1.0], [0, 1], [0, 1], [0, 1], [innerFixture0, [...], [...], innerFixture3]]]";
+
+ assertEquals(expected, Arrays.deepToString(fixture));
+ }
+
+ public void test_asListTvararg() throws Exception {
+ List<String> stringsList = Arrays.asList("0", "1");
+ assertEquals(2, stringsList.size());
+ assertEquals("0", stringsList.get(0));
+ assertEquals("1", stringsList.get(1));
+ assertTrue(stringsList instanceof RandomAccess);
+ assertTrue(stringsList instanceof Serializable);
+
+ assertEquals(stringsList, SerializationTest
+ .copySerializable((Serializable) stringsList));
+
+ //test from javadoc
+ List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
+ assertEquals(3, stooges.size());
+ assertEquals("Larry", stooges.get(0));
+ assertEquals("Moe", stooges.get(1));
+ assertEquals("Curly", stooges.get(2));
+
+ stringsList = Arrays.asList((String) null);
+ assertEquals(1, stringsList.size());
+ assertEquals((String) null, stringsList.get(0));
+
+ try {
+ Arrays.asList((Object[]) null);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+ }
+
+ public void test_binarySearch$TTLjava_util_ComparatorsuperT() {
+ String[] strings = new String[] { "a", "B", "c", "D" };
+ Arrays.sort(strings, String.CASE_INSENSITIVE_ORDER);
+ assertEquals(0, Arrays.binarySearch(strings, "a",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(0, Arrays.binarySearch(strings, "A",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(1, Arrays.binarySearch(strings, "b",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(1, Arrays.binarySearch(strings, "B",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(2, Arrays.binarySearch(strings, "c",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(2, Arrays.binarySearch(strings, "C",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(3, Arrays.binarySearch(strings, "d",
+ String.CASE_INSENSITIVE_ORDER));
+ assertEquals(3, Arrays.binarySearch(strings, "D",
+ String.CASE_INSENSITIVE_ORDER));
+
+
+ assertTrue(Arrays.binarySearch(strings, "e",
+ String.CASE_INSENSITIVE_ORDER) < 0);
+ assertTrue(Arrays.binarySearch(strings, "" + ('A' - 1),
+ String.CASE_INSENSITIVE_ORDER) < 0);
+
+ //test with null comparator, which switches back to Comparable
+ Arrays.sort(strings, null);
+ //B, D, a, c
+ assertEquals(2, Arrays.binarySearch(strings, "a", (Comparator<String>) null));
+ assertEquals(-1, Arrays.binarySearch(strings, "A", (Comparator<String>) null));
+ assertEquals(-4, Arrays.binarySearch(strings, "b", (Comparator<String>) null));
+ assertEquals(0, Arrays.binarySearch(strings, "B", (Comparator<String>) null));
+ assertEquals(3, Arrays.binarySearch(strings, "c", (Comparator<String>) null));
+ assertEquals(-2, Arrays.binarySearch(strings, "C", (Comparator<String>) null));
+ assertEquals(-5, Arrays.binarySearch(strings, "d", (Comparator<String>) null));
+ assertEquals(1, Arrays.binarySearch(strings, "D", (Comparator<String>) null));
+
+ assertTrue(Arrays.binarySearch(strings, "e", null) < 0);
+ assertTrue(Arrays.binarySearch(strings, "" + ('A' - 1), null) < 0);
+
+ try {
+ Arrays.binarySearch((String[]) null, "A", String.CASE_INSENSITIVE_ORDER);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+
+ try {
+ Arrays.binarySearch(strings, (String) null, String.CASE_INSENSITIVE_ORDER);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+
+ try {
+ Arrays.binarySearch(strings, (String) null, (Comparator<String>) null);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+
+ }
+
+ public void test_sort$TLjava_lang_ComparatorsuperT() {
+ String[] strings = new String[] { "a", "B", "c", "D" };
+ Arrays.sort(strings, String.CASE_INSENSITIVE_ORDER);
+ assertEquals("a", strings[0]);
+ assertEquals("B", strings[1]);
+ assertEquals("c", strings[2]);
+ assertEquals("D", strings[3]);
+
+ //test with null comparator, which switches back to Comparable
+ Arrays.sort(strings, null);
+ //B, D, a, c
+ assertEquals("B", strings[0]);
+ assertEquals("D", strings[1]);
+ assertEquals("a", strings[2]);
+ assertEquals("c", strings[3]);
+
+ try {
+ Arrays.sort((String[]) null, String.CASE_INSENSITIVE_ORDER);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+ }
+
+ public void test_sort$TIILjava_lang_ComparatorsuperT() {
+ String[] strings = new String[] { "a", "B", "c", "D" };
+ Arrays.sort(strings, 0, strings.length, String.CASE_INSENSITIVE_ORDER);
+ assertEquals("a", strings[0]);
+ assertEquals("B", strings[1]);
+ assertEquals("c", strings[2]);
+ assertEquals("D", strings[3]);
+
+ //test with null comparator, which switches back to Comparable
+ Arrays.sort(strings, 0, strings.length, null);
+ //B, D, a, c
+ assertEquals("B", strings[0]);
+ assertEquals("D", strings[1]);
+ assertEquals("a", strings[2]);
+ assertEquals("c", strings[3]);
+
+ try {
+ Arrays.sort((String[]) null, String.CASE_INSENSITIVE_ORDER);
+ fail("No NPE");
+ } catch (NullPointerException e) {
+ }
+ }
+}