/* * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. * */ /** * @test * @bug 7052494 * @summary Eclipse test fails on JDK 7 b142 * * @run main/othervm -Xbatch Test7052494 */ public class Test7052494 { static int test1(int i, int limit) { int result = 0; while (i++ != 0) { if (result >= limit) break; result = i*2; } return result; } static int test2(int i, int limit) { int result = 0; while (i-- != 0) { if (result <= limit) break; result = i*2; } return result; } static void test3(int i, int limit, int arr[]) { while (i++ != 0) { if (arr[i-1] >= limit) break; arr[i] = i*2; } } static void test4(int i, int limit, int arr[]) { while (i-- != 0) { if (arr[arr.length + i + 1] <= limit) break; arr[arr.length + i] = i*2; } } // Empty loop rolls through MAXINT if i > 0 static final int limit5 = Integer.MIN_VALUE + 10000; static int test5(int i) { int result = 0; while (i++ != limit5) { result = i*2; } return result; } // Empty loop rolls through MININT if i < 0 static final int limit6 = Integer.MAX_VALUE - 10000; static int test6(int i) { int result = 0; while (i-- != limit6) { result = i*2; } return result; } public static void main(String [] args) { boolean failed = false; int[] arr = new int[8]; int[] ar3 = { 0, 0, 4, 6, 8, 10, 0, 0 }; int[] ar4 = { 0, 0, 0, -10, -8, -6, -4, 0 }; System.out.println("test1"); for (int i = 0; i < 11000; i++) { int k = test1(1, 10); if (k != 10) { System.out.println("FAILED: " + k + " != 10"); failed = true; break; } } System.out.println("test2"); for (int i = 0; i < 11000; i++) { int k = test2(-1, -10); if (k != -10) { System.out.println("FAILED: " + k + " != -10"); failed = true; break; } } System.out.println("test3"); for (int i = 0; i < 11000; i++) { java.util.Arrays.fill(arr, 0); test3(1, 10, arr); if (!java.util.Arrays.equals(arr,ar3)) { System.out.println("FAILED: arr = { " + arr[0] + ", " + arr[1] + ", " + arr[2] + ", " + arr[3] + ", " + arr[4] + ", " + arr[5] + ", " + arr[6] + ", " + arr[7] + " }"); failed = true; break; } } System.out.println("test4"); for (int i = 0; i < 11000; i++) { java.util.Arrays.fill(arr, 0); test4(-1, -10, arr); if (!java.util.Arrays.equals(arr,ar4)) { System.out.println("FAILED: arr = { " + arr[0] + ", " + arr[1] + ", " + arr[2] + ", " + arr[3] + ", " + arr[4] + ", " + arr[5] + ", " + arr[6] + ", " + arr[7] + " }"); failed = true; break; } } System.out.println("test5"); for (int i = 0; i < 11000; i++) { int k = test5(limit6); if (k != limit5*2) { System.out.println("FAILED: " + k + " != " + limit5*2); failed = true; break; } } System.out.println("test6"); for (int i = 0; i < 11000; i++) { int k = test6(limit5); if (k != limit6*2) { System.out.println("FAILED: " + k + " != " + limit6*2); failed = true; break; } } System.out.println("finish"); if (failed) System.exit(97); } }