1ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach/* 2ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Copyright (C) 2009 The Android Open Source Project 3ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * 4ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Licensed under the Apache License, Version 2.0 (the "License"); 5ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * you may not use this file except in compliance with the License. 6ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * You may obtain a copy of the License at 7ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * 8ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * http://www.apache.org/licenses/LICENSE-2.0 9ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * 10ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * Unless required by applicable law or agreed to in writing, software 11ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * distributed under the License is distributed on an "AS IS" BASIS, 12ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * See the License for the specific language governing permissions and 14ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach * limitations under the License. 15ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach */ 16ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 17ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachpackage android.content.res.cts; 18ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 19ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.content.res.Resources; 20ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.test.AndroidTestCase; 21ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.test.suitebuilder.annotation.SmallTest; 22ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachimport android.util.TypedValue; 23c83e6c76c6d21f12521085f40b66d1e62ee9ed45Nash Lincolnimport android.content.cts.R; 24ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 25ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubachpublic class FractionTest extends AndroidTestCase { 26ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 27ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach private Resources mResources; 28ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach private TypedValue mValue; 29ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 30ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach @Override 31ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach protected void setUp() throws Exception { 32ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach super.setUp(); 33ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach mResources = mContext.getResources(); 34ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach mValue = new TypedValue(); 35ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach } 36ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 37ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach @SmallTest 38ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach public void testFractions() throws Exception { 39ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100perc, 1, 1, 1); 40ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1perc, 1, 1, .01f); 41ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp1perc, 1, 1, .001f); 42ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp01perc, 1, 1, .0001f); 43ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac0perc, 1, 1, 0); 44ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1p1perc, 1, 1, .011f); 45ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100p1perc, 1, 1, 1.001f); 46ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25510perc, 1, 1, 255.1f); 47ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25610perc, 1, 1, 256.1f); 48ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553510perc, 1, 1, 65535.1f); 49ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553610perc, 1, 1, 65536.1f); 50ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 51ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100perc, 100, 1, 100); 52ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1perc, 100, 1, .01f * 100); 53ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp1perc, 100, 1, .001f * 100); 54ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp01perc, 100, 1, .0001f * 100); 55ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac0perc, 100, 1, 0); 56ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1p1perc, 100, 1, .011f * 100); 57ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100p1perc, 100, 1, 1.001f * 100); 58ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25510perc, 100, 1, 255.1f * 100); 59ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25610perc, 100, 1, 256.1f * 100); 60ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553510perc, 100, 1, 65535.1f * 100); 61ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553610perc, 100, 1, 65536.1f * 100); 62ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 63ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100pperc, 100, 2, 2); 64ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1pperc, 100, 2, .01f * 2); 65ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp1pperc, 100, 2, .001f * 2); 66ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.fracp01pperc, 100, 2, .0001f * 2); 67ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac0pperc, 100, 2, 0); 68ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac1p1pperc, 100, 2, .011f * 2); 69ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac100p1pperc, 100, 2, 1.001f * 2); 70ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25510pperc, 100, 2, 255.1f * 2); 71ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac25610pperc, 100, 2, 256.1f * 2); 72ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553510pperc, 100, 2, 65535.1f * 2); 73ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach tryFraction(R.dimen.frac6553610pperc, 100, 2, 65536.1f * 2); 74ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach } 75ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 76ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach private void tryFraction(final int resid, final float base, final float pbase, 77ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach final float expected) { 78ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach mResources.getValue(resid, mValue, true); 79ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach float res = mValue.getFraction(base, pbase); 80ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach float diff = Math.abs(expected - res); 81ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach float prec = expected * 1e-4f; 82ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach if (prec < 1e-5f) { 83ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach prec = 1e-5f; 84ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach } 85ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 86ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach assertFalse("Expecting value " + expected + " got " + res + ": in resource 0x" 87ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach + Integer.toHexString(resid) + " " + mValue, diff > prec); 88ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach } 89ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach} 90ea99ab0ba2830711b1f074f34f647e075da1c38dPhil Dubach 91