ArrayCopy04.java revision 12651:6ef01bd40ce2
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 */
23package org.graalvm.compiler.jtt.optimize;
24
25import org.junit.Before;
26import org.junit.Test;
27
28import org.graalvm.compiler.jtt.JTTTest;
29
30/*
31 * Tests calls to the array copy method.
32 */
33public class ArrayCopy04 extends JTTTest {
34
35    public static byte[] array = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
36    public static byte[] array0 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
37    static {
38        // Ensure System is resolved
39        System.arraycopy(array, 0, array, 0, array.length);
40    }
41
42    @Before
43    public void setUp() {
44        System.currentTimeMillis();
45        for (int i = 0; i < array.length; i++) {
46            array[i] = array0[i];
47        }
48    }
49
50    public static byte[] test(int srcPos, int destPos, int length) {
51        System.arraycopy(array, srcPos, array, destPos, length);
52        return array;
53    }
54
55    @Test
56    public void run0() throws Throwable {
57        runTest("test", 0, 0, 0);
58    }
59
60    @Test
61    public void run1() throws Throwable {
62        runTest("test", 0, 0, -1);
63    }
64
65    @Test
66    public void run2() throws Throwable {
67        runTest("test", -1, 0, 0);
68    }
69
70    @Test
71    public void run3() throws Throwable {
72        runTest("test", 0, -1, 0);
73    }
74
75    @Test
76    public void run4() throws Throwable {
77        runTest("test", 0, 0, 2);
78    }
79
80    @Test
81    public void run5() throws Throwable {
82        runTest("test", 0, 1, 11);
83    }
84
85    @Test
86    public void run6() throws Throwable {
87        runTest("test", 1, 0, 11);
88    }
89
90    @Test
91    public void run7() throws Throwable {
92        runTest("test", 1, 1, -1);
93    }
94
95    @Test
96    public void run8() throws Throwable {
97        runTest("test", 0, 1, 2);
98    }
99
100    @Test
101    public void run9() throws Throwable {
102        runTest("test", 1, 0, 2);
103    }
104
105    @Test
106    public void run10() throws Throwable {
107        runTest("test", 1, 1, 2);
108    }
109
110    @Test
111    public void run11() throws Throwable {
112        runTest("test", 0, 0, 6);
113    }
114
115    @Test
116    public void run12() throws Throwable {
117        runTest("test", 0, 1, 5);
118    }
119
120    @Test
121    public void run13() throws Throwable {
122        runTest("test", 1, 0, 5);
123    }
124
125    @Test
126    public void run14() throws Throwable {
127        runTest("test", 1, 1, 5);
128    }
129
130    @Test
131    public void run15() throws Throwable {
132        runTest("test", 0, 0, 11);
133    }
134
135    @Test
136    public void run16() throws Throwable {
137        runTest("test", 0, 1, 10);
138    }
139
140    @Test
141    public void run17() throws Throwable {
142        runTest("test", 1, 0, 10);
143    }
144}
145