1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.common; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.test.AndroidTestCase; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.test.suitebuilder.annotation.SmallTest; 21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.util.Log; 22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic class UtilsTest extends AndroidTestCase { 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "UtilsTest"; 25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int [] testData = new int [] { 27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin /* outWidth, outHeight, minSideLength, maxNumOfPixels, sample size */ 28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1, 1, BitmapUtils.UNCONSTRAINED, BitmapUtils.UNCONSTRAINED, 1, 29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 1, 1, 1, 1, 1, 30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000, 1, 31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 2500, 2, 32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 99, 66, 33, 10000, 2, 33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 66, 99, 33, 10000, 2, 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 99, 66, 34, 10000, 1, 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 99, 66, 22, 10000, 4, 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 99, 66, 16, 10000, 4, 37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 10000, 10000, 20000, 1000000, 16, 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000, 1, // 1 41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 50, 10000, 2, // 2 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 30, 10000, 4, // 3->4 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 22, 10000, 4, // 4 44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 20, 10000, 8, // 5->8 45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 11, 10000, 16, // 9->16 46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 5, 10000, 24, // 20->24 47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 2, 10000, 56, // 50->56 48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 - 1, 2, // a bit less than 1 50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (2 * 2) - 1, 4, // a bit less than 2 51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (3 * 3) - 1, 4, // a bit less than 3 52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (4 * 4) - 1, 8, // a bit less than 4 53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (8 * 8) - 1, 16, // a bit less than 8 54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (16 * 16) - 1, 24, // a bit less than 16 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (24 * 24) - 1, 32, // a bit less than 24 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 100, 100, 100, 10000 / (32 * 32) - 1, 40, // a bit less than 32 57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 480, BitmapUtils.UNCONSTRAINED, 1, // 1 59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 240, BitmapUtils.UNCONSTRAINED, 2, // 2 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 160, BitmapUtils.UNCONSTRAINED, 4, // 3->4 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 120, BitmapUtils.UNCONSTRAINED, 4, // 4 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 96, BitmapUtils.UNCONSTRAINED, 8, // 5->8 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 80, BitmapUtils.UNCONSTRAINED, 8, // 6->8 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 60, BitmapUtils.UNCONSTRAINED, 8, // 8 65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 48, BitmapUtils.UNCONSTRAINED, 16, // 10->16 66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 40, BitmapUtils.UNCONSTRAINED, 16, // 12->16 67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 30, BitmapUtils.UNCONSTRAINED, 16, // 16 68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 24, BitmapUtils.UNCONSTRAINED, 24, // 20->24 69f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 20, BitmapUtils.UNCONSTRAINED, 24, // 24 70f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 16, BitmapUtils.UNCONSTRAINED, 32, // 30->32 71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 12, BitmapUtils.UNCONSTRAINED, 40, // 40 72f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 10, BitmapUtils.UNCONSTRAINED, 48, // 48 73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 8, BitmapUtils.UNCONSTRAINED, 64, // 60->64 74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 6, BitmapUtils.UNCONSTRAINED, 80, // 80 75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 4, BitmapUtils.UNCONSTRAINED, 120, // 120 76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 3, BitmapUtils.UNCONSTRAINED, 160, // 160 77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 2, BitmapUtils.UNCONSTRAINED, 240, // 240 78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, 1, BitmapUtils.UNCONSTRAINED, 480, // 480 79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, BitmapUtils.UNCONSTRAINED, 1, 81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480, 1, // 1 82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 - 1, 2, // a bit less than 1 83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 4, 2, // 2 84f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 4 - 1, 4, // a bit less than 2 85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 9, 4, // 3 86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 9 - 1, 4, // a bit less than 3 87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 16, 4, // 4 88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 16 - 1, 8, // a bit less than 4 89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 64, 8, // 8 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 64 - 1, 16, // a bit less than 8 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 256, 16, // 16 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / 256 - 1, 24, // a bit less than 16 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 640, 480, BitmapUtils.UNCONSTRAINED, 640 * 480 / (24 * 24) - 1, 32, // a bit less than 24 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin }; 95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @SmallTest 97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testComputeSampleSize() { 98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (int i = 0; i < testData.length; i += 5) { 100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int w = testData[i]; 101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int h = testData[i + 1]; 102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int minSide = testData[i + 2]; 103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int maxPixels = testData[i + 3]; 104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int sampleSize = testData[i + 4]; 105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int result = BitmapUtils.computeSampleSize(w, h, minSide, maxPixels); 106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (result != sampleSize) { 107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Log.v(TAG, w + "x" + h + ", minSide = " + minSide + ", maxPixels = " 108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin + maxPixels + ", sampleSize = " + sampleSize + ", result = " 109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin + result); 110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(sampleSize == result); 112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testAssert() { 116f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // This should not throw an exception. 117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.assertTrue(true); 118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // This should throw an exception. 120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 121f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.assertTrue(false); 122f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin fail(); 123f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } catch (AssertionError ex) { 124f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // expected. 125f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 126f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 127f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 128f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testCheckNotNull() { 129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // These should not throw an expection. 130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.checkNotNull(new Object()); 131f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.checkNotNull(0); 132f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.checkNotNull(""); 133f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 134f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // This should throw an expection. 135f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 136f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.checkNotNull(null); 137f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin fail(); 138f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } catch (NullPointerException ex) { 139f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // expected. 140f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 141f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 142f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 143f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testEquals() { 144f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Object a = new Object(); 145f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Object b = new Object(); 146f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 147f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(Utils.equals(null, null)); 148f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(Utils.equals(a, a)); 149f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.equals(null, a)); 150f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.equals(a, null)); 151f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.equals(a, b)); 152f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 153f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 154f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testNextPowerOf2() { 155f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int[] q = new int[] {1, 2, 3, 4, 5, 6, 10, 65535, (1 << 30) - 1, (1 << 30)}; 156f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int[] a = new int[] {1, 2, 4, 4, 8, 8, 16, 65536, (1 << 30) , (1 << 30)}; 157f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 158f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (int i = 0; i < q.length; i++) { 159f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(a[i], Utils.nextPowerOf2(q[i])); 160f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 161f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 162f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int[] e = new int[] {0, -1, -2, -4, -65536, (1 << 30) + 1, Integer.MAX_VALUE}; 163f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 164f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin for (int v : e) { 165f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin try { 166f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Utils.nextPowerOf2(v); 167f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin fail(); 168f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } catch (IllegalArgumentException ex) { 169f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin // expected. 170f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 171f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 172f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 173f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 174f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testClamp() { 175f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(1000, Utils.clamp(300, 1000, 2000)); 176f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(1300, Utils.clamp(1300, 1000, 2000)); 177f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(2000, Utils.clamp(2300, 1000, 2000)); 178f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 179f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(0.125f, Utils.clamp(0.1f, 0.125f, 0.5f)); 180f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(0.25f, Utils.clamp(0.25f, 0.125f, 0.5f)); 181f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertEquals(0.5f, Utils.clamp(0.9f, 0.125f, 0.5f)); 182f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 183f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 184f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public void testIsOpaque() { 185f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(Utils.isOpaque(0xFF000000)); 186f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(Utils.isOpaque(0xFFFFFFFF)); 187f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertTrue(Utils.isOpaque(0xFF123456)); 188f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 189f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.isOpaque(0xFEFFFFFF)); 190f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.isOpaque(0x8FFFFFFF)); 191f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.isOpaque(0x00FF0000)); 192f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.isOpaque(0x5500FF00)); 193f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin assertFalse(Utils.isOpaque(0xAA0000FF)); 194f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 195f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 196f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public static void assertFloatEq(float expected, float actual) { 197f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin if (Math.abs(actual - expected) > 1e-6) { 198f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin Log.v(TAG, "expected: " + expected + ", actual: " + actual); 199f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin fail(); 200f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 201f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 202f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 203