1648a1c137663ef7207684d0d7009dd5518942111Stephen Hines/* 2648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Copyright (C) 2013 The Android Open Source Project 3648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 4648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * you may not use this file except in compliance with the License. 6648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * You may obtain a copy of the License at 7648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 8648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * 10648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * Unless required by applicable law or agreed to in writing, software 11648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * See the License for the specific language governing permissions and 14648a1c137663ef7207684d0d7009dd5518942111Stephen Hines * limitations under the License. 15648a1c137663ef7207684d0d7009dd5518942111Stephen Hines */ 16648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 17648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespackage com.android.rs.test_compatlegacy; 18648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 19648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.Context; 20648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.content.res.Resources; 21648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.support.v8.renderscript.*; 22648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport android.util.Log; 23648a1c137663ef7207684d0d7009dd5518942111Stephen Hinesimport java.util.Arrays; 24648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 25648a1c137663ef7207684d0d7009dd5518942111Stephen Hinespublic class UT_bug_char extends UnitTest { 26648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private Resources mRes; 27648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 28648a1c137663ef7207684d0d7009dd5518942111Stephen Hines protected UT_bug_char(RSTestCore rstc, Resources res, Context ctx) { 29648a1c137663ef7207684d0d7009dd5518942111Stephen Hines super(rstc, "Bug Char", ctx); 30648a1c137663ef7207684d0d7009dd5518942111Stephen Hines mRes = res; 31648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 32648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 33648a1c137663ef7207684d0d7009dd5518942111Stephen Hines // packing functions 34648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private Byte2 pack_b2(byte[] val) { 35648a1c137663ef7207684d0d7009dd5518942111Stephen Hines assert val.length == 2; 36648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Log.i("bug_char", "pack_b2 " + val[0] + " " + val[1]); 37648a1c137663ef7207684d0d7009dd5518942111Stephen Hines return new Byte2(val[0], val[1]); 38648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 39648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 40648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private byte min(byte v1, byte v2) { 41648a1c137663ef7207684d0d7009dd5518942111Stephen Hines return v1 < v2 ? v1 : v2; 42648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 43648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private byte[] min(byte[] v1, byte[] v2) { 44648a1c137663ef7207684d0d7009dd5518942111Stephen Hines assert v1.length == v2.length; 45648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte[] rv = new byte[v1.length]; 46648a1c137663ef7207684d0d7009dd5518942111Stephen Hines for (int i = 0; i < v1.length; ++i) 47648a1c137663ef7207684d0d7009dd5518942111Stephen Hines rv[i] = min(v1[i], v2[i]); 48648a1c137663ef7207684d0d7009dd5518942111Stephen Hines return rv; 49648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 50648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 51648a1c137663ef7207684d0d7009dd5518942111Stephen Hines private void initializeValues(ScriptC_bug_char s) { 52648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte rand_sc1_0 = (byte)7; 53648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte[] rand_sc2_0 = new byte[2]; 54648a1c137663ef7207684d0d7009dd5518942111Stephen Hines rand_sc2_0[0] = 11; 55648a1c137663ef7207684d0d7009dd5518942111Stephen Hines rand_sc2_0[1] = 21; 56648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Log.i("bug_char", "Generated sc2_0 to " + Arrays.toString(rand_sc2_0)); 57648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte rand_sc1_1 = (byte)10; 58648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte[] rand_sc2_1 = new byte[2]; 59648a1c137663ef7207684d0d7009dd5518942111Stephen Hines rand_sc2_1[0] = 13; 60648a1c137663ef7207684d0d7009dd5518942111Stephen Hines rand_sc2_1[1] = 15; 61648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Log.i("bug_char", "Generated sc2_1 to " + Arrays.toString(rand_sc2_1)); 62648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 63648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_rand_sc1_0(rand_sc1_0); 64648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_rand_sc2_0(pack_b2(rand_sc2_0)); 65648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_rand_sc1_1(rand_sc1_1); 66648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_rand_sc2_1(pack_b2(rand_sc2_1)); 67648a1c137663ef7207684d0d7009dd5518942111Stephen Hines // Set results for min 68648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_min_rand_sc1_sc1(min(rand_sc1_0, rand_sc1_1)); 69648a1c137663ef7207684d0d7009dd5518942111Stephen Hines byte[] min_rand_sc2_raw = min(rand_sc2_0, rand_sc2_1); 70648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Log.i("bug_char", "Generating min_rand_sc2_sc2 to " + 71648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Arrays.toString(min_rand_sc2_raw)); 72648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Byte2 min_rand_sc2 = pack_b2(min_rand_sc2_raw); 73648a1c137663ef7207684d0d7009dd5518942111Stephen Hines Log.i("bug_char", "Setting min_rand_sc2_sc2 to [" + min_rand_sc2.x + 74648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ", " + min_rand_sc2.y + "]"); 75648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.set_min_rand_sc2_sc2(min_rand_sc2); 76648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 77648a1c137663ef7207684d0d7009dd5518942111Stephen Hines 78648a1c137663ef7207684d0d7009dd5518942111Stephen Hines public void run() { 79648a1c137663ef7207684d0d7009dd5518942111Stephen Hines RenderScript pRS = RenderScript.create(mCtx); 80648a1c137663ef7207684d0d7009dd5518942111Stephen Hines ScriptC_bug_char s = new ScriptC_bug_char(pRS); 81648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.setMessageHandler(mRsMessage); 82648a1c137663ef7207684d0d7009dd5518942111Stephen Hines initializeValues(s); 83648a1c137663ef7207684d0d7009dd5518942111Stephen Hines s.invoke_bug_char_test(); 84648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.finish(); 85648a1c137663ef7207684d0d7009dd5518942111Stephen Hines waitForMessage(); 86648a1c137663ef7207684d0d7009dd5518942111Stephen Hines pRS.destroy(); 87648a1c137663ef7207684d0d7009dd5518942111Stephen Hines } 88648a1c137663ef7207684d0d7009dd5518942111Stephen Hines} 89