1 /* 2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package org.graalvm.compiler.jtt.optimize; 24 25 import org.junit.Before; 26 import org.junit.Test; 27 28 import org.graalvm.compiler.jtt.JTTTest; 29 30 /* 31 * Tests calls to the array copy method. 32 */ 33 public class ArrayCopy03 extends JTTTest { 34 35 public static byte[] src = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 36 public static byte[] dest0 = new byte[]{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 37 public static byte[] dest = new byte[]{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; 38 static { 39 // Ensure System is resolved 40 System.arraycopy(src, 0, src, 0, src.length); 41 } 42 43 @Before 44 public void setUp() { 45 System.currentTimeMillis(); 46 for (int i = 0; i < dest.length; i++) { 47 dest[i] = dest0[i]; 48 } 49 } 50 51 public static byte[] test(int srcPos, int destPos, int length) { 52 System.arraycopy(src, srcPos, dest, destPos, length); 53 return dest; 54 } 55 56 @Test 57 public void run0() throws Throwable { 58 runTest("test", 0, 0, 0); 59 } 60 61 @Test 62 public void run1() throws Throwable { 63 runTest("test", 0, 0, -1); 64 } 65 66 @Test 67 public void run2() throws Throwable { 68 runTest("test", -1, 0, 0); 69 } 70 71 @Test 72 public void run3() throws Throwable { 73 runTest("test", 0, -1, 0); 74 } 75 76 @Test 77 public void run4() throws Throwable { 78 runTest("test", 0, 0, 2); 79 } 80 81 @Test 82 public void run5() throws Throwable { 83 runTest("test", 0, 1, 11); 84 } 85 86 @Test 87 public void run6() throws Throwable { 88 runTest("test", 1, 0, 11); 89 } 90 91 @Test 92 public void run7() throws Throwable { 93 runTest("test", 1, 1, -1); 94 } 95 96 @Test 97 public void run8() throws Throwable { 98 runTest("test", 0, 1, 2); 99 } 100 101 @Test 102 public void run9() throws Throwable { 103 runTest("test", 1, 0, 2); 104 } 105 106 @Test 107 public void run10() throws Throwable { 108 runTest("test", 1, 1, 2); 109 } 110 111 @Test 112 public void run11() throws Throwable { 113 runTest("test", 0, 0, 6); 114 } 115 116 @Test 117 public void run12() throws Throwable { 118 runTest("test", 0, 1, 5); 119 } 120 121 @Test 122 public void run13() throws Throwable { 123 runTest("test", 1, 0, 5); 124 } 125 126 @Test 127 public void run14() throws Throwable { 128 runTest("test", 1, 1, 5); 129 } 130 131 @Test 132 public void run15() throws Throwable { 133 runTest("test", 0, 0, 11); 134 } 135 }