blob: fa30f9fe498c374e993eecbd54134090dc7c7174 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.renderscript.cts;
import android.renderscript.Sampler;
import android.renderscript.Sampler.Value;
public class SamplerTest extends RSBaseGraphics {
Sampler.Value[] mMinValues;
Sampler.Value[] mMagValues;
Sampler.Value[] mWrapValues;
@Override
protected void setUp() throws Exception {
super.setUp();
mMinValues = new Sampler.Value[4];
mMinValues[0] = Sampler.Value.NEAREST;
mMinValues[1] = Sampler.Value.LINEAR;
mMinValues[2] = Sampler.Value.LINEAR_MIP_LINEAR;
mMinValues[3] = Sampler.Value.LINEAR_MIP_NEAREST;
mMagValues = new Sampler.Value[2];
mMagValues[0] = Sampler.Value.NEAREST;
mMagValues[1] = Sampler.Value.LINEAR;
mWrapValues = new Sampler.Value[2];
mWrapValues[0] = Sampler.Value.CLAMP;
mWrapValues[1] = Sampler.Value.WRAP;
}
@Override
protected void tearDown() throws Exception {
mMinValues = null;
mMagValues = null;
mWrapValues = null;
super.tearDown();
}
boolean contains(Sampler.Value[] array, Sampler.Value val) {
for (int i = 0; i < array.length; i ++) {
if (array[i] == val) {
return true;
}
}
return false;
}
public void testSamplerBuilder() {
for (int aniso = 1; aniso <= 4; aniso++) {
for (Sampler.Value minV : Sampler.Value.values()) {
for (Sampler.Value magV : Sampler.Value.values()) {
for (Sampler.Value wrapSV : Sampler.Value.values()) {
for (Sampler.Value wrapTV : Sampler.Value.values()) {
Sampler.Builder b = new Sampler.Builder(mRS);
b.setAnisotropy(aniso);
// Some value combinations are illegal
boolean validMin = contains(mMinValues, minV);
boolean validMag = contains(mMagValues, magV);
boolean validS = contains(mWrapValues, wrapSV);
boolean validT = contains(mWrapValues, wrapTV);
try {
b.setMinification(minV);
} catch (IllegalArgumentException e) {
assertFalse(validMin);
}
try {
b.setMagnification(magV);
} catch (IllegalArgumentException e) {
assertFalse(validMag);
}
try {
b.setWrapS(wrapSV);
} catch (IllegalArgumentException e) {
assertFalse(validS);
}
try {
b.setWrapT(wrapTV);
} catch (IllegalArgumentException e) {
assertFalse(validT);
}
if (validMin && validMag && validS && validT) {
b.create();
}
}
}
}
}
}
}
public void testPrebuiltSamplers() {
assertTrue(Sampler.CLAMP_LINEAR(mRS) != null);
assertTrue(Sampler.CLAMP_LINEAR_MIP_LINEAR(mRS) != null);
assertTrue(Sampler.CLAMP_NEAREST(mRS) != null);
assertTrue(Sampler.WRAP_LINEAR(mRS) != null);
assertTrue(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS) != null);
assertTrue(Sampler.WRAP_NEAREST(mRS) != null);
assertTrue(Sampler.MIRRORED_REPEAT_NEAREST(mRS) != null);
assertTrue(Sampler.MIRRORED_REPEAT_LINEAR(mRS) != null);
assertTrue(Sampler.MIRRORED_REPEAT_LINEAR_MIP_LINEAR(mRS) != null);
}
public void testSamplerValue() {
assertEquals(Value.NEAREST, Value.valueOf("NEAREST"));
assertEquals(Value.LINEAR, Value.valueOf("LINEAR"));
assertEquals(Value.LINEAR_MIP_LINEAR, Value.valueOf("LINEAR_MIP_LINEAR"));
assertEquals(Value.LINEAR_MIP_NEAREST, Value.valueOf("LINEAR_MIP_NEAREST"));
assertEquals(Value.WRAP, Value.valueOf("WRAP"));
assertEquals(Value.CLAMP, Value.valueOf("CLAMP"));
assertEquals(Value.MIRRORED_REPEAT, Value.valueOf("MIRRORED_REPEAT"));
// Make sure no new enums are added
assertEquals(7, Value.values().length);
}
}