1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 174cd7b39876bcec03bb1d0c2afa61cbdb7d119ebaJesse Wilsonpackage com.android.dx.util; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 214cd7b39876bcec03bb1d0c2afa61cbdb7d119ebaJesse Wilsonpublic final class BitsTest extends TestCase { 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_makeBitSet() { 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(0), 0, Bits.makeBitSet(0).length); 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 1; i <= 32; i++) { 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), 1, Bits.makeBitSet(i).length); 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 33; i <= 64; i++) { 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), 2, Bits.makeBitSet(i).length); 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 65; i < 4000; i += 101) { 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int expect = i >> 5; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((expect * 32) < i) { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project expect++; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), expect, Bits.makeBitSet(i).length); 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getMax() { 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 4000; i += 59) { 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int expect = i >> 5; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((expect * 32) < i) { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project expect++; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), expect * 32, 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.getMax(new int[expect])); 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_get() { 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(label(i), Bits.get(bits, i)); 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_get() { 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.get(bits, i)); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test3_get() { 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i, (i % 5) == 0); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean expect = (i % 5) == 0; 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.get(bits, i) == expect); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_set1() { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(50); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[1] = -1; 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 0, true); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 3, true); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 6, true); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 3, false); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 35, false); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 38, false); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 42, false); 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, 38, true); 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(1), 0x41, bits[0]); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(2), 0xfffffbf7, bits[1]); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_set1() { 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i % 3) == 0) { 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i, true); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i % 5) == 0) { 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i, false); 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i % 7) == 0) { 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i, true); 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean expect = ((i % 7) == 0) || 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (((i % 3) == 0) && ((i % 5) != 0)); 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.get(bits, i) == expect); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_set2() { 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i % 11) == 0) { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean expect = (i % 11) == 0; 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.get(bits, i) == expect); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_clear() { 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(100); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i % 5) == 0) { 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.clear(bits, i); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean expect = (i % 5) != 0; 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.get(bits, i) == expect); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_isEmpty() { 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 10; i++) { 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.isEmpty(new int[i])); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_isEmpty() { 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 1; i < 1000; i += 11) { 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(i); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = i % 11; j >= 0; j--) { 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int x = i - 1 - (j * 13); 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (x >= 0) { 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, x); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(label(i), Bits.isEmpty(bits)); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_bitCount() { 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 10; i++) { 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), 0, Bits.bitCount(new int[i])); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_bitCount() { 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 1; i < 1000; i += 13) { 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = Bits.makeBitSet(i); 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int count = 0; 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 0; j < i; j += 20) { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, j); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project count++; 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 7; j < i; j += 11) { 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!Bits.get(bits, j)) { 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, j); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project count++; 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 3; j < i; j += 17) { 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!Bits.get(bits, j)) { 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, j); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project count++; 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), count, Bits.bitCount(bits)); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_anyInRange() { 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i += 11) { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(label(i), Bits.anyInRange(bits, 0, i)); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_anyInRange() { 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i += 11) { 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(label(i), Bits.anyInRange(bits, i, 100)); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test3_anyInRange() { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 50; i += 7) { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(label(i), Bits.anyInRange(bits, i, 100 - i)); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test4_anyInRange() { 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 1; i < 100; i += 11) { 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.anyInRange(bits, 0, i)); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test5_anyInRange() { 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 1; i < 100; i += 11) { 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.anyInRange(bits, i, 100)); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test6_anyInRange() { 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 50; i += 7) { 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(label(i), Bits.anyInRange(bits, i, 100 - i)); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_findFirst1() { 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), -1, Bits.findFirst(bits, i)); 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_findFirst1() { 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bits.length; i++) { 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[i] = -1; 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 100; i++) { 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i, Bits.findFirst(bits, i)); 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test3_findFirst1() { 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] bits = new int[100]; 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 25; i < 80; i++) { 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 0; j < bits.length; j++) { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bits[j] = 0; 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i - 5); 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i + 5); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i + 10); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Bits.set(bits, i + 20); 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i + 5, Bits.findFirst(bits, i)); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test1_findFirst2() { 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 32; i++) { 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), -1, Bits.findFirst(0, i)); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test2_findFirst2() { 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 32; i++) { 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i, Bits.findFirst(-1, i)); 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test3_findFirst2() { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 32; i++) { 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), -1, Bits.findFirst((1 << i) >>> 1, i)); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test4_findFirst2() { 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 32; i++) { 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i, Bits.findFirst(1 << i, i)); 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test5_findFirst2() { 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 31; i++) { 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i + 1, Bits.findFirst(1 << (i + 1), i)); 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test6_findFirst2() { 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 32; i++) { 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int value = (1 << i); 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project value |= (value >>> 1); 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(label(i), i, Bits.findFirst(value, i)); 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String label(int n) { 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "(" + n + ")"; 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 346