175f0d3110b04346b901771f96ce15cdbe907278fYang Ni/* 275f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Copyright (C) 2016 The Android Open Source Project 375f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 475f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Licensed under the Apache License, Version 2.0 (the "License"); 575f0d3110b04346b901771f96ce15cdbe907278fYang Ni * you may not use this file except in compliance with the License. 675f0d3110b04346b901771f96ce15cdbe907278fYang Ni * You may obtain a copy of the License at 775f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 875f0d3110b04346b901771f96ce15cdbe907278fYang Ni * http://www.apache.org/licenses/LICENSE-2.0 975f0d3110b04346b901771f96ce15cdbe907278fYang Ni * 1075f0d3110b04346b901771f96ce15cdbe907278fYang Ni * Unless required by applicable law or agreed to in writing, software 1175f0d3110b04346b901771f96ce15cdbe907278fYang Ni * distributed under the License is distributed on an "AS IS" BASIS, 1275f0d3110b04346b901771f96ce15cdbe907278fYang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1375f0d3110b04346b901771f96ce15cdbe907278fYang Ni * See the License for the specific language governing permissions and 1475f0d3110b04346b901771f96ce15cdbe907278fYang Ni * limitations under the License. 1575f0d3110b04346b901771f96ce15cdbe907278fYang Ni */ 1675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 1775f0d3110b04346b901771f96ce15cdbe907278fYang Nipackage com.android.rs.rsov.test; 1875f0d3110b04346b901771f96ce15cdbe907278fYang Ni 1975f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.content.Context; 2075f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.renderscript.Allocation; 2175f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.renderscript.Element; 2275f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.renderscript.RenderScript; 2375f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.renderscript.Type; 2475f0d3110b04346b901771f96ce15cdbe907278fYang Niimport android.util.Log; 2575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 2675f0d3110b04346b901771f96ce15cdbe907278fYang Nipublic class UT_modulo extends UnitTest { 2775f0d3110b04346b901771f96ce15cdbe907278fYang Ni private Allocation A; 2875f0d3110b04346b901771f96ce15cdbe907278fYang Ni private Allocation B; 2975f0d3110b04346b901771f96ce15cdbe907278fYang Ni private final int X = 96; 3075f0d3110b04346b901771f96ce15cdbe907278fYang Ni private final int Y = 64; 3175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 3275f0d3110b04346b901771f96ce15cdbe907278fYang Ni protected UT_modulo(RSoVTestCore rstc, Context ctx) { 3375f0d3110b04346b901771f96ce15cdbe907278fYang Ni super(rstc, "modulo", ctx); 3475f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 3575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 3675f0d3110b04346b901771f96ce15cdbe907278fYang Ni private void initializeGlobals(RenderScript RS, ScriptC_modulo s) { 3775f0d3110b04346b901771f96ce15cdbe907278fYang Ni Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS)); 3875f0d3110b04346b901771f96ce15cdbe907278fYang Ni typeBuilder.setX(X); 3975f0d3110b04346b901771f96ce15cdbe907278fYang Ni typeBuilder.setY(Y); 4075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 4175f0d3110b04346b901771f96ce15cdbe907278fYang Ni A = Allocation.createTyped(RS, typeBuilder.create()); 4275f0d3110b04346b901771f96ce15cdbe907278fYang Ni B = Allocation.createTyped(RS, typeBuilder.create()); 4375f0d3110b04346b901771f96ce15cdbe907278fYang Ni return; 4475f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 4575f0d3110b04346b901771f96ce15cdbe907278fYang Ni 4675f0d3110b04346b901771f96ce15cdbe907278fYang Ni public void run() { 4775f0d3110b04346b901771f96ce15cdbe907278fYang Ni RenderScript pRS = RenderScript.create(mCtx); 4875f0d3110b04346b901771f96ce15cdbe907278fYang Ni ScriptC_modulo s = new ScriptC_modulo(pRS); 4975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 5075f0d3110b04346b901771f96ce15cdbe907278fYang Ni initializeGlobals(pRS, s); 5175f0d3110b04346b901771f96ce15cdbe907278fYang Ni 5275f0d3110b04346b901771f96ce15cdbe907278fYang Ni int a[] = new int[X*Y]; 5375f0d3110b04346b901771f96ce15cdbe907278fYang Ni int b[] = new int[X*Y]; 5475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 5575f0d3110b04346b901771f96ce15cdbe907278fYang Ni java.util.Random rand = new java.util.Random(); 5675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 5775f0d3110b04346b901771f96ce15cdbe907278fYang Ni for (int i = 0; i < X * Y; i++) { 5875f0d3110b04346b901771f96ce15cdbe907278fYang Ni a[i] = rand.nextInt(65536); 5975f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 6075f0d3110b04346b901771f96ce15cdbe907278fYang Ni 6175f0d3110b04346b901771f96ce15cdbe907278fYang Ni A.copyFrom(a); 6275f0d3110b04346b901771f96ce15cdbe907278fYang Ni 6375f0d3110b04346b901771f96ce15cdbe907278fYang Ni s.forEach_modulo(A, B); 6475f0d3110b04346b901771f96ce15cdbe907278fYang Ni 6575f0d3110b04346b901771f96ce15cdbe907278fYang Ni B.copyTo(b); 6675f0d3110b04346b901771f96ce15cdbe907278fYang Ni 6775f0d3110b04346b901771f96ce15cdbe907278fYang Ni pRS.finish(); 6875f0d3110b04346b901771f96ce15cdbe907278fYang Ni pRS.destroy(); 6975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 7075f0d3110b04346b901771f96ce15cdbe907278fYang Ni boolean failed = false; 7175f0d3110b04346b901771f96ce15cdbe907278fYang Ni for (int i = 0; i < X * Y; i++) { 7275f0d3110b04346b901771f96ce15cdbe907278fYang Ni int expected = a[i] % 256; 7375f0d3110b04346b901771f96ce15cdbe907278fYang Ni if (b[i] != expected) { 7475f0d3110b04346b901771f96ce15cdbe907278fYang Ni Log.e(name, "expects " + expected + " got " + b[i]); 7575f0d3110b04346b901771f96ce15cdbe907278fYang Ni failed = true; 7675f0d3110b04346b901771f96ce15cdbe907278fYang Ni break; 7775f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 7875f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 7975f0d3110b04346b901771f96ce15cdbe907278fYang Ni 8075f0d3110b04346b901771f96ce15cdbe907278fYang Ni if (failed) { 8175f0d3110b04346b901771f96ce15cdbe907278fYang Ni failTest(); 8275f0d3110b04346b901771f96ce15cdbe907278fYang Ni } else { 8375f0d3110b04346b901771f96ce15cdbe907278fYang Ni passTest(); 8475f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 8575f0d3110b04346b901771f96ce15cdbe907278fYang Ni } 8675f0d3110b04346b901771f96ce15cdbe907278fYang Ni} 87