1648a1c137663ef7207684d0d7009dd5518942111Stephen Hines/* 2648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Copyright (C) 2013 The Android Open Source Project 3648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 4648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * you may not use this file except in compliance with the License. 6648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * You may obtain a copy of the License at 7648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 8648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 10648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Unless required by applicable law or agreed to in writing, software 11648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * See the License for the specific language governing permissions and 14648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * limitations under the License. 15648a1c137663ef7207684d0d7009dd5518942111Stephen Hines */ 16648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 17648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespackage com.android.rs.test_compatlegacy; 18648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 19648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.Context; 20648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.res.Resources; 21648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.support.v8.renderscript.*; 22648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 23648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespublic class UT_element extends UnitTest { 24648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private Resources mRes; 25648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 26648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Element simpleElem; 27648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Element complexElem; 28648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 29648a1c137663ef7207684d0d7009dd5518942111Stephen Hines final String subElemNames[] = { 30648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem0", 31648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem1", 32648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem2", 33648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "arrayElem0", 34648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "arrayElem1", 35648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem3", 36648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem4", 37648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem5", 38648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem6", 39648a1c137663ef7207684d0d7009dd5518942111Stephen Hines "subElem_7", 40648a1c137663ef7207684d0d7009dd5518942111Stephen Hines }; 41648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 42648a1c137663ef7207684d0d7009dd5518942111Stephen Hines final int subElemArraySizes[] = { 43648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 44648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 45648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 46648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 2, 47648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 5, 48648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 49648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 50648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 51648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 52648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 1, 53648a1c137663ef7207684d0d7009dd5518942111Stephen Hines }; 54648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 55648a1c137663ef7207684d0d7009dd5518942111Stephen Hines final int subElemOffsets[] = { 56648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 0, 57648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 4, 58648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 8, 59648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 12, 60648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 20, 61648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 40, 62648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 44, 63648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 48, 64648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 64, 65648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 80, 66648a1c137663ef7207684d0d7009dd5518942111Stephen Hines }; 67648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 68648a1c137663ef7207684d0d7009dd5518942111Stephen Hines protected UT_element(RSTestCore rstc, Resources res, Context ctx) { 69648a1c137663ef7207684d0d7009dd5518942111Stephen Hines super(rstc, "Element", ctx); 70648a1c137663ef7207684d0d7009dd5518942111Stephen Hines mRes = res; 71648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 72648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 73648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private void initializeGlobals(RenderScript RS, ScriptC_element s) { 74648a1c137663ef7207684d0d7009dd5518942111Stephen Hines simpleElem = Element.F32_3(RS); 75648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem = ScriptField_ComplexStruct.createElement(RS); 76648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_simpleElem(simpleElem); 77648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_complexElem(complexElem); 78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 79648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ScriptField_ComplexStruct data = new ScriptField_ComplexStruct(RS, 1); 80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.bind_complexStruct(data); 81648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 82648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 83648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private void testScriptSide(RenderScript pRS) { 84648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ScriptC_element s = new ScriptC_element(pRS); 85648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.setMessageHandler(mRsMessage); 86648a1c137663ef7207684d0d7009dd5518942111Stephen Hines initializeGlobals(pRS, s); 87648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.invoke_element_test(); 88648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.finish(); 89648a1c137663ef7207684d0d7009dd5518942111Stephen Hines waitForMessage(); 90648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 91648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 92648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private void testJavaSide(RenderScript RS) { 93648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 94648a1c137663ef7207684d0d7009dd5518942111Stephen Hines int subElemCount = simpleElem.getSubElementCount(); 95648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("subElemCount == 0", subElemCount == 0); 96648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 97648a1c137663ef7207684d0d7009dd5518942111Stephen Hines subElemCount = complexElem.getSubElementCount(); 98648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("subElemCount == 10", subElemCount == 10); 99648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("complexElem.getSizeBytes() == ScriptField_ComplexStruct.Item.sizeof", 100648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem.getBytesSize() == ScriptField_ComplexStruct.Item.sizeof); 101648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 102648a1c137663ef7207684d0d7009dd5518942111Stephen Hines for (int i = 0; i < subElemCount; i ++) { 103648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("complexElem.getSubElement(i) != null", 104648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem.getSubElement(i) != null); 105648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("complexElem.getSubElementName(i).equals(subElemNames[i])", 106648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem.getSubElementName(i).equals(subElemNames[i])); 107648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("complexElem.getSubElementArraySize(i) == subElemArraySizes[i]", 108648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem.getSubElementArraySize(i) == subElemArraySizes[i]); 109648a1c137663ef7207684d0d7009dd5518942111Stephen Hines _RS_ASSERT("complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]", 110648a1c137663ef7207684d0d7009dd5518942111Stephen Hines complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]); 111648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 112648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 113648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 114648a1c137663ef7207684d0d7009dd5518942111Stephen Hines public void run() { 115648a1c137663ef7207684d0d7009dd5518942111Stephen Hines RenderScript pRS = RenderScript.create(mCtx); 116648a1c137663ef7207684d0d7009dd5518942111Stephen Hines testScriptSide(pRS); 117648a1c137663ef7207684d0d7009dd5518942111Stephen Hines testJavaSide(pRS); 118648a1c137663ef7207684d0d7009dd5518942111Stephen Hines passTest(); 119648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.destroy(); 120648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 121648a1c137663ef7207684d0d7009dd5518942111Stephen Hines} 122