Update project structure to org.onap
[dmaap/datarouter.git] / datarouter-prov / src / test / java / datarouter / provisioning / testRLEBitSet.java
1 /*******************************************************************************
2  * ============LICENSE_START==================================================
3  * * org.onap.dmaap
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
10  * * 
11  *  *      http://www.apache.org/licenses/LICENSE-2.0
12  * * 
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====================================================
19  * *
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  * *
22  ******************************************************************************/
23
24 package datarouter.provisioning;
25
26 import static org.junit.Assert.fail;
27
28 import java.util.Iterator;
29
30 import org.junit.Test;
31 import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
32
33 public class testRLEBitSet {
34         @Test
35         public void testBasicConstructor() {
36                 RLEBitSet bs = new RLEBitSet();
37                 if (!bs.isEmpty())
38                         fail("bit set not empty");
39         }
40         @Test
41         public void testStringConstructor() {
42                 RLEBitSet bs = new RLEBitSet("1-10");
43                 if (bs.isEmpty())
44                         fail("bit set is empty");
45                 if (!bs.toString().equals("1-10"))
46                         fail("bad value");
47                 bs = new RLEBitSet("69,70,71");
48                 if (bs.isEmpty())
49                         fail("bit set is empty");
50                 if (!bs.toString().equals("69-71"))
51                         fail("bad value");
52                 bs = new RLEBitSet("555 444    443  442");
53                 if (!bs.toString().equals("442-444,555"))
54                         fail("bad value");
55         }
56         @Test
57         public void testLength() {
58                 RLEBitSet bs = new RLEBitSet();
59                 if (bs.length() != 0)
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());
67         }
68         @Test
69         public void testGet() {
70                 RLEBitSet bs = new RLEBitSet("1-10");
71                 if (!bs.get(5))
72                         fail("get");
73                 if (bs.get(69))
74                         fail("get");
75         }
76         @Test
77         public void testSetOneBit() {
78                 RLEBitSet bs = new RLEBitSet();
79                 for (int i = 12; i < 200; i++)
80                         bs.set(i);
81                 bs.set(690);
82                 for (int i = 305; i < 309; i++)
83                         bs.set(i);
84                 bs.set(304);
85                 if (!bs.toString().equals("12-199,304-308,690"))
86                         fail("testSetOneBit fail "+bs);
87         }
88         @Test
89         public void testSetString() {
90                 RLEBitSet bs = new RLEBitSet();
91                 bs.set("1-100");
92                 if (!bs.toString().equals("1-100"))
93                         fail("testSetString fail "+bs);
94         }
95         @Test
96         public void testSetRange() {
97                 RLEBitSet bs = new RLEBitSet();
98                 bs.set(50,60);
99                 if (!bs.toString().equals("50-59"))
100                         fail("testSetRange fail "+bs);
101         }
102         @Test
103         public void testClearOneBit() {
104                 RLEBitSet bs = new RLEBitSet("1-10");
105                 bs.clear(5);
106                 if (!bs.toString().equals("1-4,6-10"))
107                         fail("testClearOneBit fail");
108                 bs = new RLEBitSet("1-10");
109                 bs.clear(11);
110                 if (!bs.toString().equals("1-10"))
111                         fail("testClearOneBit fail "+bs);
112         }
113         @Test
114         public void testClearRangeLeft() {
115                 RLEBitSet bs = new RLEBitSet("100-200");
116                 bs.clear(40,50);
117                 if (!bs.toString().equals("100-200"))
118                         fail("testClearRangeLeft fail "+bs);
119         }
120         @Test
121         public void testClearRangeRight() {
122                 RLEBitSet bs = new RLEBitSet("100-200");
123                 bs.clear(400,500);
124                 if (!bs.toString().equals("100-200"))
125                         fail("testClearRangeRight fail "+bs);
126         }
127         @Test
128         public void testClearRangeMiddle() {
129                 RLEBitSet bs = new RLEBitSet("100-200");
130                 bs.clear(120,130);
131                 if (!bs.toString().equals("100-119,130-200"))
132                         fail("testClearRangeRight fail "+bs);
133         }
134         @Test
135         public void testClearRangeIntersect() {
136                 RLEBitSet bs = new RLEBitSet("100-200");
137                 bs.clear(100,200);
138                 if (!bs.toString().equals("200"))
139                         fail("testClearRangeIntersect fail "+bs);
140         }
141         @Test
142         public void testClearOverlapLeft() {
143                 RLEBitSet bs = new RLEBitSet("100-200");
144                 bs.clear(50,150);
145                 if (!bs.toString().equals("150-200"))
146                         fail("testClearOverlapLeft fail "+bs);
147         }
148         @Test
149         public void testClearOverlapRight() {
150                 RLEBitSet bs = new RLEBitSet("100-200");
151                 bs.clear(150,250);
152                 if (!bs.toString().equals("100-149"))
153                         fail("testClearOverlapRight fail "+bs);
154         }
155         @Test
156         public void testClearOverlapAll() {
157                 RLEBitSet bs = new RLEBitSet("100-200");
158                 bs.clear(50,250);
159                 if (!bs.toString().equals(""))
160                         fail("testClearOverlapAll fail "+bs);
161         }
162         @Test
163         public void testAnd() {
164                 RLEBitSet bs = new RLEBitSet("100-200");
165                 RLEBitSet b2 = new RLEBitSet("150-400");
166                 bs.and(b2);
167                 if (!bs.toString().equals("150-200"))
168                         fail("testAnd fail "+bs);
169                 bs = new RLEBitSet("100-200");
170                 b2 = new RLEBitSet("1500-4000");
171                 bs.and(b2);
172                 if (!bs.isEmpty())
173                         fail("testAnd fail "+bs);
174         }
175         @Test
176         public void testAndNot() {
177                 RLEBitSet bs = new RLEBitSet("100-200");
178                 RLEBitSet b2 = new RLEBitSet("150-159");
179                 bs.andNot(b2);
180                 if (!bs.toString().equals("100-149,160-200"))
181                         fail("testAndNot fail "+bs);
182         }
183         @Test
184         public void testIsEmpty() {
185                 RLEBitSet bs = new RLEBitSet("");
186                 if (!bs.isEmpty())
187                         fail("testIsEmpty fail "+bs);
188                 bs.set(1);
189                 if (bs.isEmpty())
190                         fail("testIsEmpty fail "+bs);
191         }
192         @Test
193         public void testCardinality() {
194                 RLEBitSet bs = new RLEBitSet("1-120,10000000-10000005");
195                 if (bs.cardinality() != 126)
196                         fail("testCardinality fail 1");
197         }
198         @Test
199         public void testIterator() {
200                 RLEBitSet bs = new RLEBitSet("1,5,10-12");
201                 Iterator<Long[]> i = bs.getRangeIterator();
202                 if (!i.hasNext())
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");
207
208                 if (!i.hasNext())
209                         fail("iterator fail 3");
210                 ll = i.next();
211                 if (ll == null || ll[0] != 5 || ll[1] != 5)
212                         fail("iterator fail 4");
213
214                 if (!i.hasNext())
215                         fail("iterator fail 5");
216                 ll = i.next();
217                 if (ll == null || ll[0] != 10 || ll[1] != 12)
218                         fail("iterator fail 6");
219
220                 if (i.hasNext())
221                         fail("iterator fail 7");
222         }
223         @Test
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()))
228                         fail("clone");
229         }
230 }