< prev index next >

test/hotspot/jtreg/runtime/exceptionMsgs/ArrayIndexOutOfBoundsException/ArrayIndexOutOfBoundsExceptionTest.java

Print this page

        

@@ -22,18 +22,16 @@
  * questions.
  */
 
 /**
  * @test
- * @summary Test extended ArrayIndexOutOfBoundsException message for
- *   class files generated without debug information. The message lists
- *   information about the array and the indexes involved.
+ * @summary Test extended ArrayIndexOutOfBoundsException message. The
+ *   message lists information about the array and the indexes involved.
  * @compile ArrayIndexOutOfBoundsExceptionTest.java
  * @run testng ArrayIndexOutOfBoundsExceptionTest
  * @run testng/othervm -Xcomp -XX:-TieredCompilation  ArrayIndexOutOfBoundsExceptionTest
  * @run testng/othervm -Xcomp -XX:TieredStopAtLevel=1 ArrayIndexOutOfBoundsExceptionTest
- * @author Ann-Kathrin Wasle
  */
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;

@@ -47,435 +45,30 @@
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
 /**
- * Tests the detailed messages for the ArrayIndexOutOfBoundsException.
+ * Tests the detailed messages of the ArrayIndexOutOfBoundsException.
  */
 public class ArrayIndexOutOfBoundsExceptionTest {
 
     // Some fields used in the test.
     static int[] staticArray = new int[0];
     static long[][] staticLongArray = new long[0][0];
-    DoubleArrayGen dag;
     ArrayList<String> names = new ArrayList<>();
     ArrayList<String> curr;
 
     public static void main(String[] args) {
         ArrayIndexOutOfBoundsExceptionTest t = new ArrayIndexOutOfBoundsExceptionTest();
         try {
-            t.testCreationViaNew();
-            t.testCreationViaReflection();
-            t.testCreationViaSerialization();
-            t.testLoadedFromLocalVariable1();
-            t.testLoadedFromLocalVariable2();
-            t.testLoadedFromLocalVariable3();
-            t.testLoadedFromLocalVariable4();
-            t.testLoadedFromLocalVariable5();
-            t.testLoadedFromLocalVariable6();
-            t.testLoadedFromLocalVariable7();
-            t.testLoadedFromLocalVariable8();
-            t.testLoadedFromLocalVariable9();
-            t.testLoadedFromLocalVariable10();
-            t.testLoadedFromLocalVariable11();
-            t.testLoadedFromMethod1();
-            t.testLoadedFromMethod2();
-            t.testLoadedFromMethod3();
-            t.testLoadedFromMethod4();
-            t.testLoadedFromStaticField1();
-            t.testLoadedFromStaticField2();
-            t.testLoadedFromStaticField3();
-            t.testLoadedFromStaticField4();
-            t.testWorkWithCompiler();
-            t.testMissingLocalVariableTable();
             t.testAIOOBMessages();
         } catch (Exception e) {}
     }
 
     /**
      *
      */
-    @Test
-    public void testCreationViaNew() {
-        assertNull(new ArrayIndexOutOfBoundsException().getMessage());
-    }
-
-    /**
-     * @throws Exception
-     */
-    @Test
-    public void testCreationViaReflection() throws Exception {
-        Exception ex = ArrayIndexOutOfBoundsException.class.newInstance();
-        assertNull(ex.getMessage());
-    }
-
-    /**
-     * @throws Exception
-     */
-    @Test
-    public void testCreationViaSerialization() throws Exception {
-        Object o = new ArrayIndexOutOfBoundsException();
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        ObjectOutputStream oos = new ObjectOutputStream(bos);
-        oos.writeObject(o);
-        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-        ObjectInputStream ois = new ObjectInputStream(bis);
-        Exception ex = (Exception) ois.readObject();
-        assertNull(ex.getMessage());
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable1() {
-        Object[] a = new Object[5];
-
-        try {
-            a[10].hashCode();
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable2() {
-        Object[] a = new Object[7];
-
-        try {
-            a[-7] = null;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable3() {
-        byte[] a = new byte[0];
-
-        try {
-            assertTrue(a[99] == 5);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable4() {
-        char[] a = new char[0];
-
-        try {
-            a[0] = 0;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable5() {
-        double[] a = new double[0];
-
-        try {
-            assertTrue(a[0] == 0);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable6() {
-        float[] a = new float[0];
-
-        try {
-            a[0] = 0;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable7() {
-        int[] a = new int[0];
-
-        try {
-            assertTrue(a[0] == 0);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable8() {
-        long[] a = new long[0];
-
-        try {
-            a[0] = 0;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable9() {
-        short[] a = new short[5];
-
-        try {
-            assertTrue(a[10] == 0);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable10() {
-        int[][][] a = new int[1][0][0];
-
-        try {
-            assertTrue(a[0][1][2] == 0);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromLocalVariable11() {
-        int[][][] a = new int[1][0][0];
-
-        try {
-            a[0][1][2] = 0;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromMethod1() {
-
-        try {
-            assertTrue((ArrayGenerator.arrayReturner(false))[0] == null);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromMethod2() {
-        try {
-            assertTrue(
-               ((new ArrayGenerator().returnMyArray(1, 1, (short) 1)))[0] == null);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromMethod3() {
-        try {
-            assertTrue((returnArray(null, null, 1f))[0] == null);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromMethod4() {
-        ImplTestLoadedFromMethod4(new DoubleArrayGenImpl());
-    }
-
-    /**
-     * @param gen
-     */
-    public void ImplTestLoadedFromMethod4(DoubleArrayGen gen) {
-        try {
-            (gen.getArray())[0] = 1.0;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromStaticField1() {
-        try {
-            assertTrue(staticArray[0] == 1);
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromStaticField2() {
-        try {
-            staticArray[0] = 2;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromStaticField3() {
-        try {
-            assertTrue(staticLongArray[0][0] == 1L);
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testLoadedFromStaticField4() {
-        try {
-            staticLongArray[0][0] = 2L;
-            fail();
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void testWorkWithCompiler() {
-        int[] a = {0, 1, 2};
-        int i1 = 2;
-        int i2 = 3;
-
-        for (int i = 0; i < 10000000; i++) { // One 0 less is enough for d64.
-            testImplWorkWithCompiler(a, i1);
-        }
-        testImplWorkWithCompiler(a, i2);
-    }
-
-    /**
-     * @param a
-     * @param i
-     */
-    public void testImplWorkWithCompiler(int[] a, int i) {
-        try {
-            assertTrue(a[i] == 2);
-        } catch (ArrayIndexOutOfBoundsException e) {
-            e.printStackTrace();
-            assertNotNull(e.getMessage());
-        }
-    }
-
-    private Object[] returnArray(String[][] dummy1, int[][][] dummy2, float dummy3) {
-        return new Object[0];
-    }
-
-    /**
-     *
-     */
-    public static interface DoubleArrayGen {
-        /**
-         * @return double Array
-         */
-        public double[] getArray();
-    }
-
-    /**
-     *
-     */
-    public static class DoubleArrayGenImpl implements DoubleArrayGen {
-        @Override
-        public double[] getArray() {
-            return new double[0];
-        }
-    }
-
-    /**
-     *
-     */
     public static class ArrayGenerator {
 
         /**
          * @param dummy1
          * @return Object Array

@@ -493,80 +86,10 @@
         public Object[] returnMyArray(double dummy1, long dummy2, short dummy3) {
             return new Object[0];
         }
     }
 
-
-    /**
-     *
-     */
-    @Test
-    public void testMissingLocalVariableTable() {
-        doTestMissingLocalVariableTable(names);
-
-        System.out.println("Names");
-
-        for (int i = 0; i < names.size(); ++i) {
-            System.out.println(names.get(i));
-        }
-
-        String[] expectedNames = new String[] {
-                "Index 0 out-of-bounds for length 0.",
-                "Index -1 out-of-bounds for length 10.",
-                "Index 1 out-of-bounds for length 0.",
-                "Index 7 out-of-bounds for length 5."
-        };
-
-        assertEquals(expectedNames.length, names.size());
-
-        for (int i = 0; i < expectedNames.length; ++i) {
-            assertEquals(names.get(i), expectedNames[i]);
-        }
-    }
-
-    private void doTestMissingLocalVariableTable(ArrayList<String> names) {
-        curr = names;
-        doTestMissingLocalVariableTable1();
-        doTestMissingLocalVariableTable2(new Object[10], new boolean[0], new double[5][1]);
-    }
-
-    private void doTestMissingLocalVariableTable1() {
-        try {
-            staticArray[0] = 0;
-            fail();
-        }
-        catch (ArrayIndexOutOfBoundsException e) {
-            curr.add(e.getMessage());
-        }
-    }
-
-    private void doTestMissingLocalVariableTable2(Object[] o1, boolean z1[], double[][] dd1) {
-        try {
-            o1[-1].hashCode();
-            fail();
-        }
-        catch (ArrayIndexOutOfBoundsException e) {
-            curr.add(e.getMessage());
-        }
-
-        try {
-            z1[1] = true;
-            fail();
-        }
-        catch (ArrayIndexOutOfBoundsException e) {
-            curr.add(e.getMessage());
-        }
-
-        try {
-            assertTrue(dd1[7][1] == 0);
-            fail();
-        }
-        catch (ArrayIndexOutOfBoundsException e) {
-            curr.add(e.getMessage());
-        }
-    }
-
     /**
      *
      */
     @Test
     public void testAIOOBMessages() {

@@ -773,148 +296,148 @@
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
                 "Index 0 out-of-bounds for length 0.");
         }
 
-        // Test all five possible messages of arraycopy exceptions thrown in ObjArrayKlass::copy_array()
+        // Test all five possible messages of arraycopy exceptions thrown in ObjArrayKlass::copy_array().
 
         try {
             System.arraycopy(oa1, -17, oa2, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index -17 of an object array with length 10");
+                "arraycopy source index -17 out of bounds for object array[10].");
         }
 
         try {
             System.arraycopy(oa1, 2, oa2, -18, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index -18 of an object array with length 5");
+                "arraycopy destination index -18 out of bounds for object array[5].");
         }
 
         try {
             System.arraycopy(oa1, 2, oa2, 0, -19);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy a negative range -19 from an object array with length 10 to an object array with length 5");
+                "arraycopy length -19 is negative.");
         }
 
         try {
             System.arraycopy(oa1, 8, oa2, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index 13 of an object array with length 10");
+                "arraycopy: last source index 13 out of bounds for object array[10].");
         }
 
         try {
             System.arraycopy(oa1, 1, oa2, 0, 7);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index 7 of an object array with length 5");
+                "arraycopy: last destination index 7 out of bounds for object array[5].");
         }
 
-        // Test all five possible messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array()
+        // Test all five possible messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array().
 
         try {
             System.arraycopy(da2, -17, da3, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index -17 of a double array with length 10");
+                "arraycopy source index -17 out of bounds for double[10].");
         }
 
         try {
             System.arraycopy(da2, 2, da3, -18, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index -18 of a double array with length 5");
+                "arraycopy destination index -18 out of bounds for double[5].");
         }
 
         try {
             System.arraycopy(da2, 2, da3, 0, -19);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy a negative range -19 from a double array with length 10 to a double array with length 5");
+                "arraycopy length -19 is negative.");
         }
 
         try {
             System.arraycopy(da2, 8, da3, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index 13 of a double array with length 10");
+                "arraycopy: last source index 13 out of bounds for double[10].");
         }
 
         try {
             System.arraycopy(da2, 1, da3, 0, 7);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index 7 of a double array with length 5");
+                "arraycopy: last destination index 7 out of bounds for double[5].");
         }
 
-        // Test all possible basic types in the messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array()
+        // Test all possible basic types in the messages of arraycopy exceptions thrown in TypeArrayKlass::copy_array().
 
         try {
             System.arraycopy(za2, -17, za3, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index -17 of a boolean array with length 10");
+                "arraycopy source index -17 out of bounds for boolean[10].");
         }
 
         try {
             System.arraycopy(ba2, 2, ba3, -18, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index -18 of a byte array with length 5");
+                "arraycopy destination index -18 out of bounds for byte[5].");
         }
 
         try {
             System.arraycopy(sa2, 2, sa3, 0, -19);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy a negative range -19 from a short array with length 10 to a short array with length 5");
+                "arraycopy length -19 is negative.");
         }
 
         try {
             System.arraycopy(ca2, 8, ca3, 0, 5);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy from index 13 of a char array with length 10");
+                "arraycopy: last source index 13 out of bounds for char[10].");
         }
 
         try {
             System.arraycopy(ia2, 2, ia3, 0, -19);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy a negative range -19 from a int array with length 10 to a int array with length 5");
+                "arraycopy length -19 is negative.");
         }
 
         try {
             System.arraycopy(la2, 1, la3, 0, 7);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index 7 of a long array with length 5");
+                "arraycopy: last destination index 7 out of bounds for long[5].");
         }
 
         try {
             System.arraycopy(fa2, 1, fa3, 0, 7);
             fail();
         } catch (ArrayIndexOutOfBoundsException e) {
             assertEquals(e.getMessage(),
-                "while trying to copy to index 7 of a float array with length 5");
+                "arraycopy: last destination index 7 out of bounds for float[5].");
         }
     }
 }
< prev index next >