1ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines/*
2ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * Copyright (C) 2010 The Android Open Source Project
3ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines *
4ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
5ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * you may not use this file except in compliance with the License.
6ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * You may obtain a copy of the License at
7ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines *
8ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
9ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines *
10ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * Unless required by applicable law or agreed to in writing, software
11ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
12ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * See the License for the specific language governing permissions and
14ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines * limitations under the License.
15ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines */
16ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines
17ff4d70872aa48675a06fc4673c732860c1619758Stephen Hinespackage com.android.rs.test;
18ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines
196b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liaoimport android.content.Context;
20ff4d70872aa48675a06fc4673c732860c1619758Stephen Hinesimport android.content.res.Resources;
21ff4d70872aa48675a06fc4673c732860c1619758Stephen Hinesimport android.renderscript.*;
22ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines
23ff4d70872aa48675a06fc4673c732860c1619758Stephen Hinespublic class UT_primitives extends UnitTest {
24ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines    private Resources mRes;
25ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines
266b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao    protected UT_primitives(RSTestCore rstc, Resources res, Context ctx) {
276b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao        super(rstc, "Primitives", ctx);
28ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines        mRes = res;
29ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines    }
30ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines
31031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines    private boolean initializeGlobals(ScriptC_primitives s) {
32031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        float pF = s.get_floatTest();
33031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pF != 1.99f) {
34031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
35031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
36031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_floatTest(2.99f);
37031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
38031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        double pD = s.get_doubleTest();
39031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pD != 2.05) {
40031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
41031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
42031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_doubleTest(3.05);
43031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
44031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        byte pC = s.get_charTest();
45031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pC != -8) {
46031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
47031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
48031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_charTest((byte)-16);
49031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
50031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        short pS = s.get_shortTest();
51031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pS != -16) {
52031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
53031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
54031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_shortTest((short)-32);
55031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
56031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        int pI = s.get_intTest();
57031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pI != -32) {
58031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
59031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
60031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_intTest(-64);
61031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
622332340b0e4b4202962b5307194addf44cf88236Stephen Hines        long pL = s.get_longTest();
63031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pL != 17179869184l) {
64031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
65031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
662332340b0e4b4202962b5307194addf44cf88236Stephen Hines        s.set_longTest(17179869185l);
67031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
6852d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        long puL = s.get_ulongTest();
6952d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        if (puL != 4611686018427387904L) {
7052d836332f6aae74ed97fda1b53681f36710af64Stephen Hines            return false;
7152d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        }
7252d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        s.set_ulongTest(4611686018427387903L);
7352d836332f6aae74ed97fda1b53681f36710af64Stephen Hines
7452d836332f6aae74ed97fda1b53681f36710af64Stephen Hines
75031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        long pLL = s.get_longlongTest();
76031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (pLL != 68719476736L) {
77031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            return false;
78031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
79031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        s.set_longlongTest(68719476735L);
8052d836332f6aae74ed97fda1b53681f36710af64Stephen Hines
8152d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        long pu64 = s.get_uint64_tTest();
8252d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        if (pu64 != 117179869184l) {
8352d836332f6aae74ed97fda1b53681f36710af64Stephen Hines            return false;
8452d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        }
8552d836332f6aae74ed97fda1b53681f36710af64Stephen Hines        s.set_uint64_tTest(117179869185l);
86031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
87031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        return true;
88031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines    }
89031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines
90ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines    public void run() {
916b32fab1dbfd8bc1cc176557fe0a7b2ebd4966bdShih-wei Liao        RenderScript pRS = RenderScript.create(mCtx);
9258b2b2412864891686bf0e2c9940ad2b58808822Stephen Hines        ScriptC_primitives s = new ScriptC_primitives(pRS);
93bf6ef8d78fffbce6c1849a4a28fb3f4401ad039eJason Sams        pRS.setMessageHandler(mRsMessage);
94031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        if (!initializeGlobals(s)) {
95071abd1a5c0b405cd7989a625f34a1e5516db8b7Stephen Hines            failTest();
96031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        } else {
97031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            s.invoke_primitives_test(0, 0);
98031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            pRS.finish();
99031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines            waitForMessage();
100031ec58cfc7a20927302a5300eba3f5fc1709b50Stephen Hines        }
101ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines        pRS.destroy();
102ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines    }
103ff4d70872aa48675a06fc4673c732860c1619758Stephen Hines}
104