2 * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.sal.packet;
11 import org.junit.Assert;
12 import org.junit.Test;
13 import org.opendaylight.controller.liblldp.BitBufferHelper;
15 public class BitBufferHelperTest {
18 public void testGetByte() {
19 byte[] data = { 100 };
20 Assert.assertTrue(BitBufferHelper.getByte(data) == 100);
24 public void testGetBits() throws Exception {
25 byte[] data = { 10, 12, 14, 20, 55, 69, 82, 97, 109, 117, 127, -50 };
28 bits = BitBufferHelper.getBits(data, 88, 8); //BYTE extraOffsetBits = extranumBits = 0
29 Assert.assertTrue(bits[0] == -50);
31 bits = BitBufferHelper.getBits(data, 8, 16); //Short
32 Assert.assertTrue(bits[0] == 12);
33 Assert.assertTrue(bits[1] == 14);
35 bits = BitBufferHelper.getBits(data, 32, 32); //Int
36 Assert.assertTrue(bits[0] == 55);
37 Assert.assertTrue(bits[1] == 69);
38 Assert.assertTrue(bits[2] == 82);
39 Assert.assertTrue(bits[3] == 97);
41 bits = BitBufferHelper.getBits(data, 16, 48); //Long
42 Assert.assertTrue(bits[0] == 14);
43 Assert.assertTrue(bits[1] == 20);
44 Assert.assertTrue(bits[2] == 55);
45 Assert.assertTrue(bits[3] == 69);
46 Assert.assertTrue(bits[4] == 82);
47 Assert.assertTrue(bits[5] == 97);
49 bits = BitBufferHelper.getBits(data, 40, 7); //BYTE extraOffsetBits = extranumBits != 0
50 Assert.assertTrue(bits[0] == 34);
52 bits = BitBufferHelper.getBits(data, 8, 13); //Short
53 Assert.assertTrue(bits[0] == 1);
54 Assert.assertTrue(bits[1] == -127);
56 bits = BitBufferHelper.getBits(data, 32, 28); //Int
57 Assert.assertTrue(bits[0] == 3);
58 Assert.assertTrue(bits[1] == 116);
59 Assert.assertTrue(bits[2] == 85);
60 Assert.assertTrue(bits[3] == 38);
62 bits = BitBufferHelper.getBits(data, 16, 41); //Long
63 Assert.assertTrue(bits[0] == 0);
64 Assert.assertTrue(bits[1] == 28);
65 Assert.assertTrue(bits[2] == 40);
66 Assert.assertTrue(bits[3] == 110);
67 Assert.assertTrue(bits[4] == -118);
68 Assert.assertTrue(bits[5] == -92);
70 bits = BitBufferHelper.getBits(data, 3, 7); //BYTE extraOffsetBits != 0; extranumBits == 0
71 Assert.assertTrue(bits[0] == 40);
73 bits = BitBufferHelper.getBits(data, 13, 16); //Short
74 Assert.assertTrue(bits[0] == -127);
75 Assert.assertTrue(bits[1] == -62);
77 bits = BitBufferHelper.getBits(data, 5, 32); //Int
78 Assert.assertTrue(bits[0] == 65);
79 Assert.assertTrue(bits[1] == -127);
80 Assert.assertTrue(bits[2] == -62);
81 Assert.assertTrue(bits[3] == -122);
83 bits = BitBufferHelper.getBits(data, 23, 48); //Long
84 Assert.assertTrue(bits[0] == 10);
85 Assert.assertTrue(bits[1] == 27);
86 Assert.assertTrue(bits[2] == -94);
87 Assert.assertTrue(bits[3] == -87);
88 Assert.assertTrue(bits[4] == 48);
89 Assert.assertTrue(bits[5] == -74);
91 bits = BitBufferHelper.getBits(data, 66, 9); //BYTE extraOffsetBits != 0; extranumBits != 0
92 Assert.assertTrue(bits[0] == 1);
93 Assert.assertTrue(bits[1] == 107);
95 bits = BitBufferHelper.getBits(data, 13, 15); //Short
96 Assert.assertTrue(bits[0] == 64);
97 Assert.assertTrue(bits[1] == -31);
99 bits = BitBufferHelper.getBits(data, 5, 29); //Int
100 Assert.assertTrue(bits[0] == 8);
101 Assert.assertTrue(bits[1] == 48);
102 Assert.assertTrue(bits[2] == 56);
103 Assert.assertTrue(bits[3] == 80);
105 bits = BitBufferHelper.getBits(data, 31, 43); //Long
106 Assert.assertTrue(bits[0] == 0);
107 Assert.assertTrue(bits[1] == -35);
108 Assert.assertTrue(bits[2] == 21);
109 Assert.assertTrue(bits[3] == 73);
110 Assert.assertTrue(bits[4] == -123);
111 Assert.assertTrue(bits[5] == -75);
113 bits = BitBufferHelper.getBits(data, 4, 12); //Short
114 Assert.assertTrue(bits[0] == 10);
115 Assert.assertTrue(bits[1] == 12);
117 byte[] data1 = { 0, 8 };
118 bits = BitBufferHelper.getBits(data1, 7, 9); //Short
119 Assert.assertTrue(bits[0] == 0);
120 Assert.assertTrue(bits[1] == 8);
122 byte[] data2 = { 2, 8 };
123 bits = BitBufferHelper.getBits(data2, 0, 7); //Short
124 Assert.assertTrue(bits[0] == 1);
126 bits = BitBufferHelper.getBits(data2, 7, 9); //Short
127 Assert.assertTrue(bits[0] == 0);
128 Assert.assertTrue(bits[1] == 8);
131 // [01101100][01100000]
134 public void testGetBytes() throws Exception {
135 byte data[] = { 108, 96, 125, -112, 5, 6, 108, 8, 9, 10, 11, 12, 13,
136 14, 15, 16, 17, 18, 19, 20, 21, 22 };
139 Assert.assertTrue(BitBufferHelper.getBits(data, 0, 8)[0] == 108);
140 Assert.assertTrue(BitBufferHelper.getBits(data, 8, 8)[0] == 96);
142 x = BitBufferHelper.getBits(data, 0, 10);
143 Assert.assertTrue(x[0] == 1);
144 Assert.assertTrue(x[1] == -79);
146 x = BitBufferHelper.getBits(data, 3, 8);
147 Assert.assertTrue(x[0] == 99);
148 //Assert.assertTrue(x[1] == 97);
153 public void testMSBMask() {
154 int numBits = 1; //MSB
155 int mask = BitBufferHelper.getMSBMask(numBits);
156 Assert.assertTrue(mask == 128);
159 mask = BitBufferHelper.getMSBMask(numBits);
160 Assert.assertTrue(mask == 255);
163 mask = BitBufferHelper.getMSBMask(numBits);
164 Assert.assertTrue(mask == 192);
168 public void testLSBMask() {
169 int numBits = 1; //LSB
170 int mask = BitBufferHelper.getLSBMask(numBits);
171 Assert.assertTrue(mask == 1);
174 mask = BitBufferHelper.getLSBMask(numBits);
175 Assert.assertTrue(mask == 7);
178 mask = BitBufferHelper.getLSBMask(numBits);
179 Assert.assertTrue(mask == 255);
183 public void testToByteArray() {
184 short sh = Short.MAX_VALUE;
185 byte[] data_sh = new byte[Byte.SIZE / 8];
186 data_sh = BitBufferHelper.toByteArray(sh);
187 Assert.assertTrue(data_sh[0] == 127);
188 Assert.assertTrue(data_sh[1] == -1);
190 short sh2 = Short.MIN_VALUE;
191 byte[] data_sh2 = new byte[Byte.SIZE / 8];
192 data_sh2 = BitBufferHelper.toByteArray(sh2);
193 Assert.assertTrue(data_sh2[0] == -128);
194 Assert.assertTrue(data_sh2[1] == 0);
197 byte[] data_sh3 = new byte[Byte.SIZE / 8];
198 data_sh3 = BitBufferHelper.toByteArray(sh3);
199 Assert.assertTrue(data_sh3[0] == 64);
200 Assert.assertTrue(data_sh3[1] == 0);
202 short sh4 = 146; //TCP headerlenflags - startoffset = 103
203 byte[] data_sh4 = new byte[Byte.SIZE / 8];
204 data_sh4 = BitBufferHelper.toByteArray(sh4);
205 Assert.assertTrue(data_sh4[0] == 0);
206 Assert.assertTrue(data_sh4[1] == -110);
208 short sh4_2 = 5000; //IPv4 Offset - startOffset = 51 (to 63)
209 byte[] data_sh4_2 = new byte[Byte.SIZE / 8];
210 data_sh4_2 = BitBufferHelper.toByteArray(sh4_2);
211 Assert.assertTrue(data_sh4_2[0] == 19);
212 Assert.assertTrue(data_sh4_2[1] == -120);
214 short sh4_3 = 5312; //numEndRestBits < numBitstoShiftBy
215 byte[] data_sh4_3 = new byte[Byte.SIZE / 8];
216 data_sh4_3 = BitBufferHelper.toByteArray(sh4_3);
217 Assert.assertTrue(data_sh4_3[0] == 20);
218 Assert.assertTrue(data_sh4_3[1] == -64);
220 int Int = Integer.MAX_VALUE;
221 byte[] data_Int = new byte[Integer.SIZE / 8];
222 data_Int = BitBufferHelper.toByteArray(Int);
223 Assert.assertTrue(data_Int[0] == 127);
224 Assert.assertTrue(data_Int[1] == -1);
225 Assert.assertTrue(data_Int[2] == -1);
226 Assert.assertTrue(data_Int[3] == -1);
228 int Int2 = Integer.MIN_VALUE;
229 byte[] data_Int2 = new byte[Integer.SIZE / 8];
230 data_Int2 = BitBufferHelper.toByteArray(Int2);
231 Assert.assertTrue(data_Int2[0] == -128);
232 Assert.assertTrue(data_Int2[1] == 0);
233 Assert.assertTrue(data_Int2[2] == 0);
234 Assert.assertTrue(data_Int2[3] == 0);
236 int Int3 = 1077952576;
237 byte[] data_Int3 = new byte[Integer.SIZE / 8];
238 data_Int3 = BitBufferHelper.toByteArray(Int3);
239 Assert.assertTrue(data_Int3[0] == 64);
240 Assert.assertTrue(data_Int3[1] == 64);
241 Assert.assertTrue(data_Int3[2] == 64);
242 Assert.assertTrue(data_Int3[3] == 64);
244 long Lng = Long.MAX_VALUE;
245 byte[] data_lng = new byte[Long.SIZE / 8];
246 data_lng = BitBufferHelper.toByteArray(Lng);
247 Assert.assertTrue(data_lng[0] == 127);
248 Assert.assertTrue(data_lng[1] == -1);
249 Assert.assertTrue(data_lng[2] == -1);
250 Assert.assertTrue(data_lng[3] == -1);
251 Assert.assertTrue(data_lng[4] == -1);
252 Assert.assertTrue(data_lng[5] == -1);
253 Assert.assertTrue(data_lng[6] == -1);
254 Assert.assertTrue(data_lng[7] == -1);
256 long Lng2 = Long.MIN_VALUE;
257 byte[] data_lng2 = new byte[Long.SIZE / 8];
258 data_lng2 = BitBufferHelper.toByteArray(Lng2);
259 Assert.assertTrue(data_lng2[0] == -128);
260 Assert.assertTrue(data_lng2[1] == 0);
261 Assert.assertTrue(data_lng2[2] == 0);
262 Assert.assertTrue(data_lng2[3] == 0);
263 Assert.assertTrue(data_lng2[4] == 0);
264 Assert.assertTrue(data_lng2[5] == 0);
265 Assert.assertTrue(data_lng2[6] == 0);
266 Assert.assertTrue(data_lng2[7] == 0);
268 byte B = Byte.MAX_VALUE;
269 byte[] data_B = new byte[Byte.SIZE / 8];
270 data_B = BitBufferHelper.toByteArray(B);
271 Assert.assertTrue(data_B[0] == 127);
273 byte B1 = Byte.MIN_VALUE;
274 byte[] data_B1 = new byte[Byte.SIZE / 8];
275 data_B1 = BitBufferHelper.toByteArray(B1);
276 Assert.assertTrue(data_B1[0] == -128);
279 byte[] data_B2 = new byte[Byte.SIZE / 8];
280 data_B2 = BitBufferHelper.toByteArray(B2);
281 Assert.assertTrue(data_B2[0] == 64);
284 byte[] data_B3 = new byte[Byte.SIZE / 8];
285 data_B3 = BitBufferHelper.toByteArray(B3);
286 Assert.assertTrue(data_B3[0] == 32);
291 public void testToByteArrayVariable() {
294 data_sh = BitBufferHelper.toByteArray(511, len);
295 Assert.assertTrue(data_sh[0] == (byte) 255);
296 Assert.assertTrue(data_sh[1] == (byte) 128);
298 data_sh = BitBufferHelper.toByteArray((int) 511, len);
299 Assert.assertTrue(data_sh[0] == (byte) 255);
300 Assert.assertTrue(data_sh[1] == (byte) 128);
302 data_sh = BitBufferHelper.toByteArray((long) 511, len);
303 Assert.assertTrue(data_sh[0] == (byte) 255);
304 Assert.assertTrue(data_sh[1] == (byte) 128);
308 public void testToInt() {
310 Assert.assertTrue(BitBufferHelper.toNumber(data) == 1);
312 byte data2[] = { 1, 1 };
313 Assert.assertTrue(BitBufferHelper.toNumber(data2) == 257);
315 byte data3[] = { 1, 1, 1 };
316 Assert.assertTrue(BitBufferHelper.toNumber(data3) == 65793);
320 public void testToLongGetter() {
321 byte data[] = { 1, 1 };
322 Assert.assertTrue(BitBufferHelper.getLong(data) == 257L);
326 public void testSetByte() throws Exception {
328 byte[] data = new byte[20];
331 BitBufferHelper.setByte(data, input, 0, Byte.SIZE);
332 Assert.assertTrue(data[0] == 125);
335 BitBufferHelper.setByte(data, input, 152, Byte.SIZE);
336 Assert.assertTrue(data[19] == 109);
340 public void testSetBytes() throws Exception {
341 byte[] input = { 0, 1 };
342 byte[] data = { 6, 0 };
344 BitBufferHelper.setBytes(data, input, 7, 9);
345 Assert.assertTrue(data[0] == 6);
346 Assert.assertTrue(data[1] == 1);
350 //INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
351 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001]*/
352 public void testInsertBits() throws Exception {
353 //CASE 1: startOffset%8 == 0 && numBits%8 == 0
354 byte inputdata[] = { 75, 110, 107, 80, 10, 12, 35, 100, 125, 65 };
358 byte data1[] = new byte[2];
361 BitBufferHelper.insertBits(data1, inputdata, startOffset, numBits);
362 Assert.assertTrue(data1[0] == 75);
363 Assert.assertTrue(data1[1] == 110);
365 byte data2[] = new byte[4];
368 BitBufferHelper.insertBits(data2, inputdata, startOffset, numBits);
369 Assert.assertTrue(data2[0] == 75);
370 Assert.assertTrue(data2[1] == 110);
371 Assert.assertTrue(data2[2] == 107);
372 Assert.assertTrue(data2[3] == 80);
374 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
375 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] // OUTPUT: [01001011] [01101000] = {75, 104}
376 byte data10[] = new byte[2];
379 BitBufferHelper.insertBits(data10, inputdata, startOffset, numBits);
380 Assert.assertTrue(data10[0] == 75);
381 Assert.assertTrue(data10[1] == 104);
383 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
384 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] // OUTPUT: [01001000] = {72}
385 byte data11[] = new byte[4];
388 BitBufferHelper.insertBits(data11, inputdata, startOffset, numBits);
389 Assert.assertTrue(data11[1] == 72);
391 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
392 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [01001011] [01101110] [01101000] = {75, 110, 105}
393 byte data12[] = new byte[4];
396 BitBufferHelper.insertBits(data12, inputdata, startOffset, numBits);
397 Assert.assertTrue(data12[0] == 75);
398 Assert.assertTrue(data12[1] == 110);
399 Assert.assertTrue(data12[2] == 106);
401 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
402 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [01001011] [01101110] [01100000] = {75, 110, 96}
403 byte data13[] = new byte[4];
406 BitBufferHelper.insertBits(data13, inputdata, startOffset, numBits);
407 Assert.assertTrue(data13[1] == 75);
408 Assert.assertTrue(data13[2] == 110);
409 Assert.assertTrue(data13[3] == 96);
411 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
412 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [01001011] [01101110] [01101011] [10100000]= {75, 110, 107, 80}
413 byte data14[] = new byte[4];
416 BitBufferHelper.insertBits(data14, inputdata, startOffset, numBits);
417 Assert.assertTrue(data14[0] == 75);
418 Assert.assertTrue(data14[1] == 110);
419 Assert.assertTrue(data14[2] == 107);
420 Assert.assertTrue(data14[3] == 80);
422 //CASE 3: startOffset%8 != 0, numBits%8 = 0
423 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
424 // [01001011] [01101110] [01101011] [10100000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00001001] [11000000] = {72, 96}
425 byte data16[] = new byte[5];
428 BitBufferHelper.insertBits(data16, inputdata, startOffset, numBits);
429 Assert.assertTrue(data16[0] == 9);
430 Assert.assertTrue(data16[1] == 96);
431 Assert.assertTrue(data16[2] == 0);
433 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
434 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
435 // OUTPUT: [00000100] [1011 0110] [1110 0000] = {4, -54, -96}
439 byte data17[] = new byte[5];
440 BitBufferHelper.insertBits(data17, inputdata, startOffset, numBits);
441 Assert.assertTrue(data17[0] == 9);
442 Assert.assertTrue(data17[1] == 109);
443 Assert.assertTrue(data17[2] == -64);
444 Assert.assertTrue(data17[3] == 0);
446 // INPUT: {79, 110, 111}
447 // = [01001111] [01101110] [01101111]
448 //OUTPUT: [0000 1001] [1110 1101] [110 00000] = {9, -19, -64}
449 byte data18[] = new byte[5];
450 byte inputdata3[] = { 79, 110, 111 };
453 BitBufferHelper.insertBits(data18, inputdata3, startOffset, numBits);
454 Assert.assertTrue(data18[0] == 9);
455 Assert.assertTrue(data18[1] == -19);
456 Assert.assertTrue(data18[2] == -64);
458 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
459 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
460 // OUTPUT: [0000 1001] [0110 1101] [1100 1101] [0110 1010] [0000 0001] = {9, 109, -51, 106, 0}
464 byte data19[] = new byte[5];
465 BitBufferHelper.insertBits(data19, inputdata, startOffset, numBits);
466 Assert.assertTrue(data19[0] == 9);
467 Assert.assertTrue(data19[1] == 109);
468 Assert.assertTrue(data19[2] == -51);
469 Assert.assertTrue(data19[3] == 106);
470 Assert.assertTrue(data19[4] == 0);
472 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
473 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
474 // OUTPUT: data[4, 5, 6] = [0 010 0101] [1 011 0111] [0 000 0000] = {37, -73, 0}
477 byte data20[] = new byte[7];
478 BitBufferHelper.insertBits(data20, inputdata, startOffset, numBits);
479 Assert.assertTrue(data20[4] == 37);
480 Assert.assertTrue(data20[5] == -73);
481 Assert.assertTrue(data20[6] == 0);
483 //CASE 4: extranumBits != 0 AND extraOffsetBits != 0
484 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
485 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
486 // OUTPUT: [0000 1001] [0100 0000] = {9, 96}
489 byte data21[] = new byte[7];
490 BitBufferHelper.insertBits(data21, inputdata, startOffset, numBits);
491 Assert.assertTrue(data21[0] == 9);
492 Assert.assertTrue(data21[1] == 64);
493 Assert.assertTrue(data21[2] == 0);
495 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
496 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
497 // OUTPUT: data = [00000 010] [01011 011] [01110 000] = {37, -73, 0}
500 byte data22[] = new byte[7];
501 BitBufferHelper.insertBits(data22, inputdata, startOffset, numBits);
502 Assert.assertTrue(data22[0] == 2);
503 Assert.assertTrue(data22[1] == 91);
504 Assert.assertTrue(data22[2] == 112);
506 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
507 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
508 // OUTPUT: [0000 1001] [0110 1101] [110 01101] [01 00000] = {9, 109, -51, 64}
511 byte data23[] = new byte[7];
512 BitBufferHelper.insertBits(data23, inputdata, startOffset, numBits);
513 Assert.assertTrue(data23[0] == 9);
514 Assert.assertTrue(data23[1] == 109);
515 Assert.assertTrue(data23[2] == -51);
516 Assert.assertTrue(data23[3] == 64);
518 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
519 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
520 // OUTPUT: [0000 1001] [0110 1101] = {9, 109}
523 byte data24[] = new byte[7];
524 BitBufferHelper.insertBits(data24, inputdata, startOffset, numBits);
525 Assert.assertTrue(data24[0] == 9);
526 Assert.assertTrue(data24[1] == 109);
527 Assert.assertTrue(data24[2] == 0);
529 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
530 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
531 // OUTPUT: [0000 0100] [1011 0110] [1110 0110] = {4, -74, -26}
534 byte data25[] = new byte[7];
535 BitBufferHelper.insertBits(data25, inputdata, startOffset, numBits);
536 Assert.assertTrue(data25[0] == 4);
537 Assert.assertTrue(data25[1] == -74);
538 Assert.assertTrue(data25[2] == -26);
539 Assert.assertTrue(data25[3] == -0);
541 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
542 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
543 // OUTPUT: [0000 0010] [0101 1011] = {0, 2, 91, 0}
546 byte data26[] = new byte[7];
547 BitBufferHelper.insertBits(data26, inputdata, startOffset, numBits);
548 Assert.assertTrue(data26[0] == 0);
549 Assert.assertTrue(data26[1] == 2);
550 Assert.assertTrue(data26[2] == 91);
551 Assert.assertTrue(data26[3] == 0);
553 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
554 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
555 // OUTPUT: [000 01001] [011 01101] [110 0 0000] = {9, 109, -64, 0}
558 byte data27[] = new byte[7];
559 BitBufferHelper.insertBits(data27, inputdata, startOffset, numBits);
560 Assert.assertTrue(data27[0] == 9);
561 Assert.assertTrue(data27[1] == 109);
562 Assert.assertTrue(data27[2] == -64);
563 Assert.assertTrue(data27[3] == 0);
565 // INPUT: {75, 110, 107, 80, 10, 12, 35, 100, 125, 65} =
566 // [01001011] [01101110] [01101011] [01010000] [00001010] [00001100] [00100011] [01100100] [11111101] [01000001] //OUTPUT: [00000000] [00000100] [10110110] [11100000]= {0, 4, -54, -96}
567 // OUTPUT: [00 000000] [00 000000] [00 010010] [11 011011] [10 011010] [11 010100] [0000 0000] = {0, 0, 18, -37,-102,-44,0}
570 byte data28[] = new byte[7];
571 BitBufferHelper.insertBits(data28, inputdata, startOffset, numBits);
572 Assert.assertTrue(data28[0] == 0);
573 Assert.assertTrue(data28[1] == 0);
574 Assert.assertTrue(data28[2] == 18);
575 Assert.assertTrue(data28[3] == -37);
576 Assert.assertTrue(data28[4] == -102);
577 Assert.assertTrue(data28[5] == -44);
578 Assert.assertTrue(data28[6] == 0);
583 public void testGetShort() throws Exception {
584 byte data[] = new byte[2];
587 int length = 9; // num bits
588 Assert.assertTrue(BitBufferHelper.getShort(data, length) == 264);
592 short result = BitBufferHelper.getShort(data, length);
593 Assert.assertTrue(result == 8);
597 result = BitBufferHelper.getShort(data, length);
598 Assert.assertTrue(result == 47);
600 //[0000 0001] [0001 0100] [0110 0100]
601 byte[] data1 = new byte[2];
603 data1[1] = 20; //data1[2] = 100;
605 result = BitBufferHelper.getShort(data1, length);
606 Assert.assertTrue(result == 276);
608 byte[] data2 = new byte[2];
610 data2[1] = 99; //data2[2] = 100;
612 result = BitBufferHelper.getShort(data2, length);
613 Assert.assertTrue(result == 99);
615 byte[] data3 = { 100, 50 };
616 result = BitBufferHelper.getShort(data3);
617 Assert.assertTrue(result == 25650);
621 public void testToIntVarLength() throws Exception {
622 byte data[] = { (byte) 255, (byte) 128 };
623 int length = 9; // num bits
624 Assert.assertTrue(BitBufferHelper.getInt(data, length) == 384);
626 byte data2[] = { 0, 8 };
627 Assert.assertTrue(BitBufferHelper.getInt(data2, 9) == 8);
629 byte data3[] = { 1, 1, 1 };
630 Assert.assertTrue(BitBufferHelper.getInt(data3) == 65793);
632 byte data4[] = { 1, 1, 1 };
633 Assert.assertTrue(BitBufferHelper.getInt(data4) == 65793);
635 byte data5[] = { 1, 1 };
636 Assert.assertTrue(BitBufferHelper.getInt(data5) == 257);
641 public void testShiftBitstoLSB() {
642 byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
644 byte[] data2 = { 8, 9, 10 };
645 byte[] shiftedBytes2 = BitBufferHelper.shiftBitsToLSB(data2, 11);
647 Assert.assertTrue(shiftedBytes2[0] == 0);
648 Assert.assertTrue(shiftedBytes2[1] == 64);
649 Assert.assertTrue(shiftedBytes2[2] == 72);
651 byte[] shiftedBytes = BitBufferHelper.shiftBitsToLSB(data, 49);
653 Assert.assertTrue(shiftedBytes[0] == 0);
654 Assert.assertTrue(shiftedBytes[1] == 2);
655 Assert.assertTrue(shiftedBytes[2] == 4);
656 Assert.assertTrue(shiftedBytes[3] == 6);
657 Assert.assertTrue(shiftedBytes[4] == 8);
658 Assert.assertTrue(shiftedBytes[5] == 10);
659 Assert.assertTrue(shiftedBytes[6] == 12);
660 Assert.assertTrue(shiftedBytes[7] == 14);
661 Assert.assertTrue(shiftedBytes[8] == 16);
662 Assert.assertTrue(shiftedBytes[9] == 18);
664 byte[] data1 = { 1, 2, 3 };
665 byte[] shiftedBytes1 = BitBufferHelper.shiftBitsToLSB(data1, 18);
666 Assert.assertTrue(shiftedBytes1[0] == 0);
667 Assert.assertTrue(shiftedBytes1[1] == 4);
668 Assert.assertTrue(shiftedBytes1[2] == 8);
673 public void testShiftBitstoLSBMSB() {
674 byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
676 byte[] clone = BitBufferHelper.shiftBitsToMSB(BitBufferHelper
677 .shiftBitsToLSB(data, 72), 72);
679 Assert.assertTrue(clone[0] == 1);
680 Assert.assertTrue(clone[1] == 2);
681 Assert.assertTrue(clone[2] == 3);
682 Assert.assertTrue(clone[3] == 4);
683 Assert.assertTrue(clone[4] == 5);
684 Assert.assertTrue(clone[5] == 6);
685 Assert.assertTrue(clone[6] == 7);
686 Assert.assertTrue(clone[7] == 8);
687 Assert.assertTrue(clone[8] == 9);
688 Assert.assertTrue(clone[9] == 0);