blob: 2ab91d9b885a714b63745751132b61b39905c48b [file] [log] [blame]
/*
* Copyright (C) 2008 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.util.cts;
import junit.framework.TestCase;
import android.util.DisplayMetrics;
import android.util.TypedValue;
public class TypedValueTest extends TestCase {
public void testConstructor() {
new TypedValue();
}
public void testGetFloat() {
final float EXPECTED = Float.intBitsToFloat(99);
TypedValue tv = new TypedValue();
tv.data = 99;
assertEquals(EXPECTED, tv.getFloat());
}
public void testComplexToDimension() {
DisplayMetrics dm = new DisplayMetrics();
dm.density = 1.1f;
dm.heightPixels = 100;
dm.scaledDensity = 2.1f;
dm.xdpi = 200f;
dm.ydpi = 300f;
final float EXPECTED = TypedValue.applyDimension((10 >> TypedValue.COMPLEX_UNIT_SHIFT)
& TypedValue.COMPLEX_UNIT_MASK, TypedValue.complexToFloat(10), dm);
assertEquals(EXPECTED, TypedValue.complexToDimension(10, dm));
assertEquals((int)EXPECTED, TypedValue.complexToDimensionPixelOffset(10, dm));
}
public void testSetTo() {
TypedValue tv1 = new TypedValue();
TypedValue tv2 = new TypedValue();
tv1.assetCookie = 1;
tv1.changingConfigurations = 2;
tv1.data = 3;
tv1.resourceId = 4;
tv1.string = "test";
tv1.type = 5;
tv2.setTo(tv1);
assertEquals(1, tv2.assetCookie);
assertEquals(-1, tv2.changingConfigurations);
assertEquals(3, tv2.data);
assertEquals(4, tv2.resourceId);
assertEquals("test", tv2.string);
assertEquals(5, tv2.type);
}
public void testGetFraction() {
// set the expected value
final float EXPECTED = TypedValue.complexToFraction(10, 1.1f, 2.1f) ;
TypedValue tv = new TypedValue();
tv.data = 10;
assertEquals(EXPECTED, tv.getFraction(1.1f, 2.1f));
}
public void testComplexToDimensionPixelSize() {
DisplayMetrics dm = new DisplayMetrics();
dm.density = 1.1f;
dm.heightPixels = 100;
dm.scaledDensity = 2.1f;
dm.xdpi = 200f;
dm.ydpi = 300f;
// static function just calculate and return it.
assertEquals(1, TypedValue.complexToDimensionPixelSize(1000, dm));
assertEquals(1, TypedValue.complexToDimensionPixelSize(9999, dm));
assertEquals(1, TypedValue.complexToDimensionPixelSize(5000, dm));
assertEquals(102, TypedValue.complexToDimensionPixelSize(3333, dm));
assertEquals(1, TypedValue.complexToDimensionPixelSize(2222, dm));
assertEquals(1, TypedValue.complexToDimensionPixelSize(1500, dm));
assertEquals(0, TypedValue.complexToDimensionPixelSize(10, dm));
}
public void testComplexToFraction() {
final int data1 = 1;
final float base1 = 1.1f;
final float pbase1 = 2.2f;
final float expected1 = 0.0f;
final int data2 = 100000;
final float base2 = 1.1f;
final float pbase2 = 2.2f;
final float expected2 = 0.013092041f;
assertEquals(expected1, TypedValue.complexToFraction(data1, base1, pbase1));
assertEquals(expected2, TypedValue.complexToFraction(data2, base2, pbase2));
}
public void testToString() {
TypedValue tv = new TypedValue();
tv.assetCookie = 1;
tv.changingConfigurations = 2;
tv.data = 3;
tv.resourceId = 4;
tv.string = "test";
tv.type = 5;
assertNotNull(tv.toString());
tv.type = 3;
assertNotNull(tv.toString());
}
public void testApplyDimension() {
DisplayMetrics dm = new DisplayMetrics();
dm.density = 1.1f;
dm.heightPixels = 100;
dm.scaledDensity = 2.1f;
dm.xdpi = 200f;
dm.ydpi = 300f;
assertEquals(10.0f, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 10, dm));
assertEquals(10 * dm.density, TypedValue
.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, dm));
assertEquals(10 * dm.scaledDensity, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
10, dm));
assertEquals(10 * dm.xdpi * (1.0f/72),
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, 10, dm));
assertEquals(10 * dm.xdpi, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_IN, 10, dm));
assertEquals(10 * dm.xdpi * (1.0f / 25.4f), TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_MM, 10, dm));
assertEquals(0.0f, TypedValue.applyDimension(-1, 10, dm));
}
public void testCoerceToString1() {
TypedValue tv = new TypedValue();
tv.assetCookie = 1;
tv.changingConfigurations = 2;
tv.data = 3;
tv.resourceId = 4;
tv.string = "test";
tv.type = 5;
assertNotNull(tv.coerceToString());
tv.type = 3;
assertNotNull(tv.coerceToString());
}
public void testCoerceToString2() {
assertNull(TypedValue.coerceToString(TypedValue.TYPE_NULL, 10));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_REFERENCE, 10));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_ATTRIBUTE, 10));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_FLOAT, 10));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_DIMENSION, 2));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_FRACTION, 1));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_INT_HEX, 10));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_INT_BOOLEAN, 1));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_INT_BOOLEAN, 0));
assertNotNull(TypedValue.coerceToString(TypedValue.TYPE_FIRST_COLOR_INT, 10));
assertNotNull(TypedValue.coerceToString(0x11, 10));
assertNull(TypedValue.coerceToString(-1, 10));
}
public void testComplexToFloat() {
final int complex1 = 1;
final float expected1 = 0.0f;
final int complex2 = 17;
final float expected2 = 0.0f;
final int complex3 = 9999;
final float expected3 = 39.0f;
assertEquals(expected1, TypedValue.complexToFloat(complex1));
assertEquals(expected2, TypedValue.complexToFloat(complex2));
assertEquals(expected3, TypedValue.complexToFloat(complex3));
}
public void testGetDimension() {
DisplayMetrics dm = new DisplayMetrics();
dm.density = 1.1f;
dm.heightPixels = 100;
dm.scaledDensity = 2.1f;
dm.xdpi = 200f;
dm.ydpi = 300f;
TypedValue tv = new TypedValue();
tv.data = 10;
tv.getDimension(dm);
assertEquals(TypedValue.complexToDimension(10, dm), tv.getDimension(dm));
}
}