Package org.apache.harmony.luni.tests.java.util

Source Code of org.apache.harmony.luni.tests.java.util.ArraysTest

/*
*  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.luni.tests.java.util;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

import tests.support.Support_UnmodifiableCollectionTest;

public class ArraysTest extends junit.framework.TestCase {

  public static class ReversedIntegerComparator implements Comparator {
    public int compare(Object o1, Object o2) {
      return -(((Integer) o1).compareTo((Integer) o2));
    }

    public boolean equals(Object o1, Object o2) {
      return ((Integer) o1).compareTo((Integer) o2) == 0;
    }
  }

    static class MockComparable implements Comparable{
        public int compareTo(Object o) {
            return 0;
        }
    }
   
  final static int arraySize = 100;

  static Object[] objArray;

  static boolean[] booleanArray;

  static byte[] byteArray;

  static char[] charArray;

  static double[] doubleArray;

  static float[] floatArray;

  static int[] intArray;

  static long[] longArray;

  static Object[] objectArray;

  static short[] shortArray;
  {
    objArray = new Object[arraySize];
    for (int i = 0; i < objArray.length; i++)
      objArray[i] = new Integer(i);
  }

  /**
   * @tests java.util.Arrays#asList(java.lang.Object[])
   */
  public void test_asList$Ljava_lang_Object() {
    // Test for method java.util.List
    // java.util.Arrays.asList(java.lang.Object [])
    List convertedList = Arrays.asList(objectArray);
    for (int counter = 0; counter < arraySize; counter++) {
      assertTrue(
          "Array and List converted from array do not contain identical elements",
          convertedList.get(counter) == objectArray[counter]);
    }
    convertedList.set(50, new Integer(1000));
    assertTrue("set/get did not work on coverted list", convertedList.get(
        50).equals(new Integer(1000)));
    convertedList.set(50, new Integer(50));
    new Support_UnmodifiableCollectionTest("", convertedList).runTest();

    Object[] myArray = (Object[]) (objectArray.clone());
    myArray[30] = null;
    myArray[60] = null;
    convertedList = Arrays.asList(myArray);
    for (int counter = 0; counter < arraySize; counter++) {
      assertTrue(
          "Array and List converted from array do not contain identical elements",
          convertedList.get(counter) == myArray[counter]);
    }

    try {
      Arrays.asList((Object[])null);
      fail("asList with null arg didn't throw NPE");
    } catch (NullPointerException e) {
      // Expected
    }
  }

  /**
   * @tests java.util.Arrays#binarySearch(byte[], byte)
   */
  public void test_binarySearch$BB() {
    // Test for method int java.util.Arrays.binarySearch(byte [], byte)
    for (byte counter = 0; counter < arraySize; counter++)
      assertTrue("Binary search on byte[] answered incorrect position",
          Arrays.binarySearch(byteArray, counter) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(intArray, (byte) -1));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(intArray, (byte) arraySize) == -(arraySize + 1));
    for (byte counter = 0; counter < arraySize; counter++)
      byteArray[counter] -= 50;
    for (byte counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on byte[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(byteArray, (byte) (counter - 50)) == counter);
  }

  /**
   * @tests java.util.Arrays#binarySearch(char[], char)
   */
  public void test_binarySearch$CC() {
    // Test for method int java.util.Arrays.binarySearch(char [], char)
    for (char counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on char[] answered incorrect position",
          Arrays.binarySearch(charArray, (char) (counter + 1)) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(charArray, '\u0000'));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(charArray, (char) (arraySize + 1)) == -(arraySize + 1));
  }

  /**
   * @tests java.util.Arrays#binarySearch(double[], double)
   */
  public void test_binarySearch$DD() {
    // Test for method int java.util.Arrays.binarySearch(double [], double)
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on double[] answered incorrect position",
          Arrays.binarySearch(doubleArray, (double) counter) == (double) counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(doubleArray, (double) -1));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(doubleArray, (double) arraySize) == -(arraySize + 1));
    for (int counter = 0; counter < arraySize; counter++)
      doubleArray[counter] -= (double) 50;
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on double[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(doubleArray, (double) (counter - 50)) == (double) counter);

    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(specials[i] + " invalid: " + result, result == i);
    }
    assertEquals("-1d", -4, Arrays.binarySearch(specials, -1d));
    assertEquals("1d", -8, Arrays.binarySearch(specials, 1d));

  }

  /**
   * @tests java.util.Arrays#binarySearch(float[], float)
   */
  public void test_binarySearch$FF() {
    // Test for method int java.util.Arrays.binarySearch(float [], float)
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on float[] answered incorrect position",
          Arrays.binarySearch(floatArray, (float) counter) == (float) counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(floatArray, (float) -1));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(floatArray, (float) arraySize) == -(arraySize + 1));
    for (int counter = 0; counter < arraySize; counter++)
      floatArray[counter] -= (float) 50;
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on float[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(floatArray, (float) counter - 50) == (float) counter);

    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(specials[i] + " invalid: " + result, result == i);
    }
    assertEquals("-1f", -4, Arrays.binarySearch(specials, -1f));
    assertEquals("1f", -8, Arrays.binarySearch(specials, 1f));
  }

  /**
   * @tests java.util.Arrays#binarySearch(int[], int)
   */
  public void test_binarySearch$II() {
    // Test for method int java.util.Arrays.binarySearch(int [], int)
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Binary search on int[] answered incorrect position",
          Arrays.binarySearch(intArray, counter) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(intArray, -1));
    assertTrue("Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(intArray, arraySize) == -(arraySize + 1));
    for (int counter = 0; counter < arraySize; counter++)
      intArray[counter] -= 50;
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on int[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(intArray, counter - 50) == counter);
  }

  /**
   * @tests java.util.Arrays#binarySearch(long[], long)
   */
  public void test_binarySearch$JJ() {
    // Test for method int java.util.Arrays.binarySearch(long [], long)
    for (long counter = 0; counter < arraySize; counter++)
      assertTrue("Binary search on long[] answered incorrect position",
          Arrays.binarySearch(longArray, counter) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(longArray, (long) -1));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(longArray, (long) arraySize) == -(arraySize + 1));
    for (long counter = 0; counter < arraySize; counter++)
      longArray[(int) counter] -= (long) 50;
    for (long counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on long[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(longArray, counter - (long) 50) == counter);
  }

  /**
   * @tests java.util.Arrays#binarySearch(java.lang.Object[],
   *        java.lang.Object)
   */
  public void test_binarySearch$Ljava_lang_ObjectLjava_lang_Object() {
    // Test for method int java.util.Arrays.binarySearch(java.lang.Object
    // [], java.lang.Object)
    assertEquals(
        "Binary search succeeded for non-comparable value in empty array",
        -1, Arrays.binarySearch(new Object[] {}, new Object()));
    assertEquals(
        "Binary search succeeded for comparable value in empty array",
        -1, Arrays.binarySearch(new Object[] {}, new Integer(-1)));
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on Object[] answered incorrect position",
          Arrays.binarySearch(objectArray, objArray[counter]) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(objectArray, new Integer(-1)));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(objectArray, new Integer(arraySize)) == -(arraySize + 1));
       
        Object object = new Object();
        Object[] objects = new MockComparable[] { new MockComparable() };
        assertEquals("Should always return 0", 0, Arrays.binarySearch(objects, object));

        Object[] string_objects = new String[] { "one" };
        try {
            Arrays.binarySearch(string_objects, object);
            fail("No expected ClassCastException");
        } catch (ClassCastException e) {
            // Expected
        }
  }

  /**
   * @tests java.util.Arrays#binarySearch(java.lang.Object[],
   *        java.lang.Object, java.util.Comparator)
   */
  public void test_binarySearch$Ljava_lang_ObjectLjava_lang_ObjectLjava_util_Comparator() {
    // Test for method int java.util.Arrays.binarySearch(java.lang.Object
    // [], java.lang.Object, java.util.Comparator)
    Comparator comp = new ReversedIntegerComparator();
    for (int counter = 0; counter < arraySize; counter++)
      objectArray[counter] = objArray[arraySize - counter - 1];
    assertTrue(
        "Binary search succeeded for value not present in array 1",
        Arrays.binarySearch(objectArray, new Integer(-1), comp) == -(arraySize + 1));
    assertEquals("Binary search succeeded for value not present in array 2",
        -1, Arrays.binarySearch(objectArray, new Integer(arraySize), comp));
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on Object[] with custom comparator answered incorrect position",
          Arrays.binarySearch(objectArray, objArray[counter], comp) == arraySize
              - counter - 1);
  }

  /**
   * @tests java.util.Arrays#binarySearch(short[], short)
   */
  public void test_binarySearch$SS() {
    // Test for method int java.util.Arrays.binarySearch(short [], short)
    for (short counter = 0; counter < arraySize; counter++)
      assertTrue("Binary search on short[] answered incorrect position",
          Arrays.binarySearch(shortArray, counter) == counter);
    assertEquals("Binary search succeeded for value not present in array 1",
        -1, Arrays.binarySearch(intArray, (short) -1));
    assertTrue(
        "Binary search succeeded for value not present in array 2",
        Arrays.binarySearch(intArray, (short) arraySize) == -(arraySize + 1));
    for (short counter = 0; counter < arraySize; counter++)
      shortArray[counter] -= 50;
    for (short counter = 0; counter < arraySize; counter++)
      assertTrue(
          "Binary search on short[] involving negative numbers answered incorrect position",
          Arrays.binarySearch(shortArray, (short) (counter - 50)) == counter);
  }

  /**
   * @tests java.util.Arrays#fill(byte[], byte)
   */
  public void test_fill$BB() {
    // Test for method void java.util.Arrays.fill(byte [], byte)

    byte d[] = new byte[1000];
    Arrays.fill(d, Byte.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill byte array correctly",
          d[i] == Byte.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(byte[], int, int, byte)
   */
  public void test_fill$BIIB() {
    // Test for method void java.util.Arrays.fill(byte [], int, int, byte)
    byte val = Byte.MAX_VALUE;
    byte d[] = new byte[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill byte array correctly", d[i] == val);

    int result;
    try {
      Arrays.fill(new byte[2], 2, 1, (byte) 27);
      result = 0;
    } catch (ArrayIndexOutOfBoundsException e) {
      result = 1;
    } catch (IllegalArgumentException e) {
      result = 2;
    }
    assertEquals("Wrong exception1", 2, result);
    try {
      Arrays.fill(new byte[2], -1, 1, (byte) 27);
      result = 0;
    } catch (ArrayIndexOutOfBoundsException e) {
      result = 1;
    } catch (IllegalArgumentException e) {
      result = 2;
    }
    assertEquals("Wrong exception2", 1, result);
    try {
      Arrays.fill(new byte[2], 1, 4, (byte) 27);
      result = 0;
    } catch (ArrayIndexOutOfBoundsException e) {
      result = 1;
    } catch (IllegalArgumentException e) {
      result = 2;
    }
    assertEquals("Wrong exception", 1, result);
  }

  /**
   * @tests java.util.Arrays#fill(short[], short)
   */
  public void test_fill$SS() {
    // Test for method void java.util.Arrays.fill(short [], short)

    short d[] = new short[1000];
    Arrays.fill(d, Short.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill short array correctly",
          d[i] == Short.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(short[], int, int, short)
   */
  public void test_fill$SIIS() {
    // Test for method void java.util.Arrays.fill(short [], int, int, short)
    short val = Short.MAX_VALUE;
    short d[] = new short[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill short array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(char[], char)
   */
  public void test_fill$CC() {
    // Test for method void java.util.Arrays.fill(char [], char)

    char d[] = new char[1000];
    Arrays.fill(d, 'V');
    for (int i = 0; i < d.length; i++)
      assertEquals("Failed to fill char array correctly", 'V', d[i]);
  }

  /**
   * @tests java.util.Arrays#fill(char[], int, int, char)
   */
  public void test_fill$CIIC() {
    // Test for method void java.util.Arrays.fill(char [], int, int, char)
    char val = 'T';
    char d[] = new char[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill char array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(int[], int)
   */
  public void test_fill$II() {
    // Test for method void java.util.Arrays.fill(int [], int)

    int d[] = new int[1000];
    Arrays.fill(d, Integer.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill int array correctly",
          d[i] == Integer.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(int[], int, int, int)
   */
  public void test_fill$IIII() {
    // Test for method void java.util.Arrays.fill(int [], int, int, int)
    int val = Integer.MAX_VALUE;
    int d[] = new int[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill int array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(long[], long)
   */
  public void test_fill$JJ() {
    // Test for method void java.util.Arrays.fill(long [], long)

    long d[] = new long[1000];
    Arrays.fill(d, Long.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill long array correctly",
          d[i] == Long.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(long[], int, int, long)
   */
  public void test_fill$JIIJ() {
    // Test for method void java.util.Arrays.fill(long [], int, int, long)
    long d[] = new long[1000];
    Arrays.fill(d, 400, d.length, Long.MAX_VALUE);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == Long.MAX_VALUE));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill long array correctly",
          d[i] == Long.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(float[], float)
   */
  public void test_fill$FF() {
    // Test for method void java.util.Arrays.fill(float [], float)
    float d[] = new float[1000];
    Arrays.fill(d, Float.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill float array correctly",
          d[i] == Float.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(float[], int, int, float)
   */
  public void test_fill$FIIF() {
    // Test for method void java.util.Arrays.fill(float [], int, int, float)
    float val = Float.MAX_VALUE;
    float d[] = new float[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill float array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(double[], double)
   */
  public void test_fill$DD() {
    // Test for method void java.util.Arrays.fill(double [], double)

    double d[] = new double[1000];
    Arrays.fill(d, Double.MAX_VALUE);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill double array correctly",
          d[i] == Double.MAX_VALUE);
  }

  /**
   * @tests java.util.Arrays#fill(double[], int, int, double)
   */
  public void test_fill$DIID() {
    // Test for method void java.util.Arrays.fill(double [], int, int,
    // double)
    double val = Double.MAX_VALUE;
    double d[] = new double[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill double array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(boolean[], boolean)
   */
  public void test_fill$ZZ() {
    // Test for method void java.util.Arrays.fill(boolean [], boolean)

    boolean d[] = new boolean[1000];
    Arrays.fill(d, true);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill boolean array correctly", d[i]);
  }

  /**
   * @tests java.util.Arrays#fill(boolean[], int, int, boolean)
   */
  public void test_fill$ZIIZ() {
    // Test for method void java.util.Arrays.fill(boolean [], int, int,
    // boolean)
    boolean val = true;
    boolean d[] = new boolean[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill boolean array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(java.lang.Object[], java.lang.Object)
   */
  public void test_fill$Ljava_lang_ObjectLjava_lang_Object() {
    // Test for method void java.util.Arrays.fill(java.lang.Object [],
    // java.lang.Object)
    Object val = new Object();
    Object d[] = new Object[1000];
    Arrays.fill(d, 0, d.length, val);
    for (int i = 0; i < d.length; i++)
      assertTrue("Failed to fill Object array correctly", d[i] == val);
  }

  /**
   * @tests java.util.Arrays#fill(java.lang.Object[], int, int,
   *        java.lang.Object)
   */
  public void test_fill$Ljava_lang_ObjectIILjava_lang_Object() {
    // Test for method void java.util.Arrays.fill(java.lang.Object [], int,
    // int, java.lang.Object)
    Object val = new Object();
    Object d[] = new Object[1000];
    Arrays.fill(d, 400, d.length, val);
    for (int i = 0; i < 400; i++)
      assertTrue("Filled elements not in range", !(d[i] == val));
    for (int i = 400; i < d.length; i++)
      assertTrue("Failed to fill Object array correctly", d[i] == val);

    Arrays.fill(d, 400, d.length, null);
    for (int i = 400; i < d.length; i++)
      assertNull("Failed to fill Object array correctly with nulls",
          d[i]);
  }

  /**
   * @tests java.util.Arrays#equals(byte[], byte[])
   */
  public void test_equals$B$B() {
    // Test for method boolean java.util.Arrays.equals(byte [], byte [])
    byte d[] = new byte[1000];
    byte x[] = new byte[1000];
    Arrays.fill(d, Byte.MAX_VALUE);
    Arrays.fill(x, Byte.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Byte.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));
  }

  /**
   * @tests java.util.Arrays#equals(short[], short[])
   */
  public void test_equals$S$S() {
    // Test for method boolean java.util.Arrays.equals(short [], short [])
    short d[] = new short[1000];
    short x[] = new short[1000];
    Arrays.fill(d, Short.MAX_VALUE);
    Arrays.fill(x, Short.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Short.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));
  }

  /**
   * @tests java.util.Arrays#equals(char[], char[])
   */
  public void test_equals$C$C() {
    // Test for method boolean java.util.Arrays.equals(char [], char [])
    char d[] = new char[1000];
    char x[] = new char[1000];
    char c = 'T';
    Arrays.fill(d, c);
    Arrays.fill(x, 'L');
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, c);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));
  }

  /**
   * @tests java.util.Arrays#equals(int[], int[])
   */
  public void test_equals$I$I() {
    // Test for method boolean java.util.Arrays.equals(int [], int [])
    int d[] = new int[1000];
    int x[] = new int[1000];
    Arrays.fill(d, Integer.MAX_VALUE);
    Arrays.fill(x, Integer.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Integer.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));

    assertTrue("wrong result for null array1", !Arrays.equals(new int[2],
        null));
    assertTrue("wrong result for null array2", !Arrays.equals(null,
        new int[2]));
  }

  /**
   * @tests java.util.Arrays#equals(long[], long[])
   */
  public void test_equals$J$J() {
    // Test for method boolean java.util.Arrays.equals(long [], long [])
    long d[] = new long[1000];
    long x[] = new long[1000];
    Arrays.fill(d, Long.MAX_VALUE);
    Arrays.fill(x, Long.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Long.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));

    assertTrue("should be false", !Arrays.equals(
        new long[] { 0x100000000L }, new long[] { 0x200000000L }));

  }

  /**
   * @tests java.util.Arrays#equals(float[], float[])
   */
  public void test_equals$F$F() {
    // Test for method boolean java.util.Arrays.equals(float [], float [])
    float d[] = new float[1000];
    float x[] = new float[1000];
    Arrays.fill(d, Float.MAX_VALUE);
    Arrays.fill(x, Float.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Float.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));

    assertTrue("NaN not equals", Arrays.equals(new float[] { Float.NaN },
        new float[] { Float.NaN }));
    assertTrue("0f equals -0f", !Arrays.equals(new float[] { 0f },
        new float[] { -0f }));
  }

  /**
   * @tests java.util.Arrays#equals(double[], double[])
   */
  public void test_equals$D$D() {
    // Test for method boolean java.util.Arrays.equals(double [], double [])
    double d[] = new double[1000];
    double x[] = new double[1000];
    Arrays.fill(d, Double.MAX_VALUE);
    Arrays.fill(x, Double.MIN_VALUE);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, Double.MAX_VALUE);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));

    assertTrue("should be false", !Arrays.equals(new double[] { 1.0 },
        new double[] { 2.0 }));

    assertTrue("NaN not equals", Arrays.equals(new double[] { Double.NaN },
        new double[] { Double.NaN }));
    assertTrue("0d equals -0d", !Arrays.equals(new double[] { 0d },
        new double[] { -0d }));
  }

  /**
   * @tests java.util.Arrays#equals(boolean[], boolean[])
   */
  public void test_equals$Z$Z() {
    // Test for method boolean java.util.Arrays.equals(boolean [], boolean
    // [])
    boolean d[] = new boolean[1000];
    boolean x[] = new boolean[1000];
    Arrays.fill(d, true);
    Arrays.fill(x, false);
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, true);
    assertTrue("equal arrays returned false", Arrays.equals(d, x));
  }

  /**
   * @tests java.util.Arrays#equals(java.lang.Object[], java.lang.Object[])
   */
  public void test_equals$Ljava_lang_Object$Ljava_lang_Object() {
    // Test for method boolean java.util.Arrays.equals(java.lang.Object [],
    // java.lang.Object [])
    Object d[] = new Object[1000];
    Object x[] = new Object[1000];
    Object o = new Object();
    Arrays.fill(d, o);
    Arrays.fill(x, new Object());
    assertTrue("Inequal arrays returned true", !Arrays.equals(d, x));
    Arrays.fill(x, o);
    d[50] = null;
    x[50] = null;
    assertTrue("equal arrays returned false", Arrays.equals(d, x));
  }

  /**
   * @tests java.util.Arrays#sort(byte[])
   */
  public void test_sort$B() {
    // Test for method void java.util.Arrays.sort(byte [])
    byte[] reversedArray = new byte[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (byte) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (byte) counter);
  }

  /**
   * @tests java.util.Arrays#sort(byte[], int, int)
   */
  public void test_sort$BII() {
    // Test for method void java.util.Arrays.sort(byte [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    byte[] reversedArray = new byte[arraySize];
    byte[] originalReversedArray = new byte[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (byte) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

        try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }

    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new byte[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(char[])
   */
  public void test_sort$C() {
    // Test for method void java.util.Arrays.sort(char [])
    char[] reversedArray = new char[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (char) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (char) counter);

  }

  /**
   * @tests java.util.Arrays#sort(char[], int, int)
   */
  public void test_sort$CII() {
    // Test for method void java.util.Arrays.sort(char [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    char[] reversedArray = new char[arraySize];
    char[] originalReversedArray = new char[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (char) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

    try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }

    //exception order testing
    try {
      Arrays.sort(new char[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(double[])
   */
  public void test_sort$D() {
    // Test for method void java.util.Arrays.sort(double [])
    double[] reversedArray = new double[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (double) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (double) counter);

    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("specials sort incorrectly 1: " + 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("specials sort incorrectly 2: " + Arrays.asList(print2),
        Arrays.equals(specials2, answer));
  }

  /**
   * @tests java.util.Arrays#sort(double[], int, int)
   */
  public void test_sort$DII() {
    // Test for method void java.util.Arrays.sort(double [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    double[] reversedArray = new double[arraySize];
    double[] originalReversedArray = new double[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (double) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

    try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }

    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new double[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(float[])
   */
  public void test_sort$F() {
    // Test for method void java.util.Arrays.sort(float [])
    float[] reversedArray = new float[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (float) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (float) 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("specials sort incorrectly 1: " + 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("specials sort incorrectly 2: " + Arrays.asList(print2),
        Arrays.equals(specials2, answer));
  }

  /**
   * @tests java.util.Arrays#sort(float[], int, int)
   */
  public void test_sort$FII() {
    // Test for method void java.util.Arrays.sort(float [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    float[] reversedArray = new float[arraySize];
    float[] originalReversedArray = new float[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (float) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

        try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new float[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(int[])
   */
  public void test_sort$I() {
    // Test for method void java.util.Arrays.sort(int [])
    int[] reversedArray = new int[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = arraySize - counter - 1;
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == counter);
  }

  /**
   * @tests java.util.Arrays#sort(int[], int, int)
   */
  public void test_sort$III() {
    // Test for method void java.util.Arrays.sort(int [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    int[] reversedArray = new int[arraySize];
    int[] originalReversedArray = new int[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = arraySize - counter - 1;
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

        try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new int[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(long[])
   */
  public void test_sort$J() {
    // Test for method void java.util.Arrays.sort(long [])
    long[] reversedArray = new long[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (long) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (long) counter);

  }

  /**
   * @tests java.util.Arrays#sort(long[], int, int)
   */
  public void test_sort$JII() {
    // Test for method void java.util.Arrays.sort(long [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    long[] reversedArray = new long[arraySize];
    long[] originalReversedArray = new long[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (long) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }

        try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }

    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
       
    //exception order testing
    try {
      Arrays.sort(new long[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(java.lang.Object[])
   */
  public void test_sort$Ljava_lang_Object() {
    // Test for method void java.util.Arrays.sort(java.lang.Object [])
    Object[] reversedArray = new Object[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = objectArray[arraySize - counter - 1];
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == objectArray[counter]);
  }

  /**
   * @tests java.util.Arrays#sort(java.lang.Object[], int, int)
   */
  public void test_sort$Ljava_lang_ObjectII() {
    // Test for method void java.util.Arrays.sort(java.lang.Object [], int,
    // int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    Object[] reversedArray = new Object[arraySize];
    Object[] originalReversedArray = new Object[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = objectArray[arraySize - counter - 1];
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          ((Comparable) reversedArray[counter])
              .compareTo(reversedArray[counter + 1]) <= 0);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);

    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }

        try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new Object[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

  /**
   * @tests java.util.Arrays#sort(java.lang.Object[], int, int,
   *        java.util.Comparator)
   */
  public void test_sort$Ljava_lang_ObjectIILjava_util_Comparator() {
    // Test for method void java.util.Arrays.sort(java.lang.Object [], int,
    // int, java.util.Comparator)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    ReversedIntegerComparator comp = new ReversedIntegerComparator();
    Object[] originalArray = new Object[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      originalArray[counter] = objectArray[counter];
    Arrays.sort(objectArray, startIndex, endIndex, comp);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          objectArray[counter] == originalArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds", comp.compare(
          objectArray[counter], objectArray[counter + 1]) <= 0);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          objectArray[counter] == originalArray[counter]);
  }

  /**
   * @tests java.util.Arrays#sort(java.lang.Object[], java.util.Comparator)
   */
    @SuppressWarnings("unchecked")
    public void test_sort$Ljava_lang_ObjectLjava_util_Comparator() {
    // Test for method void java.util.Arrays.sort(java.lang.Object [],
    // java.util.Comparator)
    ReversedIntegerComparator comp = new ReversedIntegerComparator();
    Arrays.sort(objectArray, comp);
    for (int counter = 0; counter < arraySize - 1; counter++)
      assertTrue("Array not sorted correctly with custom comparator",
          comp
              .compare(objectArray[counter],
                  objectArray[counter + 1]) <= 0);
       
        // Test the sort functionailty with an Integer array
        int[] original = { 190, 180, 170, 160, 150, 140, 120, 320, 110, 310,
                100, 300, 290, 280, 270, 260, 250, 240, 230, 210, 200 };
        Integer[] sorted = { 100, 110, 120, 140, 150, 160, 170, 180, 190, 200,
                210, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320 };

        Integer[] elements = new Integer[original.length];
        for (int i=0; i < original.length; i++){
            elements[i] = new Integer(original[i]);
        }
       
        Comparator normalComparator = new Comparator(){
            public int compare(Object o1, Object o2) {
                Integer e1 = (Integer)o1;
                Integer e2 = (Integer)o2;
                if (e1 > e2){
                    return 1;
                }else if(e1 < e2){
                    return -1;
                }else{
                    return 0;
                }
            }
        };
        Arrays.sort(elements, normalComparator);
        // After sorting, elements should be the same as sorted array.
        for(int i = 0; i < original.length; i++){
            assertEquals(sorted[i],elements[i]);
        }

        for (int i=0; i < original.length; i++){
            elements[i] = new Integer(original[i]);
        }
        Comparator comparator = new Comparator(){
            public int compare(Object o1, Object o2) {
                Integer e1 = (Integer)o1;
                Integer e2 = (Integer)o2;
                return e1 > e2 ? 1 : 0;
            }
        };
        Arrays.sort(elements, comparator);
        // After sorting, elements should be the same as sorted array.
        for(int i = 0; i < original.length; i++){
            assertEquals(sorted[i],elements[i]);
        }
  }

  /**
   * @tests java.util.Arrays#sort(short[])
   */
  public void test_sort$S() {
    // Test for method void java.util.Arrays.sort(short [])
    short[] reversedArray = new short[arraySize];
    for (int counter = 0; counter < arraySize; counter++)
      reversedArray[counter] = (short) (arraySize - counter - 1);
    Arrays.sort(reversedArray);
    for (int counter = 0; counter < arraySize; counter++)
      assertTrue("Resulting array not sorted",
          reversedArray[counter] == (short) counter);
  }

  /**
   * @tests java.util.Arrays#sort(short[], int, int)
   */
  public void test_sort$SII() {
    // Test for method void java.util.Arrays.sort(short [], int, int)
    int startIndex = arraySize / 4;
    int endIndex = 3 * arraySize / 4;
    short[] reversedArray = new short[arraySize];
    short[] originalReversedArray = new short[arraySize];
    for (int counter = 0; counter < arraySize; counter++) {
      reversedArray[counter] = (short) (arraySize - counter - 1);
      originalReversedArray[counter] = reversedArray[counter];
    }
    Arrays.sort(reversedArray, startIndex, endIndex);
    for (int counter = 0; counter < startIndex; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
    for (int counter = startIndex; counter < endIndex - 1; counter++)
      assertTrue("Array not sorted within bounds",
          reversedArray[counter] <= reversedArray[counter + 1]);
    for (int counter = endIndex; counter < arraySize; counter++)
      assertTrue("Array modified outside of bounds",
          reversedArray[counter] == originalReversedArray[counter]);
 
    //exception testing
    try {
      Arrays.sort(reversedArray, startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, -1, startIndex);
            fail("ArrayIndexOutOfBoundsException expected (1)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
       
    try {
      Arrays.sort(reversedArray, startIndex, reversedArray.length + 1);
            fail("ArrayIndexOutOfBoundsException expected (2)");
    } catch (ArrayIndexOutOfBoundsException ignore) {
    }
   
    //exception order testing
    try {
      Arrays.sort(new short[1], startIndex + 1, startIndex);
            fail("IllegalArgumentException expected");
    } catch (IllegalArgumentException ignore) {
    }
  }

    /**
     * @tests java.util.Arrays#sort(byte[], int, int)
     */
    public void test_java_util_Arrays_sort_byte_array_NPE() {
        byte[] byte_array_null = null;
        try {
            java.util.Arrays.sort(byte_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(byte_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(char[], int, int)
     */
    public void test_java_util_Arrays_sort_char_array_NPE() {
        char[] char_array_null = null;
        try {
            java.util.Arrays.sort(char_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(char_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(double[], int, int)
     */
    public void test_java_util_Arrays_sort_double_array_NPE() {
        double[] double_array_null = null;
        try {
            java.util.Arrays.sort(double_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(double_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(float[], int, int)
     */
    public void test_java_util_Arrays_sort_float_array_NPE() {
        float[] float_array_null = null;
        try {
            java.util.Arrays.sort(float_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(float_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(int[], int, int)
     */
    public void test_java_util_Arrays_sort_int_array_NPE() {
        int[] int_array_null = null;
        try {
            java.util.Arrays.sort(int_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(int_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(Object[], int, int)
     */
    public void test_java_util_Arrays_sort_object_array_NPE() {
        Object[] object_array_null = null;
        try {
            java.util.Arrays.sort(object_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(object_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(object_array_null, (int) -1, (int) 1, null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(long[], int, int)
     */
    public void test_java_util_Arrays_sort_long_array_NPE() {
        long[] long_array_null = null;
        try {
            java.util.Arrays.sort(long_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(long_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    /**
     * @tests java.util.Arrays#sort(short[], int, int)
     */
    public void test_java_util_Arrays_sort_short_array_NPE() {
        short[] short_array_null = null;
        try {
            java.util.Arrays.sort(short_array_null);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
        try {
            // Regression for HARMONY-378
            java.util.Arrays.sort(short_array_null, (int) -1, (int) 1);
            fail("Should throw java.lang.NullPointerException");
        } catch (NullPointerException e) {
            // Expected
        }
    }
   
    /**
     * @tests java.util.Arrays#deepEquals(Object[], Object[])     
     */
    public void test_deepEquals$Ljava_lang_ObjectLjava_lang_Object() {
       int [] a1 = {1, 2, 3};
       short [] a2 = {0, 1};
       Object [] a3 = {new Integer(1), a2};
       int [] a4 = {6, 5, 4};
      
       int [] b1 = {1, 2, 3};
       short [] b2 = {0, 1};
       Object [] b3 = {new Integer(1), b2};
      
       Object a [] = {a1, a2, a3};
       Object b [] = {b1, b2, b3};
      
       assertFalse(Arrays.equals(a, b));
       assertTrue(Arrays.deepEquals(a,b));
      
       a[2] = a4;
      
       assertFalse(Arrays.deepEquals(a, b));
    }
   
    /**
     * @tests java.util.Arrays#deepHashCode(Object[])
     */
    public void test_deepHashCode$Ljava_lang_Object() {
        int [] a1 = {1, 2, 3};
        short [] a2 = {0, 1};
        Object [] a3 = {new Integer(1), a2};
       
        int [] b1 = {1, 2, 3};
        short [] b2 = {0, 1};
        Object [] b3 = {new Integer(1), b2};
       
        Object a [] = {a1, a2, a3};
        Object b [] = {b1, b2, b3};
      
        int deep_hash_a = Arrays.deepHashCode(a);
        int deep_hash_b = Arrays.deepHashCode(b);
       
        assertEquals(deep_hash_a, deep_hash_b);
     }
   
    /**
     * @tests java.util.Arrays#hashCode(boolean[] a)
     */
    public void test_hashCode$LZ() {
        int listHashCode;
        int arrayHashCode;
       
        boolean [] boolArr = {true, false, false, true, false};   
        List listOfBoolean = new LinkedList();
        for (int i = 0; i < boolArr.length; i++) {
            listOfBoolean.add(new Boolean(boolArr[i]));
        }
        listHashCode = listOfBoolean.hashCode();
        arrayHashCode = Arrays.hashCode(boolArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(int[] a)
     */
    public void test_hashCode$LI() {
        int listHashCode;
        int arrayHashCode;
       
        int [] intArr = {10, 5, 134, 7, 19};   
        List listOfInteger = new LinkedList();
        
        for (int i = 0; i < intArr.length; i++) {
            listOfInteger.add(new Integer(intArr[i]));          
        }              
        listHashCode = listOfInteger.hashCode();
        arrayHashCode = Arrays.hashCode(intArr);      
        assertEquals(listHashCode, arrayHashCode);
       
        int [] intArr2 = {10, 5, 134, 7, 19};               
        assertEquals(Arrays.hashCode(intArr2), Arrays.hashCode(intArr));
    }
   
    /**
     * @tests java.util.Arrays#hashCode(char[] a)
     */
    public void test_hashCode$LC() {
        int listHashCode;
        int arrayHashCode;
       
        char [] charArr = {'a', 'g', 'x', 'c', 'm'};   
        List listOfCharacter = new LinkedList();
        for (int i = 0; i < charArr.length; i++) {
            listOfCharacter.add(new Character(charArr[i]));
        }
        listHashCode = listOfCharacter.hashCode();
        arrayHashCode = Arrays.hashCode(charArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(byte[] a)
     */
    public void test_hashCode$LB() {
        int listHashCode;
        int arrayHashCode;
       
        byte [] byteArr = {5, 9, 7, 6, 17};   
        List listOfByte = new LinkedList();
        for (int i = 0; i < byteArr.length; i++) {
            listOfByte.add(new Byte(byteArr[i]));
        }
        listHashCode = listOfByte.hashCode();
        arrayHashCode = Arrays.hashCode(byteArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(long[] a)
     */
    public void test_hashCode$LJ() {
        int listHashCode;
        int arrayHashCode;
       
        long [] longArr = {67890234512l, 97587236923425l, 257421912912l,
                6754268100l, 5};   
        List listOfLong = new LinkedList();
        for (int i = 0; i < longArr.length; i++) {
            listOfLong.add(new Long(longArr[i]));
        }
        listHashCode = listOfLong.hashCode();
        arrayHashCode = Arrays.hashCode(longArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(float[] a)
     */
    public void test_hashCode$LF() {
        int listHashCode;
        int arrayHashCode;
       
        float [] floatArr = {0.13497f, 0.268934f, 12e-5f, -3e+2f, 10e-4f};   
        List listOfFloat = new LinkedList();
        for (int i = 0; i < floatArr.length; i++) {
            listOfFloat.add(new Float(floatArr[i]));
        }
        listHashCode = listOfFloat.hashCode();
        arrayHashCode = Arrays.hashCode(floatArr);
        assertEquals(listHashCode, arrayHashCode);
          
        float [] floatArr2 = {0.13497f, 0.268934f, 12e-5f, -3e+2f, 10e-4f};
        assertEquals(Arrays.hashCode(floatArr2), Arrays.hashCode(floatArr));
    }
   
    /**
     * @tests java.util.Arrays#hashCode(double[] a)
     */
    public void test_hashCode$LD() {
        int listHashCode;
        int arrayHashCode;
       
        double [] doubleArr = {0.134945657, 0.0038754, 11e-150, -30e-300, 10e-4};   
        List listOfDouble = new LinkedList();
        for (int i = 0; i < doubleArr.length; i++) {
            listOfDouble.add(new Double(doubleArr[i]));
        }
        listHashCode = listOfDouble.hashCode();
        arrayHashCode = Arrays.hashCode(doubleArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(short[] a)
     */
    public void test_hashCode$LS() {
        int listHashCode;
        int arrayHashCode;
       
        short [] shortArr = {35, 13, 45, 2, 91};   
        List listOfShort = new LinkedList();
        for (int i = 0; i < shortArr.length; i++) {
            listOfShort.add(new Short(shortArr[i]));
        }
        listHashCode = listOfShort.hashCode();
        arrayHashCode = Arrays.hashCode(shortArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
    /**
     * @tests java.util.Arrays#hashCode(Object[] a)
     */
    public void test_hashCode$Ljava_lang_Object() {
        int listHashCode;
        int arrayHashCode;
       
        Object[] objectArr = {new Integer(1), new Float(10e-12f), null};
        List listOfObject= new LinkedList();
        for (int i = 0; i < objectArr.length; i++) {
            listOfObject.add(objectArr[i]);
        }
        listHashCode = listOfObject.hashCode();
        arrayHashCode = Arrays.hashCode(objectArr);
        assertEquals(listHashCode, arrayHashCode);
    }
   
  /**
   * Sets up the fixture, for example, open a network connection. This method
   * is called before a test is executed.
   */
  protected void setUp() {
    booleanArray = new boolean[arraySize];
    byteArray = new byte[arraySize];
    charArray = new char[arraySize];
    doubleArray = new double[arraySize];
    floatArray = new float[arraySize];
    intArray = new int[arraySize];
    longArray = new long[arraySize];
    objectArray = new Object[arraySize];
    shortArray = new short[arraySize];

    for (int counter = 0; counter < arraySize; counter++) {
      byteArray[counter] = (byte) counter;
      charArray[counter] = (char) (counter + 1);
      doubleArray[counter] = counter;
      floatArray[counter] = counter;
      intArray[counter] = counter;
      longArray[counter] = counter;
      objectArray[counter] = objArray[counter];
      shortArray[counter] = (short) counter;
    }
    for (int counter = 0; counter < arraySize; counter += 2) {
      booleanArray[counter] = false;
      booleanArray[counter + 1] = true;
    }
  }
 
  /**
     * @tests java.util.Arrays#swap(int, int, Object[])
     */
    public void test_swap_I_I_$Ljava_lang_Object() throws Exception {
      Method m = Arrays.class.getDeclaredMethod("swap", int.class, int.class, Object[].class);
      m.setAccessible(true);
      Integer[] arr = {new Integer(0), new Integer(1), new Integer(2)};
      m.invoke(null,0, 1, arr);
      assertEquals("should be equal to 1",1, arr[0].intValue());
      assertEquals("should be equal to 0",0, arr[1].intValue());
    }

  /**
   * Tears down the fixture, for example, close a network connection. This
   * method is called after a test is executed.
   */
  protected void tearDown() {
  }
}
TOP

Related Classes of org.apache.harmony.luni.tests.java.util.ArraysTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.