1 /*******************************************************************************
2 * ============LICENSE_START==================================================
4 * * ===========================================================================
5 * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * * ===========================================================================
7 * * Licensed under the Apache License, Version 2.0 (the "License");
8 * * you may not use this file except in compliance with the License.
9 * * You may obtain a copy of the License at
11 * * http://www.apache.org/licenses/LICENSE-2.0
13 * * Unless required by applicable law or agreed to in writing, software
14 * * distributed under the License is distributed on an "AS IS" BASIS,
15 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * * See the License for the specific language governing permissions and
17 * * limitations under the License.
18 * * ============LICENSE_END====================================================
20 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 ******************************************************************************/
24 package datarouter.provisioning;
26 import static org.junit.Assert.fail;
28 import java.util.Iterator;
30 import org.junit.Test;
32 import com.att.research.datarouter.provisioning.utils.RLEBitSet;
34 public class testRLEBitSet {
36 public void testBasicConstructor() {
37 RLEBitSet bs = new RLEBitSet();
39 fail("bit set not empty");
42 public void testStringConstructor() {
43 RLEBitSet bs = new RLEBitSet("1-10");
45 fail("bit set is empty");
46 if (!bs.toString().equals("1-10"))
48 bs = new RLEBitSet("69,70,71");
50 fail("bit set is empty");
51 if (!bs.toString().equals("69-71"))
53 bs = new RLEBitSet("555 444 443 442");
54 if (!bs.toString().equals("442-444,555"))
58 public void testLength() {
59 RLEBitSet bs = new RLEBitSet();
61 fail("testLength fail "+bs + " " + bs.length());
62 bs = new RLEBitSet("1-10");
63 if (bs.length() != 11)
64 fail("testLength fail "+bs + " " + bs.length());
65 bs = new RLEBitSet("1-20,100000000-100000005");
66 if (bs.length() != 100000006)
67 fail("testLength fail "+bs + " " + bs.length());
70 public void testGet() {
71 RLEBitSet bs = new RLEBitSet("1-10");
78 public void testSetOneBit() {
79 RLEBitSet bs = new RLEBitSet();
80 for (int i = 12; i < 200; i++)
83 for (int i = 305; i < 309; i++)
86 if (!bs.toString().equals("12-199,304-308,690"))
87 fail("testSetOneBit fail "+bs);
90 public void testSetString() {
91 RLEBitSet bs = new RLEBitSet();
93 if (!bs.toString().equals("1-100"))
94 fail("testSetString fail "+bs);
97 public void testSetRange() {
98 RLEBitSet bs = new RLEBitSet();
100 if (!bs.toString().equals("50-59"))
101 fail("testSetRange fail "+bs);
104 public void testClearOneBit() {
105 RLEBitSet bs = new RLEBitSet("1-10");
107 if (!bs.toString().equals("1-4,6-10"))
108 fail("testClearOneBit fail");
109 bs = new RLEBitSet("1-10");
111 if (!bs.toString().equals("1-10"))
112 fail("testClearOneBit fail "+bs);
115 public void testClearRangeLeft() {
116 RLEBitSet bs = new RLEBitSet("100-200");
118 if (!bs.toString().equals("100-200"))
119 fail("testClearRangeLeft fail "+bs);
122 public void testClearRangeRight() {
123 RLEBitSet bs = new RLEBitSet("100-200");
125 if (!bs.toString().equals("100-200"))
126 fail("testClearRangeRight fail "+bs);
129 public void testClearRangeMiddle() {
130 RLEBitSet bs = new RLEBitSet("100-200");
132 if (!bs.toString().equals("100-119,130-200"))
133 fail("testClearRangeRight fail "+bs);
136 public void testClearRangeIntersect() {
137 RLEBitSet bs = new RLEBitSet("100-200");
139 if (!bs.toString().equals("200"))
140 fail("testClearRangeIntersect fail "+bs);
143 public void testClearOverlapLeft() {
144 RLEBitSet bs = new RLEBitSet("100-200");
146 if (!bs.toString().equals("150-200"))
147 fail("testClearOverlapLeft fail "+bs);
150 public void testClearOverlapRight() {
151 RLEBitSet bs = new RLEBitSet("100-200");
153 if (!bs.toString().equals("100-149"))
154 fail("testClearOverlapRight fail "+bs);
157 public void testClearOverlapAll() {
158 RLEBitSet bs = new RLEBitSet("100-200");
160 if (!bs.toString().equals(""))
161 fail("testClearOverlapAll fail "+bs);
164 public void testAnd() {
165 RLEBitSet bs = new RLEBitSet("100-200");
166 RLEBitSet b2 = new RLEBitSet("150-400");
168 if (!bs.toString().equals("150-200"))
169 fail("testAnd fail "+bs);
170 bs = new RLEBitSet("100-200");
171 b2 = new RLEBitSet("1500-4000");
174 fail("testAnd fail "+bs);
177 public void testAndNot() {
178 RLEBitSet bs = new RLEBitSet("100-200");
179 RLEBitSet b2 = new RLEBitSet("150-159");
181 if (!bs.toString().equals("100-149,160-200"))
182 fail("testAndNot fail "+bs);
185 public void testIsEmpty() {
186 RLEBitSet bs = new RLEBitSet("");
188 fail("testIsEmpty fail "+bs);
191 fail("testIsEmpty fail "+bs);
194 public void testCardinality() {
195 RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
196 if (bs.cardinality() != 126)
197 fail("testCardinality fail 1");
200 public void testIterator() {
201 RLEBitSet bs = new RLEBitSet("1,5,10-12");
202 Iterator<Long[]> i = bs.getRangeIterator();
204 fail("iterator fail 1");
205 Long[] ll = i.next();
206 if (ll == null || ll[0] != 1 || ll[1] != 1)
207 fail("iterator fail 2");
210 fail("iterator fail 3");
212 if (ll == null || ll[0] != 5 || ll[1] != 5)
213 fail("iterator fail 4");
216 fail("iterator fail 5");
218 if (ll == null || ll[0] != 10 || ll[1] != 12)
219 fail("iterator fail 6");
222 fail("iterator fail 7");
225 public void testClone() {
226 RLEBitSet bs1 = new RLEBitSet("1,5,10-12");
227 RLEBitSet bs2 = (RLEBitSet) bs1.clone();
228 if (!bs1.toString().equals(bs2.toString()))