11222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines/* 2473a2048d3c54fe38b6f9a58457645c9c472b238Stephen Hines * Copyright (C) 2011-2012 The Android Open Source Project 31222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * 41222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 51222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * you may not use this file except in compliance with the License. 61222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * You may obtain a copy of the License at 71222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * 81222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 91222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * 101222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * Unless required by applicable law or agreed to in writing, software 111222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 121222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * See the License for the specific language governing permissions and 141222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines * limitations under the License. 151222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines */ 161222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 171222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hinespackage com.android.rs.test; 181222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 191222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hinesimport android.content.Context; 201222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hinesimport android.content.res.Resources; 211222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hinesimport android.renderscript.*; 221222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 231222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hinespublic class UT_foreach extends UnitTest { 241222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines private Resources mRes; 251222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines private Allocation A; 261222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 271222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines protected UT_foreach(RSTestCore rstc, Resources res, Context ctx) { 281222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines super(rstc, "ForEach", ctx); 291222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines mRes = res; 301222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines } 311222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 321222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines private void initializeGlobals(RenderScript RS, ScriptC_foreach s) { 331222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS)); 341222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines int X = 5; 351222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines int Y = 7; 361222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines s.set_dimX(X); 371222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines s.set_dimY(Y); 381222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines typeBuilder.setX(X).setY(Y); 391222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines A = Allocation.createTyped(RS, typeBuilder.create()); 401222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines s.bind_a(A); 411222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 421222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines return; 431222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines } 441222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines 451222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines public void run() { 461222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines RenderScript pRS = RenderScript.create(mCtx); 4758b2b2412864891686bf0e2c9940ad2b58808822Stephen Hines ScriptC_foreach s = new ScriptC_foreach(pRS); 481222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines pRS.setMessageHandler(mRsMessage); 491222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines initializeGlobals(pRS, s); 501222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines s.forEach_root(A); 51473a2048d3c54fe38b6f9a58457645c9c472b238Stephen Hines s.invoke_verify_root(); 52473a2048d3c54fe38b6f9a58457645c9c472b238Stephen Hines s.forEach_foo(A, A); 53473a2048d3c54fe38b6f9a58457645c9c472b238Stephen Hines s.invoke_verify_foo(); 541222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines s.invoke_foreach_test(); 551222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines pRS.finish(); 561222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines waitForMessage(); 571222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines pRS.destroy(); 581222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines } 591222393e357e97a2218bae8a2a41b7d8031d1171Stephen Hines} 60