11a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks/*
21a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Copyright (C) 2017 The Android Open Source Project
31a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
41a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Licensed under the Apache License, Version 2.0 (the "License");
51a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * you may not use this file except in compliance with the License.
61a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * You may obtain a copy of the License at
71a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
81a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *      http://www.apache.org/licenses/LICENSE-2.0
91a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks *
101a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * Unless required by applicable law or agreed to in writing, software
111a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * distributed under the License is distributed on an "AS IS" BASIS,
121a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * See the License for the specific language governing permissions and
141a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks * limitations under the License.
151a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks */
161a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
171a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubankspackage com.android.rs.unittest;
181a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
191a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksimport android.content.Context;
201a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanksimport android.renderscript.RenderScript;
211a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
221a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubankspublic class UT_unsigned extends UnitTest {
231a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
241a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    public UT_unsigned(Context ctx) {
251a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        super("Unsigned", ctx);
261a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
271a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
281a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    private boolean initializeGlobals(ScriptC_unsigned s) {
291a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        short pUC = s.get_uc();
301a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        if (pUC != 5) {
311a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks            return false;
321a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        }
331a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_uc((short) 129);
341a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
351a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        long pUI = s.get_ui();
361a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        if (pUI != 37) {
371a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks            return false;
381a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        }
391a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.set_ui(0x7fffffff);
401a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
411a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        return true;
421a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
431a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks
441a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    public void run() {
454cad330154b7df7c3adf126b9f4b2665191a23a4Arthur Eubanks        RenderScript pRS = createRenderScript(true);
461a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        ScriptC_unsigned s = new ScriptC_unsigned(pRS);
471a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        if (!initializeGlobals(s)) {
481a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks            failTest();
491a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        } else {
501a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks            s.invoke_unsigned_test();
511a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks            pRS.finish();
521a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        }
531a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        s.destroy();
541a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks        pRS.destroy();
551a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks    }
561a3e97c3ab51f602927a67d4abc50ffa6ce5ccbaArthur Eubanks}
57