16cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks/*
26cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Copyright (C) 2017 The Android Open Source Project
36cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks *
46cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License");
56cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * you may not use this file except in compliance with the License.
66cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * You may obtain a copy of the License at
76cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks *
86cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks *      http://www.apache.org/licenses/LICENSE-2.0
96cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks *
106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * Unless required by applicable law or agreed to in writing, software
116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS,
126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * See the License for the specific language governing permissions and
146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks * limitations under the License.
156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks */
166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubankspackage com.android.rs.unittest;
186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.content.Context;
206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.content.res.Resources;
216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Allocation;
226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Element;
236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.RenderScript;
246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport android.renderscript.Type;
256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanksimport java.util.Random;
276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubankspublic class UT_alloc_copy extends UnitTest {
296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public UT_alloc_copy(Context ctx) {
316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        super("Allocation CopyTo", ctx);
326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void run() {
356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        RenderScript mRS = createRenderScript(false);
366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeTo_Byte(mRS);
386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeTo_Short(mRS);
396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeTo_Int(mRS);
406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeTo_Float(mRS);
416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeTo_Long(mRS);
426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy2DRangeTo_Byte(mRS);
446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy2DRangeTo_Short(mRS);
456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy2DRangeTo_Int(mRS);
466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy2DRangeTo_Float(mRS);
476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy2DRangeTo_Long(mRS);
486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeToUnchecked_Byte(mRS);
506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeToUnchecked_Short(mRS);
516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeToUnchecked_Int(mRS);
526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeToUnchecked_Float(mRS);
536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        allocation_copy1DRangeToUnchecked_Long(mRS);
546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        mRS.destroy();
566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        passTest();
576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeTo_Byte(RenderScript mRS) {
606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] inArray = new byte[arr_len];
656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] outArray = new byte[arr_len];
666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        random.nextBytes(inArray);
676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8(mRS));
696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeTo(offset, count, outArray);
756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeTo_Byte TEST PASSED");
936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeTo_Short(RenderScript mRS) {
996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
1006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
1016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
1026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] inArray = new short[arr_len];
1046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] outArray = new short[arr_len];
1056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
1076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = (short)random.nextInt();
1086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16(mRS));
1116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
1126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
1146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
1156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
1166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeTo(offset, count, outArray);
1176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
1196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
1206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
1216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
1226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
1246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
1256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
1276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
1286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
1296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
1316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
1326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
1346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeTo_Short TEST PASSED");
1356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
1366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
1376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
1396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeTo_Int(RenderScript mRS) {
1416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
1426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
1436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
1446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] inArray = new int[arr_len];
1466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] outArray = new int[arr_len];
1476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
1496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextInt();
1506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
1536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
1546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
1566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
1576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
1586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeTo(offset, count, outArray);
1596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
1616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
1626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
1636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
1646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
1666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
1676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
1696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
1706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
1716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
1726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
1736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
1746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
1766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeTo_Int TEST PASSED");
1776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
1786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
1796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
1816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeTo_Float(RenderScript mRS) {
1836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
1846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
1856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
1866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] inArray = new float[arr_len];
1886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] outArray = new float[arr_len];
1896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
1916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextFloat();
1926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
1936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
1946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32(mRS));
1956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
1966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
1976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
1986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
1996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
2006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeTo(offset, count, outArray);
2016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
2036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
2046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
2056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
2066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
2076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
2086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
2096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
2116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0f) {
2126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
2136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
2146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
2156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
2166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
2186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeTo_Float TEST PASSED");
2196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
2206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
2216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
2236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeTo_Long(RenderScript mRS) {
2256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
2266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
2276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
2286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] inArray = new long[arr_len];
2306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] outArray = new long[arr_len];
2316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
2336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextLong();
2346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64(mRS));
2376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
2386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
2396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
2406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
2416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
2426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeTo(offset, count, outArray);
2436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
2456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
2466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
2476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
2486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
2496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
2506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
2516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
2536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
2546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
2556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
2566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
2576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
2586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
2606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeTo_Long TEST PASSED");
2616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
2626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
2636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
2656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy2DRangeTo_Byte(RenderScript mRS) {
2676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
2686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(128);
2696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int height = random.nextInt(128);
2706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xoff = random.nextInt(width);
2716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int yoff = random.nextInt(height);
2726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xcount = width - xoff;
2736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int ycount = height - yoff;
2746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = xcount * ycount;
2756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] inArray = new byte[arr_len];
2776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] outArray = new byte[arr_len];
2786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        random.nextBytes(inArray);
2796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8(mRS));
2816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width).setY(height);
2826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
2836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
2846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
2856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
2866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
2876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
2886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
2896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
2906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
2916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
2926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
2936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
2956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy2DRangeTo_Byte TEST PASSED");
2966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
2976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
2986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
2996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
3006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy2DRangeTo_Short(RenderScript mRS) {
3026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
3036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(128);
3046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int height = random.nextInt(128);
3056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xoff = random.nextInt(width);
3066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int yoff = random.nextInt(height);
3076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xcount = width - xoff;
3086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int ycount = height - yoff;
3096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = xcount * ycount;
3106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] inArray = new short[arr_len];
3126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] outArray = new short[arr_len];
3136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
3156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = (short)random.nextInt();
3166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16(mRS));
3196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width).setY(height);
3206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
3216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
3226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
3236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
3256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
3266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
3276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
3286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
3296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
3306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
3316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
3336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy2DRangeTo_Short TEST PASSED");
3346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
3356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
3366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
3386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy2DRangeTo_Int(RenderScript mRS) {
3406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
3416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(128);
3426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int height = random.nextInt(128);
3436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xoff = random.nextInt(width);
3446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int yoff = random.nextInt(height);
3456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xcount = width - xoff;
3466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int ycount = height - yoff;
3476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = xcount * ycount;
3486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] inArray = new int[arr_len];
3506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] outArray = new int[arr_len];
3516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
3536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextInt();
3546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
3576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width).setY(height);
3586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
3596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
3606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
3616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
3636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
3646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
3656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
3666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
3676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
3686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
3696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
3716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy2DRangeTo_Int TEST PASSED");
3726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
3736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
3746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
3766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy2DRangeTo_Float(RenderScript mRS) {
3786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
3796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(128);
3806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int height = random.nextInt(128);
3816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xoff = random.nextInt(width);
3826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int yoff = random.nextInt(height);
3836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xcount = width - xoff;
3846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int ycount = height - yoff;
3856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = xcount * ycount;
3866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] inArray = new float[arr_len];
3886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] outArray = new float[arr_len];
3896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
3916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextFloat();
3926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
3936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
3946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32(mRS));
3956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width).setY(height);
3966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
3976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
3986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
3996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
4016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
4026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
4036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
4046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
4056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
4066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
4076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
4096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy2DRangeTo_Float TEST PASSED");
4106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
4116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
4126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
4146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy2DRangeTo_Long(RenderScript mRS) {
4166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
4176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(128);
4186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int height = random.nextInt(128);
4196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xoff = random.nextInt(width);
4206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int yoff = random.nextInt(height);
4216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int xcount = width - xoff;
4226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int ycount = height - yoff;
4236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = xcount * ycount;
4246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] inArray = new long[arr_len];
4266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] outArray = new long[arr_len];
4276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
4296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextLong();
4306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64(mRS));
4336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width).setY(height);
4346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
4356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeFrom(xoff, yoff, xcount, ycount, inArray);
4366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy2DRangeTo(xoff, yoff, xcount, ycount, outArray);
4376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
4396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
4406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
4416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
4426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
4436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
4446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
4456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
4476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy2DRangeTo_Long TEST PASSED");
4486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
4496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
4506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
4526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeToUnchecked_Byte(RenderScript mRS) {
4556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
4566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
4576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
4586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] inArray = new byte[arr_len];
4606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        byte[] outArray = new byte[arr_len];
4616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        random.nextBytes(inArray);
4626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I8(mRS));
4646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
4656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
4666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
4676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
4686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
4696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeToUnchecked(offset, count, outArray);
4706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
4726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
4736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
4746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
4756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
4766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
4776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
4786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
4806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
4816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
4826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
4836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
4846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
4856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
4876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeToUnchecked_Byte TEST PASSED");
4886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
4896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
4906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
4916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
4926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeToUnchecked_Short(RenderScript mRS) {
4946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
4956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
4966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
4976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
4986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] inArray = new short[arr_len];
4996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        short[] outArray = new short[arr_len];
5006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
5026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = (short)random.nextInt();
5036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I16(mRS));
5066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
5076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
5096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
5106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
5116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeToUnchecked(offset, count, outArray);
5126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
5146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
5156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
5166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
5176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
5186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
5196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
5206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
5226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
5236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
5246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
5256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
5266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
5276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
5296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeToUnchecked_Short TEST PASSED");
5306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
5316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
5326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
5346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeToUnchecked_Int(RenderScript mRS) {
5366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
5376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
5386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
5396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] inArray = new int[arr_len];
5416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int[] outArray = new int[arr_len];
5426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
5446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextInt();
5456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I32(mRS));
5486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
5496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
5516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
5526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
5536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeToUnchecked(offset, count, outArray);
5546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
5566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
5576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
5586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
5596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
5606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
5616cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
5626cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5636cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
5646cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
5656cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
5666cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
5676cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
5686cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
5696cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5706cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
5716cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeToUnchecked_Int TEST PASSED");
5726cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
5736cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
5746cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5756cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
5766cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5776cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeToUnchecked_Float(RenderScript mRS) {
5786cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
5796cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
5806cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
5816cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5826cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] inArray = new float[arr_len];
5836cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        float[] outArray = new float[arr_len];
5846cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5856cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
5866cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextFloat();
5876cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
5886cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5896cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.F32(mRS));
5906cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
5916cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
5926cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
5936cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
5946cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
5956cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeToUnchecked(offset, count, outArray);
5966cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
5976cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
5986cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
5996cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
6006cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
6016cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
6026cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
6036cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
6046cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6056cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
6066cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0f) {
6076cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
6086cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
6096cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
6106cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
6116cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6126cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
6136cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeToUnchecked_Float TEST PASSED");
6146cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
6156cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
6166cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6176cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
6186cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
6196cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    public void allocation_copy1DRangeToUnchecked_Long(RenderScript mRS) {
6206cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Random random = new Random(0x172d8ab9);
6216cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int width = random.nextInt(512);
6226cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int arr_len = width;
6236cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
6246cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] inArray = new long[arr_len];
6256cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        long[] outArray = new long[arr_len];
6266cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
6276cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < arr_len; i++) {
6286cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            inArray[i] = random.nextLong();
6296cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6306cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
6316cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Type.Builder typeBuilder = new Type.Builder(mRS, Element.I64(mRS));
6326cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        typeBuilder.setX(width);
6336cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        Allocation alloc = Allocation.createTyped(mRS, typeBuilder.create());
6346cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int offset = random.nextInt(arr_len);
6356cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        int count = arr_len - offset;
6366cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeFrom(offset, count, inArray);
6376cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        alloc.copy1DRangeToUnchecked(offset, count, outArray);
6386cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks
6396cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        boolean result = true;
6406cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = 0; i < count; i++) {
6416cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (inArray[i] != outArray[i]) {
6426cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
6436cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
6446cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
6456cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
6466cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6476cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        for (int i = count; i < arr_len; i++) {
6486cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            if (outArray[i] != 0) {
6496cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                result = false;
6506cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                android.util.Log.v("Allocation CopyTo Test", "Failed: " + i + " " + inArray[i] + " " + outArray[i]);
6516cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks                break;
6526cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            }
6536cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6546cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        if (result) {
6556cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            android.util.Log.v("Allocation CopyTo Test", "copy1DRangeToUnchecked_Long TEST PASSED");
6566cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        } else {
6576cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks            failTest();
6586cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks        }
6596cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks    }
6606cac172ca1fedbed3a1b2b3ddd82856aa6345393Arthur Eubanks}
661