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