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;
31 import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
33 public class testRLEBitSet {
35 public void testBasicConstructor() {
36 RLEBitSet bs = new RLEBitSet();
38 fail("bit set not empty");
41 public void testStringConstructor() {
42 RLEBitSet bs = new RLEBitSet("1-10");
44 fail("bit set is empty");
45 if (!bs.toString().equals("1-10"))
47 bs = new RLEBitSet("69,70,71");
49 fail("bit set is empty");
50 if (!bs.toString().equals("69-71"))
52 bs = new RLEBitSet("555 444 443 442");
53 if (!bs.toString().equals("442-444,555"))
57 public void testLength() {
58 RLEBitSet bs = new RLEBitSet();
60 fail("testLength fail "+bs + " " + bs.length());
61 bs = new RLEBitSet("1-10");
62 if (bs.length() != 11)
63 fail("testLength fail "+bs + " " + bs.length());
64 bs = new RLEBitSet("1-20,100000000-100000005");
65 if (bs.length() != 100000006)
66 fail("testLength fail "+bs + " " + bs.length());
69 public void testGet() {
70 RLEBitSet bs = new RLEBitSet("1-10");
77 public void testSetOneBit() {
78 RLEBitSet bs = new RLEBitSet();
79 for (int i = 12; i < 200; i++)
82 for (int i = 305; i < 309; i++)
85 if (!bs.toString().equals("12-199,304-308,690"))
86 fail("testSetOneBit fail "+bs);
89 public void testSetString() {
90 RLEBitSet bs = new RLEBitSet();
92 if (!bs.toString().equals("1-100"))
93 fail("testSetString fail "+bs);
96 public void testSetRange() {
97 RLEBitSet bs = new RLEBitSet();
99 if (!bs.toString().equals("50-59"))
100 fail("testSetRange fail "+bs);
103 public void testClearOneBit() {
104 RLEBitSet bs = new RLEBitSet("1-10");
106 if (!bs.toString().equals("1-4,6-10"))
107 fail("testClearOneBit fail");
108 bs = new RLEBitSet("1-10");
110 if (!bs.toString().equals("1-10"))
111 fail("testClearOneBit fail "+bs);
114 public void testClearRangeLeft() {
115 RLEBitSet bs = new RLEBitSet("100-200");
117 if (!bs.toString().equals("100-200"))
118 fail("testClearRangeLeft fail "+bs);
121 public void testClearRangeRight() {
122 RLEBitSet bs = new RLEBitSet("100-200");
124 if (!bs.toString().equals("100-200"))
125 fail("testClearRangeRight fail "+bs);
128 public void testClearRangeMiddle() {
129 RLEBitSet bs = new RLEBitSet("100-200");
131 if (!bs.toString().equals("100-119,130-200"))
132 fail("testClearRangeRight fail "+bs);
135 public void testClearRangeIntersect() {
136 RLEBitSet bs = new RLEBitSet("100-200");
138 if (!bs.toString().equals("200"))
139 fail("testClearRangeIntersect fail "+bs);
142 public void testClearOverlapLeft() {
143 RLEBitSet bs = new RLEBitSet("100-200");
145 if (!bs.toString().equals("150-200"))
146 fail("testClearOverlapLeft fail "+bs);
149 public void testClearOverlapRight() {
150 RLEBitSet bs = new RLEBitSet("100-200");
152 if (!bs.toString().equals("100-149"))
153 fail("testClearOverlapRight fail "+bs);
156 public void testClearOverlapAll() {
157 RLEBitSet bs = new RLEBitSet("100-200");
159 if (!bs.toString().equals(""))
160 fail("testClearOverlapAll fail "+bs);
163 public void testAnd() {
164 RLEBitSet bs = new RLEBitSet("100-200");
165 RLEBitSet b2 = new RLEBitSet("150-400");
167 if (!bs.toString().equals("150-200"))
168 fail("testAnd fail "+bs);
169 bs = new RLEBitSet("100-200");
170 b2 = new RLEBitSet("1500-4000");
173 fail("testAnd fail "+bs);
176 public void testAndNot() {
177 RLEBitSet bs = new RLEBitSet("100-200");
178 RLEBitSet b2 = new RLEBitSet("150-159");
180 if (!bs.toString().equals("100-149,160-200"))
181 fail("testAndNot fail "+bs);
184 public void testIsEmpty() {
185 RLEBitSet bs = new RLEBitSet("");
187 fail("testIsEmpty fail "+bs);
190 fail("testIsEmpty fail "+bs);
193 public void testCardinality() {
194 RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
195 if (bs.cardinality() != 126)
196 fail("testCardinality fail 1");
199 public void testIterator() {
200 RLEBitSet bs = new RLEBitSet("1,5,10-12");
201 Iterator<Long[]> i = bs.getRangeIterator();
203 fail("iterator fail 1");
204 Long[] ll = i.next();
205 if (ll == null || ll[0] != 1 || ll[1] != 1)
206 fail("iterator fail 2");
209 fail("iterator fail 3");
211 if (ll == null || ll[0] != 5 || ll[1] != 5)
212 fail("iterator fail 4");
215 fail("iterator fail 5");
217 if (ll == null || ll[0] != 10 || ll[1] != 12)
218 fail("iterator fail 6");
221 fail("iterator fail 7");
224 public void testClone() {
225 RLEBitSet bs1 = new RLEBitSet("1,5,10-12");
226 RLEBitSet bs2 = (RLEBitSet) bs1.clone();
227 if (!bs1.toString().equals(bs2.toString()))