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