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 IntegrationTestRleBitSet {
35 public void testBasicConstructor() {
36 RLEBitSet bs = new RLEBitSet();
38 fail("bit set not empty");
43 public void testStringConstructor() {
44 RLEBitSet bs = new RLEBitSet("1-10");
46 fail("bit set is empty");
48 if (!bs.toString().equals("1-10")) {
51 bs = new RLEBitSet("69,70,71");
53 fail("bit set is empty");
55 if (!bs.toString().equals("69-71")) {
58 bs = new RLEBitSet("555 444 443 442");
59 if (!bs.toString().equals("442-444,555")) {
65 public void testLength() {
66 RLEBitSet bs = new RLEBitSet();
67 if (bs.length() != 0) {
68 fail("testLength fail " + bs + " " + bs.length());
70 bs = new RLEBitSet("1-10");
71 if (bs.length() != 11) {
72 fail("testLength fail " + bs + " " + bs.length());
74 bs = new RLEBitSet("1-20,100000000-100000005");
75 if (bs.length() != 100000006) {
76 fail("testLength fail " + bs + " " + bs.length());
81 public void testGet() {
82 RLEBitSet bs = new RLEBitSet("1-10");
92 public void testSetOneBit() {
93 RLEBitSet bs = new RLEBitSet();
94 for (int i = 12; i < 200; i++) {
98 for (int i = 305; i < 309; i++) {
102 if (!bs.toString().equals("12-199,304-308,690")) {
103 fail("testSetOneBit fail " + bs);
108 public void testSetString() {
109 RLEBitSet bs = new RLEBitSet();
111 if (!bs.toString().equals("1-100")) {
112 fail("testSetString fail " + bs);
117 public void testSetRange() {
118 RLEBitSet bs = new RLEBitSet();
120 if (!bs.toString().equals("50-59")) {
121 fail("testSetRange fail " + bs);
126 public void testClearOneBit() {
127 RLEBitSet bs = new RLEBitSet("1-10");
129 if (!bs.toString().equals("1-4,6-10")) {
130 fail("testClearOneBit fail");
132 bs = new RLEBitSet("1-10");
134 if (!bs.toString().equals("1-10")) {
135 fail("testClearOneBit fail " + bs);
140 public void testClearRangeLeft() {
141 RLEBitSet bs = new RLEBitSet("100-200");
143 if (!bs.toString().equals("100-200")) {
144 fail("testClearRangeLeft fail " + bs);
149 public void testClearRangeRight() {
150 RLEBitSet bs = new RLEBitSet("100-200");
152 if (!bs.toString().equals("100-200")) {
153 fail("testClearRangeRight fail " + bs);
158 public void testClearRangeMiddle() {
159 RLEBitSet bs = new RLEBitSet("100-200");
161 if (!bs.toString().equals("100-119,130-200")) {
162 fail("testClearRangeRight fail " + bs);
167 public void testClearRangeIntersect() {
168 RLEBitSet bs = new RLEBitSet("100-200");
170 if (!bs.toString().equals("200")) {
171 fail("testClearRangeIntersect fail " + bs);
176 public void testClearOverlapLeft() {
177 RLEBitSet bs = new RLEBitSet("100-200");
179 if (!bs.toString().equals("150-200")) {
180 fail("testClearOverlapLeft fail " + bs);
185 public void testClearOverlapRight() {
186 RLEBitSet bs = new RLEBitSet("100-200");
188 if (!bs.toString().equals("100-149")) {
189 fail("testClearOverlapRight fail " + bs);
194 public void testClearOverlapAll() {
195 RLEBitSet bs = new RLEBitSet("100-200");
197 if (!bs.toString().equals("")) {
198 fail("testClearOverlapAll fail " + bs);
203 public void testAnd() {
204 RLEBitSet bs = new RLEBitSet("100-200");
205 RLEBitSet b2 = new RLEBitSet("150-400");
207 if (!bs.toString().equals("150-200")) {
208 fail("testAnd fail " + bs);
210 bs = new RLEBitSet("100-200");
211 b2 = new RLEBitSet("1500-4000");
214 fail("testAnd fail " + bs);
219 public void testAndNot() {
220 RLEBitSet bs = new RLEBitSet("100-200");
221 RLEBitSet b2 = new RLEBitSet("150-159");
223 if (!bs.toString().equals("100-149,160-200")) {
224 fail("testAndNot fail " + bs);
229 public void testIsEmpty() {
230 RLEBitSet bs = new RLEBitSet("");
232 fail("testIsEmpty fail " + bs);
236 fail("testIsEmpty fail " + bs);
241 public void testCardinality() {
242 RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
243 if (bs.cardinality() != 126) {
244 fail("testCardinality fail 1");
249 public void testIterator() {
250 RLEBitSet rleBitSet = new RLEBitSet("1,5,10-12");
251 Iterator<Long[]> rleBitSetRangeIterator = rleBitSet.getRangeIterator();
252 if (!rleBitSetRangeIterator.hasNext()) {
253 fail("iterator fail 1");
255 Long[] ll = rleBitSetRangeIterator.next();
256 if (ll == null || ll[0] != 1 || ll[1] != 1) {
257 fail("iterator fail 2");
260 if (!rleBitSetRangeIterator.hasNext()) {
261 fail("iterator fail 3");
263 ll = rleBitSetRangeIterator.next();
264 if (ll == null || ll[0] != 5 || ll[1] != 5) {
265 fail("iterator fail 4");
268 if (!rleBitSetRangeIterator.hasNext()) {
269 fail("iterator fail 5");
271 ll = rleBitSetRangeIterator.next();
272 if (ll == null || ll[0] != 10 || ll[1] != 12) {
273 fail("iterator fail 6");
276 if (rleBitSetRangeIterator.hasNext()) {
277 fail("iterator fail 7");
282 public void testClone() {
283 RLEBitSet bs1 = new RLEBitSet("1,5,10-12");
284 RLEBitSet bs2 = (RLEBitSet) bs1.clone();
285 if (!bs1.toString().equals(bs2.toString())) {