1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/* 2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2013 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_compat; 18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.Context; 20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.content.res.Resources; 21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.support.v8.renderscript.*; 22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class UT_element extends UnitTest { 24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private Resources mRes; 25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Element simpleElem; 27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams Element complexElem; 28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final String subElemNames[] = { 30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem0", 31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem1", 32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem2", 33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "arrayElem0", 34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "arrayElem1", 35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem3", 36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem4", 37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem5", 38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem6", 39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams "subElem_7", 40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final int subElemArraySizes[] = { 43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 2, 47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 5, 48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 1, 53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams final int subElemOffsets[] = { 56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 0, 57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 4, 58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 8, 59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 12, 60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 20, 61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 40, 62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 44, 63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 48, 64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 64, 65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 80, 66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams }; 67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams protected UT_element(RSTestCore rstc, Resources res, Context ctx) { 69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams super(rstc, "Element", ctx); 70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams mRes = res; 71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void initializeGlobals(RenderScript RS, ScriptC_element s) { 74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams simpleElem = Element.F32_3(RS); 75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem = ScriptField_ComplexStruct.createElement(RS); 76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_simpleElem(simpleElem); 77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.set_complexElem(complexElem); 78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ScriptField_ComplexStruct data = new ScriptField_ComplexStruct(RS, 1); 80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.bind_complexStruct(data); 81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void testScriptSide(RenderScript pRS) { 84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams ScriptC_element s = new ScriptC_element(pRS); 85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.setMessageHandler(mRsMessage); 86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams initializeGlobals(pRS, s); 87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams s.invoke_element_test(); 88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.finish(); 89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams waitForMessage(); 90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams private void testJavaSide(RenderScript RS) { 93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams int subElemCount = simpleElem.getSubElementCount(); 95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("subElemCount == 0", subElemCount == 0); 96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams subElemCount = complexElem.getSubElementCount(); 98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("subElemCount == 10", subElemCount == 10); 99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSizeBytes() == ScriptField_ComplexStruct.Item.sizeof", 100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getBytesSize() == ScriptField_ComplexStruct.Item.sizeof); 101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams for (int i = 0; i < subElemCount; i ++) { 103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElement(i) != null", 104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElement(i) != null); 105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementName(i).equals(subElemNames[i])", 106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementName(i).equals(subElemNames[i])); 107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementArraySize(i) == subElemArraySizes[i]", 108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementArraySize(i) == subElemArraySizes[i]); 109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams _RS_ASSERT("complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]", 110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams complexElem.getSubElementOffsetBytes(i) == subElemOffsets[i]); 111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams 114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams public void run() { 115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams RenderScript pRS = RenderScript.create(mCtx); 116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams testScriptSide(pRS); 117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams testJavaSide(pRS); 118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams passTest(); 119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams pRS.destroy(); 120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams } 121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams} 122