test/hotspot/jtreg/runtime/exceptionMsgs/ArrayIndexOutOfBoundsException/ArrayIndexOutOfBoundsExceptionTest.java
author goetz
Mon, 07 May 2018 09:11:21 +0200
changeset 50094 2f79462aab9b
child 53533 bce458ffed11
permissions -rw-r--r--
8201593: Print array length in ArrayIndexOutOfBoundsException. Reviewed-by: dholmes, mdoerr, smonteith, shade, rriggs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50094
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     1
/*
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     2
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     3
 * Copyright (c) 2018 SAP SE. All rights reserved.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     4
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     5
 *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     6
 * This code is free software; you can redistribute it and/or modify it
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     7
 * under the terms of the GNU General Public License version 2 only, as
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     8
 * published by the Free Software Foundation.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
     9
 *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    10
 * This code is distributed in the hope that it will be useful, but WITHOUT
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    11
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    12
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    13
 * version 2 for more details (a copy is included in the LICENSE file that
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    14
 * accompanied this code).
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    15
 *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License version
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    17
 * 2 along with this work; if not, write to the Free Software Foundation,
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    18
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    19
 *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    20
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    21
 * or visit www.oracle.com if you need additional information or have any
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    22
 * questions.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    23
 */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    24
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    25
/**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    26
 * @test
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    27
 * @summary Test extended ArrayIndexOutOfBoundsException message. The
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    28
 *   message lists information about the array and the indexes involved.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    29
 * @compile ArrayIndexOutOfBoundsExceptionTest.java
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    30
 * @run testng ArrayIndexOutOfBoundsExceptionTest
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    31
 * @run testng/othervm -Xcomp -XX:-TieredCompilation  ArrayIndexOutOfBoundsExceptionTest
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    32
 * @run testng/othervm -Xcomp -XX:TieredStopAtLevel=1 ArrayIndexOutOfBoundsExceptionTest
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    33
 */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    34
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    35
import java.io.ByteArrayInputStream;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    36
import java.io.ByteArrayOutputStream;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    37
import java.io.ObjectInputStream;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    38
import java.io.ObjectOutputStream;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    39
import java.util.ArrayList;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    40
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    41
import org.testng.annotations.Test;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    42
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    43
import static org.testng.Assert.assertEquals;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    44
import static org.testng.Assert.assertNull;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    45
import static org.testng.Assert.assertNotNull;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    46
import static org.testng.Assert.assertTrue;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    47
import static org.testng.Assert.fail;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    48
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    49
/**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    50
 * Tests the detailed messages of the ArrayIndexOutOfBoundsException.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    51
 */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    52
public class ArrayIndexOutOfBoundsExceptionTest {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    53
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    54
    // Some fields used in the test.
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    55
    static int[] staticArray = new int[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    56
    static long[][] staticLongArray = new long[0][0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    57
    ArrayList<String> names = new ArrayList<>();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    58
    ArrayList<String> curr;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    59
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    60
    public static void main(String[] args) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    61
        ArrayIndexOutOfBoundsExceptionTest t = new ArrayIndexOutOfBoundsExceptionTest();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    62
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    63
            t.testAIOOBMessages();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    64
        } catch (Exception e) {}
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    65
    }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    66
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    67
    /**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    68
     *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    69
     */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    70
    public static class ArrayGenerator {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    71
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    72
        /**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    73
         * @param dummy1
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    74
         * @return Object Array
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    75
         */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    76
        public static Object[] arrayReturner(boolean dummy1) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    77
            return new Object[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    78
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    79
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    80
        /**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    81
         * @param dummy1
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    82
         * @param dummy2
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    83
         * @param dummy3
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    84
         * @return Object Array
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    85
         */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    86
        public Object[] returnMyArray(double dummy1, long dummy2, short dummy3) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    87
            return new Object[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    88
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    89
    }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    90
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    91
    /**
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    92
     *
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    93
     */
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    94
    @Test
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    95
    public void testAIOOBMessages() {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    96
        boolean[] za1 = new boolean[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    97
        byte[]    ba1 = new byte[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    98
        short[]   sa1 = new short[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
    99
        char[]    ca1 = new char[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   100
        int[]     ia1 = new int[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   101
        long[]    la1 = new long[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   102
        float[]   fa1 = new float[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   103
        double[]  da1 = new double[0];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   104
        Object[]  oa1 = new Object[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   105
        Object[]  oa2 = new Object[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   106
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   107
        boolean[] za2 = new boolean[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   108
        boolean[] za3 = new boolean[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   109
        byte[]    ba2 = new byte[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   110
        byte[]    ba3 = new byte[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   111
        short[]   sa2 = new short[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   112
        short[]   sa3 = new short[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   113
        char[]    ca2 = new char[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   114
        char[]    ca3 = new char[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   115
        int[]     ia2 = new int[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   116
        int[]     ia3 = new int[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   117
        long[]    la2 = new long[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   118
        long[]    la3 = new long[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   119
        float[]   fa2 = new float[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   120
        float[]   fa3 = new float[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   121
        double[]  da2 = new double[10];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   122
        double[]  da3 = new double[5];
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   123
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   124
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   125
            System.out.println(za1[-5]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   126
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   127
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   128
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   129
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   130
                "Index -5 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   131
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   132
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   133
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   134
            System.out.println(ba1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   135
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   136
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   137
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   138
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   139
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   140
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   141
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   142
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   143
            System.out.println(sa1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   144
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   145
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   146
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   147
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   148
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   149
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   150
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   151
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   152
            System.out.println(ca1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   153
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   154
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   155
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   156
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   157
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   158
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   159
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   160
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   161
            System.out.println(ia1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   162
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   163
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   164
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   165
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   166
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   167
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   168
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   169
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   170
            System.out.println(la1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   171
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   172
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   173
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   174
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   175
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   176
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   177
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   178
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   179
            System.out.println(fa1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   180
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   181
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   182
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   183
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   184
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   185
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   186
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   187
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   188
            System.out.println(da1[0]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   189
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   190
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   191
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   192
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   193
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   194
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   195
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   196
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   197
            System.out.println(oa1[12]);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   198
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   199
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   200
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   201
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   202
                "Index 12 out of bounds for length 10");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   203
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   204
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   205
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   206
            System.out.println(za1[0] = false);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   207
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   208
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   209
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   210
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   211
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   212
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   213
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   214
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   215
            System.out.println(ba1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   216
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   217
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   218
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   219
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   220
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   221
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   222
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   223
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   224
            System.out.println(sa1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   225
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   226
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   227
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   228
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   229
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   230
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   231
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   232
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   233
            System.out.println(ca1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   234
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   235
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   236
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   237
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   238
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   239
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   240
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   241
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   242
            System.out.println(ia1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   243
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   244
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   245
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   246
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   247
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   248
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   249
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   250
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   251
            System.out.println(la1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   252
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   253
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   254
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   255
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   256
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   257
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   258
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   259
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   260
            System.out.println(fa1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   261
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   262
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   263
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   264
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   265
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   266
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   267
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   268
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   269
            System.out.println(da1[0] = 0);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   270
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   271
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   272
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   273
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   274
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   275
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   276
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   277
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   278
            System.out.println(oa1[-2] = null);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   279
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   280
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   281
        catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   282
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   283
                "Index -2 out of bounds for length 10");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   284
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   285
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   286
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   287
            assertTrue((ArrayGenerator.arrayReturner(false))[0] == null);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   288
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   289
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   290
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   291
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   292
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   293
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   294
            staticArray[0] = 2;
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   295
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   296
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   297
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   298
                "Index 0 out of bounds for length 0");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   299
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   300
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   301
        // Test all five possible messages of arraycopy exceptions thrown in ObjArrayKlass::copy_array().
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   302
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   303
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   304
            System.arraycopy(oa1, -17, oa2, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   305
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   306
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   307
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   308
                "arraycopy: source index -17 out of bounds for object array[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   309
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   310
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   311
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   312
            System.arraycopy(oa1, 2, oa2, -18, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   313
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   314
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   315
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   316
                "arraycopy: destination index -18 out of bounds for object array[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   317
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   318
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   319
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   320
            System.arraycopy(oa1, 2, oa2, 0, -19);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   321
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   322
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   323
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   324
                "arraycopy: length -19 is negative");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   325
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   326
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   327
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   328
            System.arraycopy(oa1, 8, oa2, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   329
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   330
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   331
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   332
                "arraycopy: last source index 13 out of bounds for object array[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   333
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   334
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   335
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   336
            System.arraycopy(oa1, 1, oa2, 0, 7);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   337
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   338
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   339
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   340
                "arraycopy: last destination index 7 out of bounds for object array[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   341
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   342
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   343
        // Test all five possible messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array().
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   344
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   345
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   346
            System.arraycopy(da2, -17, da3, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   347
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   348
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   349
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   350
                "arraycopy: source index -17 out of bounds for double[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   351
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   352
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   353
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   354
            System.arraycopy(da2, 2, da3, -18, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   355
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   356
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   357
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   358
                "arraycopy: destination index -18 out of bounds for double[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   359
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   360
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   361
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   362
            System.arraycopy(da2, 2, da3, 0, -19);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   363
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   364
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   365
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   366
                "arraycopy: length -19 is negative");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   367
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   368
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   369
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   370
            System.arraycopy(da2, 8, da3, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   371
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   372
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   373
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   374
                "arraycopy: last source index 13 out of bounds for double[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   375
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   376
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   377
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   378
            System.arraycopy(da2, 1, da3, 0, 7);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   379
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   380
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   381
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   382
                "arraycopy: last destination index 7 out of bounds for double[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   383
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   384
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   385
        // Test all possible basic types in the messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array().
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   386
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   387
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   388
            System.arraycopy(za2, -17, za3, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   389
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   390
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   391
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   392
                "arraycopy: source index -17 out of bounds for boolean[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   393
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   394
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   395
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   396
            System.arraycopy(ba2, 2, ba3, -18, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   397
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   398
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   399
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   400
                "arraycopy: destination index -18 out of bounds for byte[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   401
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   402
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   403
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   404
            System.arraycopy(sa2, 2, sa3, 0, -19);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   405
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   406
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   407
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   408
                "arraycopy: length -19 is negative");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   409
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   410
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   411
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   412
            System.arraycopy(ca2, 8, ca3, 0, 5);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   413
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   414
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   415
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   416
                "arraycopy: last source index 13 out of bounds for char[10]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   417
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   418
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   419
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   420
            System.arraycopy(ia2, 2, ia3, 0, -19);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   421
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   422
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   423
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   424
                "arraycopy: length -19 is negative");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   425
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   426
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   427
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   428
            System.arraycopy(la2, 1, la3, 0, 7);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   429
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   430
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   431
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   432
                "arraycopy: last destination index 7 out of bounds for long[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   433
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   434
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   435
        try {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   436
            System.arraycopy(fa2, 1, fa3, 0, 7);
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   437
            fail();
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   438
        } catch (ArrayIndexOutOfBoundsException e) {
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   439
            assertEquals(e.getMessage(),
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   440
                "arraycopy: last destination index 7 out of bounds for float[5]");
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   441
        }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   442
    }
2f79462aab9b 8201593: Print array length in ArrayIndexOutOfBoundsException.
goetz
parents:
diff changeset
   443
}