1b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross/* 2b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * Copyright (C) 2016 The Android Open Source Project 3b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * 4b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * Licensed under the Apache License, Version 2.0 (the "License"); 5b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * you may not use this file except in compliance with the License. 6b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * You may obtain a copy of the License at 7b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * 8b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * http://www.apache.org/licenses/LICENSE-2.0 9b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * 10b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * Unless required by applicable law or agreed to in writing, software 11b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * distributed under the License is distributed on an "AS IS" BASIS, 12b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * See the License for the specific language governing permissions and 14b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross * limitations under the License. 15b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross */ 16b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 17b24687864a68b416fc584a2af1a10af4f7d579bfDavid Grosspackage com.android.rs.test; 18b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 19b24687864a68b416fc584a2af1a10af4f7d579bfDavid Grossimport android.content.Context; 20b24687864a68b416fc584a2af1a10af4f7d579bfDavid Grossimport android.renderscript.RenderScript; 21b24687864a68b416fc584a2af1a10af4f7d579bfDavid Grossimport java.util.Random; 22b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 23b24687864a68b416fc584a2af1a10af4f7d579bfDavid Grosspublic class UT_struct_field extends UnitTest { 24b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 25b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross Random r; 26b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 27b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross protected UT_struct_field(RSTestCore rstc, Context ctx) { 28b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross super(rstc, "Structure-typed Fields", ctx); 29b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross r = new Random(0); 30b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross } 31b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 32b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross private ScriptField_InnerOne.Item makeInnerOne() { 33b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross ScriptField_InnerOne.Item innerOne = new ScriptField_InnerOne.Item(); 34b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross innerOne.x = r.nextInt(); 35b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross innerOne.y = r.nextInt(); 36b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross innerOne.f = r.nextFloat(); 37b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross return innerOne; 38b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross } 39b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 40b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross private ScriptField_InnerTwo.Item makeInnerTwo() { 41b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross ScriptField_InnerTwo.Item innerTwo = new ScriptField_InnerTwo.Item(); 42b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross innerTwo.z = (byte)r.nextInt(); 43b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross innerTwo.innerOne = makeInnerOne(); 44b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross return innerTwo; 45b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross } 46b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 47b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross public void run() { 48b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross RenderScript pRS = RenderScript.create(mCtx); 49b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross ScriptC_struct_field s = new ScriptC_struct_field(pRS); 50b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross pRS.setMessageHandler(mRsMessage); 51b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 52b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross ScriptField_Outer.Item outer = new ScriptField_Outer.Item(); 53b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneA = makeInnerOne(); 54b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.l = r.nextLong(); 55b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneB = makeInnerOne(); 56b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross for (int i = 0; i < 3; ++i) 57b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[i] = makeInnerTwo(); 58b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross for (int i = 0; i < 2; ++i) 59b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo2[i] = makeInnerTwo(); 60b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross for (int i = 0; i < 4; ++i) 61b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOne4[i] = makeInnerOne(); 62b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneC = makeInnerOne(); 63b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross s.set_outer(outer); 64b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 65b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross s.invoke_checkOuter( 66b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneA.x, outer.innerOneA.y, outer.innerOneA.f, 67b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.l, 68b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneB.x, outer.innerOneB.y, outer.innerOneB.f, 69b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[0].z, 70b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[0].innerOne.x, outer.innerTwo3[0].innerOne.y, outer.innerTwo3[0].innerOne.f, 71b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[1].z, 72b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[1].innerOne.x, outer.innerTwo3[1].innerOne.y, outer.innerTwo3[1].innerOne.f, 73b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[2].z, 74b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo3[2].innerOne.x, outer.innerTwo3[2].innerOne.y, outer.innerTwo3[2].innerOne.f, 75b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo2[0].z, 76b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo2[0].innerOne.x, outer.innerTwo2[0].innerOne.y, outer.innerTwo2[0].innerOne.f, 77b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo2[1].z, 78b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerTwo2[1].innerOne.x, outer.innerTwo2[1].innerOne.y, outer.innerTwo2[1].innerOne.f, 79b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOne4[0].x, outer.innerOne4[0].y, outer.innerOne4[0].f, 80b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOne4[1].x, outer.innerOne4[1].y, outer.innerOne4[1].f, 81b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOne4[2].x, outer.innerOne4[2].y, outer.innerOne4[2].f, 82b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOne4[3].x, outer.innerOne4[3].y, outer.innerOne4[3].f, 83b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross outer.innerOneC.x, outer.innerOneC.y, outer.innerOneC.f); 84b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross 85b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross pRS.finish(); 86b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross waitForMessage(); 87b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross pRS.destroy(); 88b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross } 89b24687864a68b416fc584a2af1a10af4f7d579bfDavid Gross} 90