141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines/*
241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * Copyright (C) 2010 The Android Open Source Project
341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines *
441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * you may not use this file except in compliance with the License.
641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * You may obtain a copy of the License at
741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines *
841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines *
1041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * Unless required by applicable law or agreed to in writing, software
1141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
1241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * See the License for the specific language governing permissions and
1441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines * limitations under the License.
1541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines */
1641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
1741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hinespackage com.android.rs.test_v14;
1841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
1941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hinesimport android.content.Context;
2041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hinesimport android.content.res.Resources;
2141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hinesimport android.renderscript.*;
2241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
2341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hinespublic class UT_primitives extends UnitTest {
2441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    private Resources mRes;
2541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
2641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    protected UT_primitives(RSTestCore rstc, Resources res, Context ctx) {
2741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        super(rstc, "Primitives", ctx);
2841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        mRes = res;
2941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    }
3041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
3141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    private boolean initializeGlobals(ScriptC_primitives s) {
3241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        float pF = s.get_floatTest();
3341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pF != 1.99f) {
3441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
3541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
3641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_floatTest(2.99f);
3741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
3841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        double pD = s.get_doubleTest();
3941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pD != 2.05) {
4041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
4141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
4241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_doubleTest(3.05);
4341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
4441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        byte pC = s.get_charTest();
4541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pC != -8) {
4641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
4741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
4841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_charTest((byte)-16);
4941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
5041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        short pS = s.get_shortTest();
5141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pS != -16) {
5241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
5341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
5441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_shortTest((short)-32);
5541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
5641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        int pI = s.get_intTest();
5741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pI != -32) {
5841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
5941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
6041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_intTest(-64);
6141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
6241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        long pL = s.get_longTest();
6341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pL != 17179869184l) {
6441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
6541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
6641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_longTest(17179869185l);
6741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
6841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        long puL = s.get_ulongTest();
6941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (puL != 4611686018427387904L) {
7041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
7141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
7241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_ulongTest(4611686018427387903L);
7341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
7441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
7541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        long pLL = s.get_longlongTest();
7641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pLL != 68719476736L) {
7741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
7841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
7941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_longlongTest(68719476735L);
8041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
8141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        long pu64 = s.get_uint64_tTest();
8241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (pu64 != 117179869184l) {
8341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            return false;
8441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
8541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        s.set_uint64_tTest(117179869185l);
8641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
8741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        return true;
8841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    }
8941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines
9041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    public void run() {
9141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        RenderScript pRS = RenderScript.create(mCtx);
9241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        ScriptC_primitives s = new ScriptC_primitives(pRS, mRes, R.raw.primitives);
9341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        pRS.setMessageHandler(mRsMessage);
9441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        if (!initializeGlobals(s)) {
9541f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            // initializeGlobals failed
9641f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            result = -1;
9741f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        } else {
9841f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            s.invoke_primitives_test(0, 0);
9941f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            pRS.finish();
10041f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines            waitForMessage();
10141f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        }
10241f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines        pRS.destroy();
10341f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines    }
10441f1e5edee2d2663ae46b64528894896ff96fa3dStephen Hines}
105