blob: 74a6b8de3d5b3460aba900b5d5b401c9bebb8f53 [file] [log] [blame]
/*
* Copyright (C) 2007 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 com.android.unit_tests.content;
import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.TypedValue;
import com.android.unit_tests.R;
public class FractionTest extends AndroidTestCase {
private Resources mResources;
private final TypedValue mValue = new TypedValue();
@Override
protected void setUp() throws Exception {
super.setUp();
mResources = mContext.getResources();
}
@SmallTest
public void testFractions() throws Exception {
tryFraction(R.dimen.frac100perc, 1, 1, 1);
tryFraction(R.dimen.frac1perc, 1, 1, .01f);
tryFraction(R.dimen.fracp1perc, 1, 1, .001f);
tryFraction(R.dimen.fracp01perc, 1, 1, .0001f);
tryFraction(R.dimen.frac0perc, 1, 1, 0);
tryFraction(R.dimen.frac1p1perc, 1, 1, .011f);
tryFraction(R.dimen.frac100p1perc, 1, 1, 1.001f);
tryFraction(R.dimen.frac25510perc, 1, 1, 255.1f);
tryFraction(R.dimen.frac25610perc, 1, 1, 256.1f);
tryFraction(R.dimen.frac6553510perc, 1, 1, 65535.1f);
tryFraction(R.dimen.frac6553610perc, 1, 1, 65536.1f);
tryFraction(R.dimen.frac100perc, 100, 1, 100);
tryFraction(R.dimen.frac1perc, 100, 1, .01f * 100);
tryFraction(R.dimen.fracp1perc, 100, 1, .001f * 100);
tryFraction(R.dimen.fracp01perc, 100, 1, .0001f * 100);
tryFraction(R.dimen.frac0perc, 100, 1, 0);
tryFraction(R.dimen.frac1p1perc, 100, 1, .011f * 100);
tryFraction(R.dimen.frac100p1perc, 100, 1, 1.001f * 100);
tryFraction(R.dimen.frac25510perc, 100, 1, 255.1f * 100);
tryFraction(R.dimen.frac25610perc, 100, 1, 256.1f * 100);
tryFraction(R.dimen.frac6553510perc, 100, 1, 65535.1f * 100);
tryFraction(R.dimen.frac6553610perc, 100, 1, 65536.1f * 100);
tryFraction(R.dimen.frac100pperc, 100, 2, 2);
tryFraction(R.dimen.frac1pperc, 100, 2, .01f * 2);
tryFraction(R.dimen.fracp1pperc, 100, 2, .001f * 2);
tryFraction(R.dimen.fracp01pperc, 100, 2, .0001f * 2);
tryFraction(R.dimen.frac0pperc, 100, 2, 0);
tryFraction(R.dimen.frac1p1pperc, 100, 2, .011f * 2);
tryFraction(R.dimen.frac100p1pperc, 100, 2, 1.001f * 2);
tryFraction(R.dimen.frac25510pperc, 100, 2, 255.1f * 2);
tryFraction(R.dimen.frac25610pperc, 100, 2, 256.1f * 2);
tryFraction(R.dimen.frac6553510pperc, 100, 2, 65535.1f * 2);
tryFraction(R.dimen.frac6553610pperc, 100, 2, 65536.1f * 2);
}
private void tryFraction(int resid, float base, float pbase, float expected) {
mResources.getValue(resid, mValue, true);
float res = mValue.getFraction(base, pbase);
float diff = Math.abs(expected - res);
float prec = expected * 1e-4f;
if (prec < 1e-5f) {
prec = 1e-5f;
}
//System.out.println(
// "Res 0x" + Integer.toHexString(resid) + ": got=" + res
// + ", expected=" + expected + ", diff=" + diff);
assertFalse("Expecting value " + expected + " got " + res
+ ": in resource 0x" + Integer.toHexString(resid)
+ " " + mValue,
diff > prec);
}
}