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.Element;
230d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Element.DataKind;
240d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.Element.DataType;
250d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanksimport android.support.v8.renderscript.RenderScript;
260d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
270d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubankspublic class UT_element extends UnitTest {
280d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    Element simpleElem;
290d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    Element complexElem;
300d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
310d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    final String subElemNames[] = {
320d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem0",
330d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem1",
340d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem2",
350d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "arrayElem0",
360d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "arrayElem1",
370d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem3",
380d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem4",
390d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem5",
400d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem6",
410d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            "subElem_7",
420d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    };
430d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
440d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    final int subElemArraySizes[] = {
450d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
460d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
470d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
480d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            2,
490d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            5,
500d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
510d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
520d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
530d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
540d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            1,
550d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    };
560d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
570d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    final int subElemOffsets[] = {
580d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            0,
590d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            4,
600d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            8,
610d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            12,
620d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            20,
630d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            40,
640d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            44,
650d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            48,
660d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            64,
670d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            80,
680d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    };
690d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
700d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public UT_element(Context ctx) {
710d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        super("Element", ctx);
720d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
730d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
740d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private void initializeGlobals(RenderScript RS, ScriptC_element s) {
750d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        simpleElem = Element.F32_3(RS);
760d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        complexElem = ScriptField_ComplexStruct.createElement(RS);
770d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_simpleElem(simpleElem);
780d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.set_complexElem(complexElem);
790d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
800d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        ScriptField_ComplexStruct data = new ScriptField_ComplexStruct(RS, 1);
810d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.bind_complexStruct(data);
820d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
830d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
840d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private void testScriptSide(RenderScript pRS) {
850d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        ScriptC_element s = new ScriptC_element(pRS);
860d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        initializeGlobals(pRS, s);
870d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.invoke_element_test();
880d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.finish();
890d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.get_complexStruct().getAllocation().destroy();
900d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.get_complexStruct().getElement().destroy();
910d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        s.destroy();
920d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
930d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
940d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    private void testJavaSide(RenderScript RS) {
950d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
960d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        int subElemCount = simpleElem.getSubElementCount();
970d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("subElemCount == 0", subElemCount == 0);
980d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("simpleElem.getDataKind() == USER",
990d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                simpleElem.getDataKind() == DataKind.USER);
1000d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("simpleElem.getDataType() == FLOAT_32",
1010d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                simpleElem.getDataType() == DataType.FLOAT_32);
1020d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1030d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        subElemCount = complexElem.getSubElementCount();
1040d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("subElemCount == 10", subElemCount == 10);
1050d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("complexElem.getDataKind() == USER",
1060d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                complexElem.getDataKind() == DataKind.USER);
1070d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        _RS_ASSERT("complexElemsimpleElem.getDataType() == NONE",
1080d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                complexElem.getDataType() == DataType.NONE);
1090d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1100d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        for (int i = 0; i < subElemCount; i++) {
1110d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            _RS_ASSERT("complexElem.getSubElement(i) != null",
1120d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                    complexElem.getSubElement(i) != null);
1130d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            _RS_ASSERT("complexElem.getSubElementName(i).equals(subElemNames[i])",
1140d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                    complexElem.getSubElementName(i).equals(subElemNames[i]));
1150d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            _RS_ASSERT("complexElem.getSubElementArraySize(i) == subElemArraySizes[i]",
1160d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                    complexElem.getSubElementArraySize(i) == subElemArraySizes[i]);
1170d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks            _RS_ASSERT("complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]",
1180d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks                    complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]);
1190d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        }
1200d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
1210d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks
1220d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    public void run() {
1230d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        RenderScript pRS = createRenderScript(true);
1240d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        testScriptSide(pRS);
1250d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        testJavaSide(pRS);
1260d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        passTest();
1270d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks        pRS.destroy();
1280d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks    }
1290d13f3929129bf7e34bde1ed3670195c37a180ebArthur Eubanks}
130