1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.dx.util._tests; 18 19import com.android.dx.util.BitIntSet; 20import com.android.dx.util.ListIntSet; 21import com.android.dx.util.IntIterator; 22 23import junit.framework.TestCase; 24 25import java.util.NoSuchElementException; 26 27public class _ListIntSet extends TestCase { 28 public void test_basic() { 29 ListIntSet set = new ListIntSet(); 30 31 assertEquals(0, set.elements()); 32 33 set.add(31); 34 set.add(0); 35 set.add(1); 36 37 assertTrue(set.has(0)); 38 assertTrue(set.has(1)); 39 assertTrue(set.has(31)); 40 41 assertEquals(3, set.elements()); 42 43 assertFalse(set.has(2)); 44 assertFalse(set.has(7)); 45 assertFalse(set.has(30)); 46 } 47 48 public void test_iterator() { 49 ListIntSet set = new ListIntSet(); 50 51 set.add(0); 52 set.add(0); 53 set.add(1); 54 set.add(1); 55 set.add(31); 56 set.add(31); 57 58 IntIterator iter = set.iterator(); 59 60 assertTrue(iter.hasNext()); 61 assertEquals(iter.next(), 0); 62 assertTrue(iter.hasNext()); 63 assertEquals(iter.next(), 1); 64 assertTrue(iter.hasNext()); 65 assertEquals(iter.next(), 31); 66 67 assertFalse(iter.hasNext()); 68 69 try { 70 iter.next(); 71 fail(); 72 } catch (NoSuchElementException ex) { 73 // exception excepted 74 } 75 } 76 77 public void test_empty() { 78 ListIntSet set = new ListIntSet(); 79 80 IntIterator iter = set.iterator(); 81 82 assertFalse(iter.hasNext()); 83 } 84 85 public void test_remove() { 86 ListIntSet set = new ListIntSet(); 87 88 set.add(0); 89 set.add(1); 90 set.add(31); 91 92 assertTrue(set.has(0)); 93 assertTrue(set.has(1)); 94 assertTrue(set.has(31)); 95 96 assertFalse(set.has(2)); 97 assertFalse(set.has(7)); 98 assertFalse(set.has(30)); 99 100 set.remove(0); 101 102 assertFalse(set.has(0)); 103 104 assertTrue(set.has(1)); 105 assertTrue(set.has(31)); 106 } 107 108 public void test_mergeA() { 109 ListIntSet setA = new ListIntSet(); 110 int[] valuesA = {0, 1, 31}; 111 112 for (int i = 0; i < valuesA.length; i++) { 113 setA.add(valuesA[i]); 114 } 115 116 ListIntSet setB = new ListIntSet(); 117 int[] valuesB = {0, 5, 6, 32, 127, 128}; 118 119 for (int i = 0; i < valuesB.length; i++) { 120 setB.add(valuesB[i]); 121 } 122 123 setA.merge(setB); 124 125 for (int i = 0; i < valuesA.length; i++) { 126 assertTrue(setA.has(valuesA[i])); 127 } 128 129 for (int i = 0; i < valuesB.length; i++) { 130 assertTrue(setA.has(valuesB[i])); 131 } 132 133 } 134 135 public void test_mergeB() { 136 ListIntSet setA = new ListIntSet(); 137 int[] valuesA = {0, 1, 31, 129, 130}; 138 139 for (int i = 0; i < valuesA.length; i++) { 140 setA.add(valuesA[i]); 141 } 142 143 ListIntSet setB = new ListIntSet(); 144 int[] valuesB = {0, 5, 6, 32, 127,128}; 145 146 for (int i = 0; i < valuesB.length; i++) { 147 setB.add(valuesB[i]); 148 } 149 150 setA.merge(setB); 151 152 for (int i = 0; i < valuesA.length; i++) { 153 assertTrue(setA.has(valuesA[i])); 154 } 155 156 for (int i = 0; i < valuesB.length; i++) { 157 assertTrue(setA.has(valuesB[i])); 158 } 159 160 } 161 162 public void test_mergeWithBitIntSet() { 163 ListIntSet setA = new ListIntSet(); 164 int[] valuesA = {0, 1, 31, 129, 130}; 165 166 for (int i = 0; i < valuesA.length; i++) { 167 setA.add(valuesA[i]); 168 } 169 170 BitIntSet setB = new BitIntSet(129); 171 int[] valuesB = {0, 5, 6, 32, 127,128}; 172 173 for (int i = 0; i < valuesB.length; i++) { 174 setB.add(valuesB[i]); 175 } 176 177 setA.merge(setB); 178 179 for (int i = 0; i < valuesA.length; i++) { 180 assertTrue(setA.has(valuesA[i])); 181 } 182 183 for (int i = 0; i < valuesB.length; i++) { 184 assertTrue(setA.has(valuesB[i])); 185 } 186 187 } 188 189 public void test_toString() { 190 ListIntSet set = new ListIntSet(); 191 192 assertEquals(set.toString(), "{}"); 193 194 set.add(1); 195 196 assertEquals(set.toString(), "{1}"); 197 198 set.add(2); 199 200 assertEquals(set.toString(), "{1, 2}"); 201 } 202 203} 204