10d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// This file is automatically generated from
20d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks// frameworks/rs/tests/java_api/RSUnitTests/RSUnitTests.py
30d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks/*
40d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Copyright (C) 2017 The Android Open Source Project
50d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
60d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License");
70d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * you may not use this file except in compliance with the License.
80d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * You may obtain a copy of the License at
90d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *      http://www.apache.org/licenses/LICENSE-2.0
110d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks *
120d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * Unless required by applicable law or agreed to in writing, software
130d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS,
140d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
150d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * See the License for the specific language governing permissions and
160d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks * limitations under the License.
170d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks */
180d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
190d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspackage com.android.rs.unittest;
200d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
210d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.content.Context;
220d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Allocation;
230d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Element;
240d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.RenderScript;
250d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.util.Log;
260d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
270d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspublic class UT_copy_test extends UnitTest {
280d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    boolean pass = true;
290d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
300d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public UT_copy_test(Context ctx) {
310d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        super("Copy", ctx);
320d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
330d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
340d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    void testFloat2(RenderScript rs, ScriptC_copy_test s) {
350d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a1 = Allocation.createSized(rs, Element.F32_2(rs), 1024);
360d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a2 = Allocation.createSized(rs, Element.F32_2(rs), 1024);
370d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
380d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f1 = new float[1024 * 2];
390d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f2 = new float[1024 * 2];
400d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
410d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            f1[ct] = (float) ct;
420d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
430d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.copyFrom(f1);
440d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
450d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_copyFloat2(a1, a2);
460d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
470d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.copyTo(f2);
480d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
490d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            if (f1[ct] != f2[ct]) {
500d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                failTest();
510d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]);
520d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            }
530d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
540d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.destroy();
550d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.destroy();
560d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
570d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
580d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    void testFloat3(RenderScript rs, ScriptC_copy_test s) {
590d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a1 = Allocation.createSized(rs, Element.F32_3(rs), 1024);
600d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a2 = Allocation.createSized(rs, Element.F32_3(rs), 1024);
610d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
620d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f1 = new float[1024 * 4];
630d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f2 = new float[1024 * 4];
640d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
650d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            f1[ct] = (float) ct;
660d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
670d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.copyFrom(f1);
680d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
690d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_copyFloat3(a1, a2);
700d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
710d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.copyTo(f2);
720d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
730d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            if ((f1[ct] != f2[ct]) && ((ct & 3) != 3)) {
740d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                failTest();
750d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]);
760d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            }
770d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
780d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.destroy();
790d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.destroy();
800d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
810d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
820d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    void testFloat4(RenderScript rs, ScriptC_copy_test s) {
830d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a1 = Allocation.createSized(rs, Element.F32_4(rs), 1024);
840d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        Allocation a2 = Allocation.createSized(rs, Element.F32_4(rs), 1024);
850d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
860d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f1 = new float[1024 * 4];
870d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        float[] f2 = new float[1024 * 4];
880d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
890d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            f1[ct] = (float) ct;
900d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
910d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.copyFrom(f1);
920d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
930d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.forEach_copyFloat4(a1, a2);
940d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
950d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.copyTo(f2);
960d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int ct = 0; ct < f1.length; ct++) {
970d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            if (f1[ct] != f2[ct]) {
980d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                failTest();
990d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                Log.v("RS Test", "Compare failed at " + ct + ", " + f1[ct] + ", " + f2[ct]);
1000d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            }
1010d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
1020d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a1.destroy();
1030d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        a2.destroy();
1040d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
1050d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1060d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public void run() {
1070d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        RenderScript pRS = createRenderScript(true);
1080d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        ScriptC_copy_test s = new ScriptC_copy_test(pRS);
1090d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        testFloat2(pRS, s);
1110d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        testFloat3(pRS, s);
1120d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        testFloat4(pRS, s);
1130d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.invoke_sendResult(true);
1140d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1150d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.finish();
1160d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.destroy();
1170d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.destroy();
1180d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
1190d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks}
1200d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
121