1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2011 The Android Open Source Project 3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License. 6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at 7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * 10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software 11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and 14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License. 15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */ 16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.test; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.res.Resources; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.*; 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Element.*; 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Element.DataKind.*; 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.renderscript.Element.DataType.*; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class UT_element extends UnitTest { 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Resources mRes; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Element simpleElem; 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Element complexElem; 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final String subElemNames[] = { 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem0", 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem1", 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem2", 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "arrayElem0", 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "arrayElem1", 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem3", 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem4", 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem5", 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem6", 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem_7", 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final int subElemArraySizes[] = { 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 2, 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 5, 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final int subElemOffsets[] = { 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 0, 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 4, 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 8, 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 12, 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 20, 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 40, 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 44, 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 48, 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 64, 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 80, 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected UT_element(RSTestCore rstc, Resources res, Context ctx) { 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super(rstc, "Element", ctx); 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRes = res; 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void initializeGlobals(RenderScript RS, ScriptC_element s) { 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams simpleElem = Element.F32_3(RS); 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem = ScriptField_ComplexStruct.createElement(RS); 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_simpleElem(simpleElem); 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_complexElem(complexElem); 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ScriptField_ComplexStruct data = new ScriptField_ComplexStruct(RS, 1); 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.bind_complexStruct(data); 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void testScriptSide(RenderScript pRS) { 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ScriptC_element s = new ScriptC_element(pRS); 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.setMessageHandler(mRsMessage); 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams initializeGlobals(pRS, s); 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.invoke_element_test(); 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.finish(); 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams waitForMessage(); 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void testJavaSide(RenderScript RS) { 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int subElemCount = simpleElem.getSubElementCount(); 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("subElemCount == 0", subElemCount == 0); 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("simpleElem.getDataKind() == USER", 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams simpleElem.getDataKind() == DataKind.USER); 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("simpleElem.getDataType() == FLOAT_32", 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams simpleElem.getDataType() == DataType.FLOAT_32); 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams subElemCount = complexElem.getSubElementCount(); 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("subElemCount == 10", subElemCount == 10); 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getDataKind() == USER", 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getDataKind() == DataKind.USER); 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElemsimpleElem.getDataType() == NONE", 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getDataType() == DataType.NONE); 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < subElemCount; i ++) { 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElement(i) != null", 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElement(i) != null); 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementName(i).equals(subElemNames[i])", 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementName(i).equals(subElemNames[i])); 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementArraySize(i) == subElemArraySizes[i]", 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementArraySize(i) == subElemArraySizes[i]); 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]", 119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]); 120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void run() { 124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams RenderScript pRS = RenderScript.create(mCtx); 125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams testScriptSide(pRS); 126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams testJavaSide(pRS); 127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams passTest(); 128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.destroy(); 129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 131