ListIntSetTest.java revision fe107fb6e3f308ac5174ebdc5a794ee880c741d9
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.IntIterator; 21import com.android.dx.util.ListIntSet; 22import java.util.NoSuchElementException; 23import junit.framework.TestCase; 24 25public final class ListIntSetTest extends TestCase { 26 public void test_basic() { 27 ListIntSet set = new ListIntSet(); 28 29 assertEquals(0, set.elements()); 30 31 set.add(31); 32 set.add(0); 33 set.add(1); 34 35 assertTrue(set.has(0)); 36 assertTrue(set.has(1)); 37 assertTrue(set.has(31)); 38 39 assertEquals(3, set.elements()); 40 41 assertFalse(set.has(2)); 42 assertFalse(set.has(7)); 43 assertFalse(set.has(30)); 44 } 45 46 public void test_iterator() { 47 ListIntSet set = new ListIntSet(); 48 49 set.add(0); 50 set.add(0); 51 set.add(1); 52 set.add(1); 53 set.add(31); 54 set.add(31); 55 56 IntIterator iter = set.iterator(); 57 58 assertTrue(iter.hasNext()); 59 assertEquals(iter.next(), 0); 60 assertTrue(iter.hasNext()); 61 assertEquals(iter.next(), 1); 62 assertTrue(iter.hasNext()); 63 assertEquals(iter.next(), 31); 64 65 assertFalse(iter.hasNext()); 66 67 try { 68 iter.next(); 69 fail(); 70 } catch (NoSuchElementException ex) { 71 // exception excepted 72 } 73 } 74 75 public void test_empty() { 76 ListIntSet set = new ListIntSet(); 77 78 IntIterator iter = set.iterator(); 79 80 assertFalse(iter.hasNext()); 81 } 82 83 public void test_remove() { 84 ListIntSet set = new ListIntSet(); 85 86 set.add(0); 87 set.add(1); 88 set.add(31); 89 90 assertTrue(set.has(0)); 91 assertTrue(set.has(1)); 92 assertTrue(set.has(31)); 93 94 assertFalse(set.has(2)); 95 assertFalse(set.has(7)); 96 assertFalse(set.has(30)); 97 98 set.remove(0); 99 100 assertFalse(set.has(0)); 101 102 assertTrue(set.has(1)); 103 assertTrue(set.has(31)); 104 } 105 106 public void test_mergeA() { 107 ListIntSet setA = new ListIntSet(); 108 int[] valuesA = {0, 1, 31}; 109 110 for (int i = 0; i < valuesA.length; i++) { 111 setA.add(valuesA[i]); 112 } 113 114 ListIntSet setB = new ListIntSet(); 115 int[] valuesB = {0, 5, 6, 32, 127, 128}; 116 117 for (int i = 0; i < valuesB.length; i++) { 118 setB.add(valuesB[i]); 119 } 120 121 setA.merge(setB); 122 123 for (int i = 0; i < valuesA.length; i++) { 124 assertTrue(setA.has(valuesA[i])); 125 } 126 127 for (int i = 0; i < valuesB.length; i++) { 128 assertTrue(setA.has(valuesB[i])); 129 } 130 131 } 132 133 public void test_mergeB() { 134 ListIntSet setA = new ListIntSet(); 135 int[] valuesA = {0, 1, 31, 129, 130}; 136 137 for (int i = 0; i < valuesA.length; i++) { 138 setA.add(valuesA[i]); 139 } 140 141 ListIntSet setB = new ListIntSet(); 142 int[] valuesB = {0, 5, 6, 32, 127,128}; 143 144 for (int i = 0; i < valuesB.length; i++) { 145 setB.add(valuesB[i]); 146 } 147 148 setA.merge(setB); 149 150 for (int i = 0; i < valuesA.length; i++) { 151 assertTrue(setA.has(valuesA[i])); 152 } 153 154 for (int i = 0; i < valuesB.length; i++) { 155 assertTrue(setA.has(valuesB[i])); 156 } 157 158 } 159 160 public void test_mergeWithBitIntSet() { 161 ListIntSet setA = new ListIntSet(); 162 int[] valuesA = {0, 1, 31, 129, 130}; 163 164 for (int i = 0; i < valuesA.length; i++) { 165 setA.add(valuesA[i]); 166 } 167 168 BitIntSet setB = new BitIntSet(129); 169 int[] valuesB = {0, 5, 6, 32, 127,128}; 170 171 for (int i = 0; i < valuesB.length; i++) { 172 setB.add(valuesB[i]); 173 } 174 175 setA.merge(setB); 176 177 for (int i = 0; i < valuesA.length; i++) { 178 assertTrue(setA.has(valuesA[i])); 179 } 180 181 for (int i = 0; i < valuesB.length; i++) { 182 assertTrue(setA.has(valuesB[i])); 183 } 184 185 } 186 187 public void test_toString() { 188 ListIntSet set = new ListIntSet(); 189 190 assertEquals(set.toString(), "{}"); 191 192 set.add(1); 193 194 assertEquals(set.toString(), "{1}"); 195 196 set.add(2); 197 198 assertEquals(set.toString(), "{1, 2}"); 199 } 200 201} 202