blob: ccd599178dcb78664ef5c0c98dedde87a8cb898c [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.dx.util._tests;
import com.android.dx.util.BitIntSet;
import com.android.dx.util.ListIntSet;
import com.android.dx.util.IntIterator;
import junit.framework.TestCase;
import java.util.NoSuchElementException;
public class _ListIntSet extends TestCase {
public void test_basic() {
ListIntSet set = new ListIntSet();
assertEquals(0, set.elements());
set.add(31);
set.add(0);
set.add(1);
assertTrue(set.has(0));
assertTrue(set.has(1));
assertTrue(set.has(31));
assertEquals(3, set.elements());
assertFalse(set.has(2));
assertFalse(set.has(7));
assertFalse(set.has(30));
}
public void test_iterator() {
ListIntSet set = new ListIntSet();
set.add(0);
set.add(0);
set.add(1);
set.add(1);
set.add(31);
set.add(31);
IntIterator iter = set.iterator();
assertTrue(iter.hasNext());
assertEquals(iter.next(), 0);
assertTrue(iter.hasNext());
assertEquals(iter.next(), 1);
assertTrue(iter.hasNext());
assertEquals(iter.next(), 31);
assertFalse(iter.hasNext());
try {
iter.next();
fail();
} catch (NoSuchElementException ex) {
// exception excepted
}
}
public void test_empty() {
ListIntSet set = new ListIntSet();
IntIterator iter = set.iterator();
assertFalse(iter.hasNext());
}
public void test_remove() {
ListIntSet set = new ListIntSet();
set.add(0);
set.add(1);
set.add(31);
assertTrue(set.has(0));
assertTrue(set.has(1));
assertTrue(set.has(31));
assertFalse(set.has(2));
assertFalse(set.has(7));
assertFalse(set.has(30));
set.remove(0);
assertFalse(set.has(0));
assertTrue(set.has(1));
assertTrue(set.has(31));
}
public void test_mergeA() {
ListIntSet setA = new ListIntSet();
int[] valuesA = {0, 1, 31};
for (int i = 0; i < valuesA.length; i++) {
setA.add(valuesA[i]);
}
ListIntSet setB = new ListIntSet();
int[] valuesB = {0, 5, 6, 32, 127, 128};
for (int i = 0; i < valuesB.length; i++) {
setB.add(valuesB[i]);
}
setA.merge(setB);
for (int i = 0; i < valuesA.length; i++) {
assertTrue(setA.has(valuesA[i]));
}
for (int i = 0; i < valuesB.length; i++) {
assertTrue(setA.has(valuesB[i]));
}
}
public void test_mergeB() {
ListIntSet setA = new ListIntSet();
int[] valuesA = {0, 1, 31, 129, 130};
for (int i = 0; i < valuesA.length; i++) {
setA.add(valuesA[i]);
}
ListIntSet setB = new ListIntSet();
int[] valuesB = {0, 5, 6, 32, 127,128};
for (int i = 0; i < valuesB.length; i++) {
setB.add(valuesB[i]);
}
setA.merge(setB);
for (int i = 0; i < valuesA.length; i++) {
assertTrue(setA.has(valuesA[i]));
}
for (int i = 0; i < valuesB.length; i++) {
assertTrue(setA.has(valuesB[i]));
}
}
public void test_mergeWithBitIntSet() {
ListIntSet setA = new ListIntSet();
int[] valuesA = {0, 1, 31, 129, 130};
for (int i = 0; i < valuesA.length; i++) {
setA.add(valuesA[i]);
}
BitIntSet setB = new BitIntSet(129);
int[] valuesB = {0, 5, 6, 32, 127,128};
for (int i = 0; i < valuesB.length; i++) {
setB.add(valuesB[i]);
}
setA.merge(setB);
for (int i = 0; i < valuesA.length; i++) {
assertTrue(setA.has(valuesA[i]));
}
for (int i = 0; i < valuesB.length; i++) {
assertTrue(setA.has(valuesB[i]));
}
}
public void test_toString() {
ListIntSet set = new ListIntSet();
assertEquals(set.toString(), "{}");
set.add(1);
assertEquals(set.toString(), "{1}");
set.add(2);
assertEquals(set.toString(), "{1, 2}");
}
}