1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3;
18
19 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.util.Arrays;
24 import java.util.SplittableRandom;
25 import java.util.UUID;
26
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.params.ParameterizedTest;
29 import org.junit.jupiter.params.provider.ValueSource;
30
31
32
33
34 public class ConversionTest extends AbstractLangTest {
35
36 static String dbgPrint(final boolean[] src) {
37 final StringBuilder sb = new StringBuilder();
38 for (final boolean e : src) {
39 if (e) {
40 sb.append("1, ");
41 } else {
42 sb.append("0, ");
43 }
44 }
45 final String out = sb.toString();
46 return out.substring(0, out.length() - 1);
47 }
48
49 @ParameterizedTest
50 @ValueSource(ints = {-1, 8, 99})
51 public void binaryBeMsb0ToHexDigitPosOutsideArray(final int index) {
52 assertThrows(IndexOutOfBoundsException.class,
53 () -> Conversion.binaryBeMsb0ToHexDigit(new boolean[8], index));
54 }
55
56
57
58
59 @Test
60 public void testBinaryBeMsb0ToHexDigit() {
61 assertEquals(
62 '0', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, false, false, false}));
63 assertEquals(
64 '1', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, false, false, true}));
65 assertEquals(
66 '2', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, false, true, false}));
67 assertEquals(
68 '3', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, false, true, true}));
69 assertEquals(
70 '4', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, true, false, false}));
71 assertEquals(
72 '5', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, true, false, true}));
73 assertEquals(
74 '6', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, true, true, false}));
75 assertEquals(
76 '7', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{false, true, true, true}));
77 assertEquals(
78 '8', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, false, false, false}));
79 assertEquals(
80 '9', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, false, false, true}));
81 assertEquals(
82 'a', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, false, true, false}));
83 assertEquals(
84 'b', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, false, true, true}));
85 assertEquals(
86 'c', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, true, false, false}));
87 assertEquals(
88 'd', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, true, false, true}));
89 assertEquals(
90 'e', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, true, true, false}));
91 assertEquals(
92 'f', Conversion.binaryBeMsb0ToHexDigit(new boolean[]{true, true, true, true}));
93 assertEquals(
94 '4',
95 Conversion.binaryBeMsb0ToHexDigit(new boolean[]{
96 true, false, false, false, false, false, false, false, false, false, false,
97 false, false, true, false, false}));
98 assertThrows(IllegalArgumentException.class, () -> Conversion.binaryBeMsb0ToHexDigit(new boolean[]{}));
99 }
100
101
102
103
104 @Test
105 public void testBinaryBeMsb0ToHexDigit_2args() {
106 assertEquals(
107 '5',
108 Conversion.binaryBeMsb0ToHexDigit(new boolean[]{
109 true, false, false, false, false, false, false, false, false, false, false,
110 true, false, true, false, false}, 2));
111
112 final boolean[] shortArray = {true, true, false};
113 assertEquals('6', Conversion.binaryBeMsb0ToHexDigit(shortArray, 0));
114 assertEquals('3', Conversion.binaryBeMsb0ToHexDigit(shortArray, 1));
115 assertEquals('1', Conversion.binaryBeMsb0ToHexDigit(shortArray, 2));
116 final boolean[] shortArray2 = {true, true, true, false, false, true, false, true};
117 assertEquals('5', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 0));
118 assertEquals('2', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 1));
119 assertEquals('9', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 2));
120 assertEquals('c', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 3));
121 assertEquals('e', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 4));
122 assertEquals('7', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 5));
123 assertEquals('3', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 6));
124 assertEquals('1', Conversion.binaryBeMsb0ToHexDigit(shortArray2, 7));
125 final boolean[] multiBytesArray = {
126 true, true, false, false, true, false, true, false, true, true, true, false, false,
127 true, false, true};
128 assertEquals('5', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 0));
129 assertEquals('2', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 1));
130 assertEquals('9', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 2));
131 assertEquals('c', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 3));
132 assertEquals('e', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 4));
133 assertEquals('7', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 5));
134 assertEquals('b', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 6));
135 assertEquals('5', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 7));
136
137 assertEquals('a', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 8));
138 assertEquals('5', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 9));
139 assertEquals('2', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 10));
140 assertEquals('9', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 11));
141 assertEquals('c', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 12));
142 assertEquals('6', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 13));
143 assertEquals('3', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 14));
144 assertEquals('1', Conversion.binaryBeMsb0ToHexDigit(multiBytesArray, 15));
145
146 }
147
148
149
150
151 @Test
152 public void testBinaryToByte() {
153 final boolean[] src = {
154 false, false, true, true, true, false, true, true, true, true, true, true, true,
155 false, false, false, true, true, true, true, false, false, false, false, false,
156 false, true, true, true, false, false, false, false, false, false, false, true,
157 true, true, true, true, false, false, false, false, true, false, false, true, true,
158 false, false, false, false, true, false, true, false, true, false, false, true,
159 true, false, true, true, true, false, false, false, false, true};
160
161 assertEquals((byte) 0x00, Conversion.binaryToByte(src, 0 * 4, (byte) 0, 0, 0 * 4));
162 assertEquals((byte) 0x0C, Conversion.binaryToByte(src, 0 * 4, (byte) 0, 0, 1 * 4));
163 assertEquals((byte) 0xDC, Conversion.binaryToByte(src, 0 * 4, (byte) 0, 0, 2 * 4));
164 assertEquals((byte) 0xFD, Conversion.binaryToByte(src, 1 * 4, (byte) 0, 0, 2 * 4));
165 assertEquals((byte) 0x34, Conversion.binaryToByte(src, 0 * 4, (byte) 0x34, 0, 0 * 4));
166 assertEquals((byte) 0x84, Conversion.binaryToByte(src, 17 * 4, (byte) 0x34, 4, 1 * 4));
167 }
168
169
170
171
172 @Test
173 public void testBinaryToHexDigit() {
174 assertEquals(
175 '0', Conversion.binaryToHexDigit(new boolean[]{false, false, false, false}));
176 assertEquals('1', Conversion.binaryToHexDigit(new boolean[]{true, false, false, false}));
177 assertEquals('2', Conversion.binaryToHexDigit(new boolean[]{false, true, false, false}));
178 assertEquals('3', Conversion.binaryToHexDigit(new boolean[]{true, true, false, false}));
179 assertEquals('4', Conversion.binaryToHexDigit(new boolean[]{false, false, true, false}));
180 assertEquals('5', Conversion.binaryToHexDigit(new boolean[]{true, false, true, false}));
181 assertEquals('6', Conversion.binaryToHexDigit(new boolean[]{false, true, true, false}));
182 assertEquals('7', Conversion.binaryToHexDigit(new boolean[]{true, true, true, false}));
183 assertEquals('8', Conversion.binaryToHexDigit(new boolean[]{false, false, false, true}));
184 assertEquals('9', Conversion.binaryToHexDigit(new boolean[]{true, false, false, true}));
185 assertEquals('a', Conversion.binaryToHexDigit(new boolean[]{false, true, false, true}));
186 assertEquals('b', Conversion.binaryToHexDigit(new boolean[]{true, true, false, true}));
187 assertEquals('c', Conversion.binaryToHexDigit(new boolean[]{false, false, true, true}));
188 assertEquals('d', Conversion.binaryToHexDigit(new boolean[]{true, false, true, true}));
189 assertEquals('e', Conversion.binaryToHexDigit(new boolean[]{false, true, true, true}));
190 assertEquals('f', Conversion.binaryToHexDigit(new boolean[]{true, true, true, true}));
191 assertEquals('1', Conversion.binaryToHexDigit(new boolean[]{true}));
192 assertEquals(
193 'f', Conversion.binaryToHexDigit(new boolean[]{true, true, true, true, true}));
194 assertThrows(IllegalArgumentException.class, () -> Conversion.binaryToHexDigit(new boolean[]{}));
195 }
196
197
198
199
200 @Test
201 public void testBinaryToHexDigit_2args() {
202 final boolean[] shortArray = {false, true, true};
203 assertEquals('6', Conversion.binaryToHexDigit(shortArray, 0));
204 assertEquals('3', Conversion.binaryToHexDigit(shortArray, 1));
205 assertEquals('1', Conversion.binaryToHexDigit(shortArray, 2));
206 final boolean[] longArray = {true, false, true, false, false, true, true};
207 assertEquals('5', Conversion.binaryToHexDigit(longArray, 0));
208 assertEquals('2', Conversion.binaryToHexDigit(longArray, 1));
209 assertEquals('9', Conversion.binaryToHexDigit(longArray, 2));
210 assertEquals('c', Conversion.binaryToHexDigit(longArray, 3));
211 assertEquals('6', Conversion.binaryToHexDigit(longArray, 4));
212 assertEquals('3', Conversion.binaryToHexDigit(longArray, 5));
213 assertEquals('1', Conversion.binaryToHexDigit(longArray, 6));
214 }
215
216
217
218
219 @Test
220 public void testBinaryToHexDigitMsb0_4bits_2args() {
221
222
223
224
225 final boolean[] shortArray = {true, true, false, true};
226 assertEquals('d', Conversion.binaryToHexDigitMsb0_4bits(shortArray, 0));
227 final boolean[] longArray = {true, false, true, false, false, true, true};
228 assertEquals('a', Conversion.binaryToHexDigitMsb0_4bits(longArray, 0));
229 assertEquals('4', Conversion.binaryToHexDigitMsb0_4bits(longArray, 1));
230 assertEquals('9', Conversion.binaryToHexDigitMsb0_4bits(longArray, 2));
231 assertEquals('3', Conversion.binaryToHexDigitMsb0_4bits(longArray, 3));
232
233
234
235 final boolean[] maxLengthArray = {
236 true, false, true, false, false, true, true, true};
237 assertEquals('a', Conversion.binaryToHexDigitMsb0_4bits(maxLengthArray, 0));
238 assertEquals('4', Conversion.binaryToHexDigitMsb0_4bits(maxLengthArray, 1));
239 assertEquals('9', Conversion.binaryToHexDigitMsb0_4bits(maxLengthArray, 2));
240 assertEquals('3', Conversion.binaryToHexDigitMsb0_4bits(maxLengthArray, 3));
241 assertEquals('7', Conversion.binaryToHexDigitMsb0_4bits(maxLengthArray, 4));
242
243
244
245 final boolean[] javaDocCheck = {
246 true, false, false, true, true, false, true, false};
247 assertEquals('d', Conversion.binaryToHexDigitMsb0_4bits(javaDocCheck, 3));
248
249 }
250
251
252
253
254 @Test
255 public void testBinaryToHexDigitMsb0_bits() {
256 assertEquals(
257 '0',
258 Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, false, false, false}));
259 assertEquals(
260 '1',
261 Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, false, false, true}));
262 assertEquals(
263 '2',
264 Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, false, true, false}));
265 assertEquals(
266 '3', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, false, true, true}));
267 assertEquals(
268 '4',
269 Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, true, false, false}));
270 assertEquals(
271 '5', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, true, false, true}));
272 assertEquals(
273 '6', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, true, true, false}));
274 assertEquals(
275 '7', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{false, true, true, true}));
276 assertEquals(
277 '8',
278 Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, false, false, false}));
279 assertEquals(
280 '9', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, false, false, true}));
281 assertEquals(
282 'a', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, false, true, false}));
283 assertEquals(
284 'b', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, false, true, true}));
285 assertEquals(
286 'c', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, true, false, false}));
287 assertEquals(
288 'd', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, true, false, true}));
289 assertEquals(
290 'e', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, true, true, false}));
291 assertEquals(
292 'f', Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{true, true, true, true}));
293 assertThrows(IllegalArgumentException.class, () -> Conversion.binaryToHexDigitMsb0_4bits(new boolean[]{}));
294 }
295
296 @Test
297 public void testBinaryToHexDigitReverse() {
298 final SplittableRandom rng = new SplittableRandom();
299 final boolean[] x = new boolean[8];
300 for (int i = 0; i < 100; i++) {
301 Conversion.longToBinary(rng.nextLong(), 0, x, 0, 8);
302 for (int j = 1; j <= 8; j++) {
303 final boolean[] a = Arrays.copyOf(x, j);
304 final boolean[] b = a.clone();
305 ArrayUtils.reverse(b);
306 for (int k = 0; k < j; k++) {
307 assertEquals(Conversion.binaryToHexDigit(a, k),
308 Conversion.binaryBeMsb0ToHexDigit(b, k));
309 }
310 }
311 }
312 }
313
314
315
316
317 @Test
318 public void testBinaryToInt() {
319 final boolean[] src = {
320 false, false, true, true, true, false, true, true, true, true, true, true, true,
321 false, false, false, true, true, true, true, false, false, false, false, false,
322 false, true, true, true, false, false, false, false, false, false, false, true,
323 true, true, true, true, false, false, false, false, true, false, false, true, true,
324 false, false, false, false, true, false, true, false, true, false, false, true,
325 true, false, true, true, true, false, false, false, false, true};
326
327 assertEquals(0x00000000, Conversion.binaryToInt(src, 0 * 4, 0, 0, 0 * 4));
328 assertEquals(0x0000000C, Conversion.binaryToInt(src, 0 * 4, 0, 0, 1 * 4));
329 assertEquals(0x1C0F1FDC, Conversion.binaryToInt(src, 0 * 4, 0, 0, 8 * 4));
330 assertEquals(0x01C0F1FD, Conversion.binaryToInt(src, 1 * 4, 0, 0, 8 * 4));
331 assertEquals(0x12345679, Conversion.binaryToInt(src, 0 * 4, 0x12345679, 0, 0 * 4));
332 assertEquals(0x87645679, Conversion.binaryToInt(src, 15 * 4, 0x12345679, 20, 3 * 4));
333 }
334
335
336
337
338 @Test
339 public void testBinaryToLong() {
340 final boolean[] src = {
341 false, false, true, true, true, false, true, true, true, true, true, true, true,
342 false, false, false, true, true, true, true, false, false, false, false, false,
343 false, true, true, true, false, false, false, false, false, false, false, true,
344 true, true, true, true, false, false, false, false, true, false, false, true, true,
345 false, false, false, false, true, false, true, false, true, false, false, true,
346 true, false, true, true, true, false, false, false, false, true};
347
348 assertEquals(0x0000000000000000L, Conversion.binaryToLong(src, 0, 0L, 0, 0));
349 assertEquals(0x000000000000000CL, Conversion.binaryToLong(src, 0, 0L, 0, 1 * 4));
350 assertEquals(0x000000001C0F1FDCL, Conversion.binaryToLong(src, 0, 0L, 0, 8 * 4));
351 assertEquals(0x0000000001C0F1FDL, Conversion.binaryToLong(src, 1 * 4, 0L, 0, 8 * 4));
352 assertEquals(
353 0x123456798ABCDEF0L, Conversion.binaryToLong(src, 0, 0x123456798ABCDEF0L, 0, 0));
354 assertEquals(
355 0x1234567876BCDEF0L,
356 Conversion.binaryToLong(src, 15 * 4, 0x123456798ABCDEF0L, 24, 3 * 4));
357 }
358
359
360
361
362 @Test
363 public void testBinaryToShort() {
364 final boolean[] src = {
365 false, false, true, true, true, false, true, true, true, true, true, true, true,
366 false, false, false, true, true, true, true, false, false, false, false, false,
367 false, true, true, true, false, false, false, false, false, false, false, true,
368 true, true, true, true, false, false, false, false, true, false, false, true, true,
369 false, false, false, false, true, false, true, false, true, false, false, true,
370 true, false, true, true, true, false, false, false, false, true};
371
372 assertEquals((short) 0x0000, Conversion.binaryToShort(src, 0 * 4, (short) 0, 0, 0 * 4));
373 assertEquals((short) 0x000C, Conversion.binaryToShort(src, 0 * 4, (short) 0, 0, 1 * 4));
374 assertEquals((short) 0x1FDC, Conversion.binaryToShort(src, 0 * 4, (short) 0, 0, 4 * 4));
375 assertEquals((short) 0xF1FD, Conversion.binaryToShort(src, 1 * 4, (short) 0, 0, 4 * 4));
376 assertEquals(
377 (short) 0x1234, Conversion.binaryToShort(src, 0 * 4, (short) 0x1234, 0, 0 * 4));
378 assertEquals(
379 (short) 0x8764, Conversion.binaryToShort(src, 15 * 4, (short) 0x1234, 4, 3 * 4));
380 }
381
382
383
384
385 @Test
386 public void testByteArrayToInt() {
387 final byte[] src = {
388 (byte) 0xCD, (byte) 0xF1, (byte) 0xF0, (byte) 0xC1, (byte) 0x0F, (byte) 0x12, (byte) 0x34,
389 (byte) 0x56, (byte) 0x78};
390 assertEquals(0x00000000, Conversion.byteArrayToInt(src, 0, 0, 0, 0));
391 assertEquals(0x000000CD, Conversion.byteArrayToInt(src, 0, 0, 0, 1));
392 assertEquals(0xC1F0F1CD, Conversion.byteArrayToInt(src, 0, 0, 0, 4));
393 assertEquals(0x0FC1F0F1, Conversion.byteArrayToInt(src, 1, 0, 0, 4));
394 assertEquals(0x12345678, Conversion.byteArrayToInt(src, 0, 0x12345678, 0, 0));
395 assertEquals(0xCD345678, Conversion.byteArrayToInt(src, 0, 0x12345678, 24, 1));
396
397 }
398
399
400
401
402 @Test
403 public void testByteArrayToLong() {
404 final byte[] src = {
405 (byte) 0xCD, (byte) 0xF1, (byte) 0xF0, (byte) 0xC1, (byte) 0x0F, (byte) 0x12, (byte) 0x34,
406 (byte) 0x56, (byte) 0x78};
407 assertEquals(0x0000000000000000L, Conversion.byteArrayToLong(src, 0, 0L, 0, 0));
408 assertEquals(0x00000000000000CDL, Conversion.byteArrayToLong(src, 0, 0L, 0, 1));
409 assertEquals(0x00000000C1F0F1CDL, Conversion.byteArrayToLong(src, 0, 0L, 0, 4));
410 assertEquals(0x000000000FC1F0F1L, Conversion.byteArrayToLong(src, 1, 0L, 0, 4));
411 assertEquals(
412 0x123456789ABCDEF0L, Conversion.byteArrayToLong(src, 0, 0x123456789ABCDEF0L, 0, 0));
413 assertEquals(
414 0x12345678CDBCDEF0L, Conversion.byteArrayToLong(src, 0, 0x123456789ABCDEF0L, 24, 1));
415 assertEquals(
416 0x123456789A7856F0L, Conversion.byteArrayToLong(src, 7, 0x123456789ABCDEF0L, 8, 2));
417 }
418
419
420
421
422 @Test
423 public void testByteArrayToShort() {
424 final byte[] src = {
425 (byte) 0xCD, (byte) 0xF1, (byte) 0xF0, (byte) 0xC1, (byte) 0x0F, (byte) 0x12, (byte) 0x34,
426 (byte) 0x56, (byte) 0x78};
427 assertEquals((short) 0x0000, Conversion.byteArrayToShort(src, 0, (short) 0, 0, 0));
428 assertEquals((short) 0x00CD, Conversion.byteArrayToShort(src, 0, (short) 0, 0, 1));
429 assertEquals((short) 0xF1CD, Conversion.byteArrayToShort(src, 0, (short) 0, 0, 2));
430 assertEquals((short) 0xF0F1, Conversion.byteArrayToShort(src, 1, (short) 0, 0, 2));
431 assertEquals((short) 0x1234, Conversion.byteArrayToShort(src, 0, (short) 0x1234, 0, 0));
432 assertEquals((short) 0xCD34, Conversion.byteArrayToShort(src, 0, (short) 0x1234, 8, 1));
433
434
435 }
436
437
438
439
440 @Test
441 public void testByteArrayToUuid() {
442 assertEquals(
443 new UUID(0xFFFFFFFFFFFFFFFFL, 0xFFFFFFFFFFFFFFFFL),
444 Conversion.byteArrayToUuid(new byte[]{
445 (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
446 (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
447 (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff}, 0));
448 assertEquals(
449 new UUID(0xFFEEDDCCBBAA9988L, 0x7766554433221100L),
450 Conversion.byteArrayToUuid(new byte[]{
451 (byte) 0x88, (byte) 0x99, (byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd,
452 (byte) 0xee, (byte) 0xff, (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
453 (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77}, 0));
454 assertEquals(
455 new UUID(0xFFEEDDCCBBAA9988L, 0x7766554433221100L),
456 Conversion.byteArrayToUuid(new byte[]{
457 0, 0, (byte) 0x88, (byte) 0x99, (byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd,
458 (byte) 0xee, (byte) 0xff, (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
459 (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77}, 2));
460 }
461
462
463
464
465 @Test
466 public void testByteToBinary() {
467 assertArrayEquals(
468 new boolean[]{}, Conversion.byteToBinary((byte) 0x00, 0, new boolean[]{}, 0, 0));
469 assertArrayEquals(
470 new boolean[]{}, Conversion.byteToBinary((byte) 0x00, 100, new boolean[]{}, 0, 0));
471 assertArrayEquals(
472 new boolean[]{}, Conversion.byteToBinary((byte) 0x00, 0, new boolean[]{}, 100, 0));
473 assertArrayEquals(
474 new boolean[69], Conversion.byteToBinary((byte) 0xEF, 0, new boolean[69], 0, 0));
475 assertArrayEquals(new boolean[]{
476 true, false, false, false, false, false, false, false, false, false, false, false,
477 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 0, 1));
478 assertArrayEquals(new boolean[]{
479 true, false, false, false, false, false, false, false, false, false, false, false,
480 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 0, 2));
481 assertArrayEquals(new boolean[]{
482 true, false, true, false, false, false, false, false, false, false, false, false,
483 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 0, 3));
484 assertArrayEquals(new boolean[]{
485 true, false, true, false, true, false, false, false, false, false, false, false,
486 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 0, 7));
487 assertArrayEquals(new boolean[]{
488 true, false, true, false, true, false, false, true, false, false, false, false,
489 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 0, 8));
490 assertArrayEquals(new boolean[]{
491 false, false, true, false, false, false, false, false, false, false, false, false,
492 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 2, 1));
493 assertArrayEquals(new boolean[]{
494 false, false, true, false, true, false, true, false, false, true, false, false,
495 false}, Conversion.byteToBinary((byte) 0x95, 0, new boolean[13], 2, 8));
496 assertArrayEquals(new boolean[]{
497 false, true, false, true, false, false, true, false, false, false, false, false,
498 false}, Conversion.byteToBinary((byte) 0x95, 1, new boolean[13], 0, 7));
499 assertArrayEquals(new boolean[]{
500 true, false, true, false, false, true, false, false, false, false, false, false,
501 false}, Conversion.byteToBinary((byte) 0x95, 2, new boolean[13], 0, 6));
502
503
504
505 assertArrayEquals(new boolean[]{
506 false, false, false, true, false, true, false, false, true, false, false, false,
507 false}, Conversion.byteToBinary((byte) 0x95, 2, new boolean[13], 3, 6));
508 }
509
510
511
512
513 @Test
514 public void testByteToHex() {
515 assertEquals("", Conversion.byteToHex((byte) 0x00, 0, "", 0, 0));
516 assertEquals("", Conversion.byteToHex((byte) 0x00, 100, "", 0, 0));
517 assertEquals("", Conversion.byteToHex((byte) 0x00, 0, "", 100, 0));
518 assertEquals("00000", Conversion.byteToHex((byte) 0xEF, 0, "00000", 0, 0));
519 assertEquals("f0000", Conversion.byteToHex((byte) 0xEF, 0, "00000", 0, 1));
520 assertEquals("fe000", Conversion.byteToHex((byte) 0xEF, 0, "00000", 0, 2));
521 assertEquals("000f0", Conversion.byteToHex((byte) 0xEF, 0, "00000", 3, 1));
522 assertEquals("000fe", Conversion.byteToHex((byte) 0xEF, 0, "00000", 3, 2));
523 assertEquals("70000", Conversion.byteToHex((byte) 0xEF, 1, "00000", 0, 1));
524 assertEquals("b0000", Conversion.byteToHex((byte) 0xEF, 2, "00000", 0, 1));
525 assertEquals("000df", Conversion.byteToHex((byte) 0xEF, 3, "00000", 3, 2));
526
527
528 assertEquals("000e0", Conversion.byteToHex((byte) 0xEF, 4, "00000", 3, 1));
529 assertEquals("fe", Conversion.byteToHex((byte) 0xEF, 0, "", 0, 2));
530 assertThrows(StringIndexOutOfBoundsException.class, () -> Conversion.byteToHex((byte) 0xEF, 0, "", 1, 2));
531 }
532
533
534
535
536 @Test
537 public void testHexDigitMsb0ToBinary() {
538 assertArrayEquals(
539 new boolean[]{false, false, false, false}, Conversion.hexDigitMsb0ToBinary('0'));
540 assertArrayEquals(
541 new boolean[]{false, false, false, true}, Conversion.hexDigitMsb0ToBinary('1'));
542 assertArrayEquals(
543 new boolean[]{false, false, true, false}, Conversion.hexDigitMsb0ToBinary('2'));
544 assertArrayEquals(
545 new boolean[]{false, false, true, true}, Conversion.hexDigitMsb0ToBinary('3'));
546 assertArrayEquals(
547 new boolean[]{false, true, false, false}, Conversion.hexDigitMsb0ToBinary('4'));
548 assertArrayEquals(
549 new boolean[]{false, true, false, true}, Conversion.hexDigitMsb0ToBinary('5'));
550 assertArrayEquals(
551 new boolean[]{false, true, true, false}, Conversion.hexDigitMsb0ToBinary('6'));
552 assertArrayEquals(
553 new boolean[]{false, true, true, true}, Conversion.hexDigitMsb0ToBinary('7'));
554 assertArrayEquals(
555 new boolean[]{true, false, false, false}, Conversion.hexDigitMsb0ToBinary('8'));
556 assertArrayEquals(
557 new boolean[]{true, false, false, true}, Conversion.hexDigitMsb0ToBinary('9'));
558 assertArrayEquals(
559 new boolean[]{true, false, true, false}, Conversion.hexDigitMsb0ToBinary('A'));
560 assertArrayEquals(
561 new boolean[]{true, false, true, false}, Conversion.hexDigitMsb0ToBinary('a'));
562 assertArrayEquals(
563 new boolean[]{true, false, true, true}, Conversion.hexDigitMsb0ToBinary('B'));
564 assertArrayEquals(
565 new boolean[]{true, false, true, true}, Conversion.hexDigitMsb0ToBinary('b'));
566 assertArrayEquals(
567 new boolean[]{true, true, false, false}, Conversion.hexDigitMsb0ToBinary('C'));
568 assertArrayEquals(
569 new boolean[]{true, true, false, false}, Conversion.hexDigitMsb0ToBinary('c'));
570 assertArrayEquals(
571 new boolean[]{true, true, false, true}, Conversion.hexDigitMsb0ToBinary('D'));
572 assertArrayEquals(
573 new boolean[]{true, true, false, true}, Conversion.hexDigitMsb0ToBinary('d'));
574 assertArrayEquals(
575 new boolean[]{true, true, true, false}, Conversion.hexDigitMsb0ToBinary('E'));
576 assertArrayEquals(
577 new boolean[]{true, true, true, false}, Conversion.hexDigitMsb0ToBinary('e'));
578 assertArrayEquals(
579 new boolean[]{true, true, true, true}, Conversion.hexDigitMsb0ToBinary('F'));
580 assertArrayEquals(
581 new boolean[]{true, true, true, true}, Conversion.hexDigitMsb0ToBinary('f'));
582 assertThrows(IllegalArgumentException.class, () -> Conversion.hexDigitMsb0ToBinary('G'));
583 }
584
585
586
587
588 @Test
589 public void testHexDigitMsb0ToInt() {
590 assertEquals(0x0, Conversion.hexDigitMsb0ToInt('0'));
591 assertEquals(0x8, Conversion.hexDigitMsb0ToInt('1'));
592 assertEquals(0x4, Conversion.hexDigitMsb0ToInt('2'));
593 assertEquals(0xC, Conversion.hexDigitMsb0ToInt('3'));
594 assertEquals(0x2, Conversion.hexDigitMsb0ToInt('4'));
595 assertEquals(0xA, Conversion.hexDigitMsb0ToInt('5'));
596 assertEquals(0x6, Conversion.hexDigitMsb0ToInt('6'));
597 assertEquals(0xE, Conversion.hexDigitMsb0ToInt('7'));
598 assertEquals(0x1, Conversion.hexDigitMsb0ToInt('8'));
599 assertEquals(0x9, Conversion.hexDigitMsb0ToInt('9'));
600 assertEquals(0x5, Conversion.hexDigitMsb0ToInt('A'));
601 assertEquals(0x5, Conversion.hexDigitMsb0ToInt('a'));
602 assertEquals(0xD, Conversion.hexDigitMsb0ToInt('B'));
603 assertEquals(0xD, Conversion.hexDigitMsb0ToInt('b'));
604 assertEquals(0x3, Conversion.hexDigitMsb0ToInt('C'));
605 assertEquals(0x3, Conversion.hexDigitMsb0ToInt('c'));
606 assertEquals(0xB, Conversion.hexDigitMsb0ToInt('D'));
607 assertEquals(0xB, Conversion.hexDigitMsb0ToInt('d'));
608 assertEquals(0x7, Conversion.hexDigitMsb0ToInt('E'));
609 assertEquals(0x7, Conversion.hexDigitMsb0ToInt('e'));
610 assertEquals(0xF, Conversion.hexDigitMsb0ToInt('F'));
611 assertEquals(0xF, Conversion.hexDigitMsb0ToInt('f'));
612 assertThrows(IllegalArgumentException.class, () -> Conversion.hexDigitMsb0ToInt('G'));
613 }
614
615
616
617
618 @Test
619 public void testHexDigitToBinary() {
620 assertArrayEquals(
621 new boolean[]{false, false, false, false}, Conversion.hexDigitToBinary('0'));
622 assertArrayEquals(
623 new boolean[]{true, false, false, false}, Conversion.hexDigitToBinary('1'));
624 assertArrayEquals(
625 new boolean[]{false, true, false, false}, Conversion.hexDigitToBinary('2'));
626 assertArrayEquals(
627 new boolean[]{true, true, false, false}, Conversion.hexDigitToBinary('3'));
628 assertArrayEquals(
629 new boolean[]{false, false, true, false}, Conversion.hexDigitToBinary('4'));
630 assertArrayEquals(
631 new boolean[]{true, false, true, false}, Conversion.hexDigitToBinary('5'));
632 assertArrayEquals(
633 new boolean[]{false, true, true, false}, Conversion.hexDigitToBinary('6'));
634 assertArrayEquals(
635 new boolean[]{true, true, true, false}, Conversion.hexDigitToBinary('7'));
636 assertArrayEquals(
637 new boolean[]{false, false, false, true}, Conversion.hexDigitToBinary('8'));
638 assertArrayEquals(
639 new boolean[]{true, false, false, true}, Conversion.hexDigitToBinary('9'));
640 assertArrayEquals(
641 new boolean[]{false, true, false, true}, Conversion.hexDigitToBinary('A'));
642 assertArrayEquals(
643 new boolean[]{false, true, false, true}, Conversion.hexDigitToBinary('a'));
644 assertArrayEquals(
645 new boolean[]{true, true, false, true}, Conversion.hexDigitToBinary('B'));
646 assertArrayEquals(
647 new boolean[]{true, true, false, true}, Conversion.hexDigitToBinary('b'));
648 assertArrayEquals(
649 new boolean[]{false, false, true, true}, Conversion.hexDigitToBinary('C'));
650 assertArrayEquals(
651 new boolean[]{false, false, true, true}, Conversion.hexDigitToBinary('c'));
652 assertArrayEquals(
653 new boolean[]{true, false, true, true}, Conversion.hexDigitToBinary('D'));
654 assertArrayEquals(
655 new boolean[]{true, false, true, true}, Conversion.hexDigitToBinary('d'));
656 assertArrayEquals(
657 new boolean[]{false, true, true, true}, Conversion.hexDigitToBinary('E'));
658 assertArrayEquals(
659 new boolean[]{false, true, true, true}, Conversion.hexDigitToBinary('e'));
660 assertArrayEquals(
661 new boolean[]{true, true, true, true}, Conversion.hexDigitToBinary('F'));
662 assertArrayEquals(
663 new boolean[]{true, true, true, true}, Conversion.hexDigitToBinary('f'));
664 assertThrows(IllegalArgumentException.class, () -> Conversion.hexDigitToBinary('G'));
665 }
666
667
668
669
670 @Test
671 public void testHexDigitToInt() {
672 assertEquals(0, Conversion.hexDigitToInt('0'));
673 assertEquals(1, Conversion.hexDigitToInt('1'));
674 assertEquals(2, Conversion.hexDigitToInt('2'));
675 assertEquals(3, Conversion.hexDigitToInt('3'));
676 assertEquals(4, Conversion.hexDigitToInt('4'));
677 assertEquals(5, Conversion.hexDigitToInt('5'));
678 assertEquals(6, Conversion.hexDigitToInt('6'));
679 assertEquals(7, Conversion.hexDigitToInt('7'));
680 assertEquals(8, Conversion.hexDigitToInt('8'));
681 assertEquals(9, Conversion.hexDigitToInt('9'));
682 assertEquals(10, Conversion.hexDigitToInt('A'));
683 assertEquals(10, Conversion.hexDigitToInt('a'));
684 assertEquals(11, Conversion.hexDigitToInt('B'));
685 assertEquals(11, Conversion.hexDigitToInt('b'));
686 assertEquals(12, Conversion.hexDigitToInt('C'));
687 assertEquals(12, Conversion.hexDigitToInt('c'));
688 assertEquals(13, Conversion.hexDigitToInt('D'));
689 assertEquals(13, Conversion.hexDigitToInt('d'));
690 assertEquals(14, Conversion.hexDigitToInt('E'));
691 assertEquals(14, Conversion.hexDigitToInt('e'));
692 assertEquals(15, Conversion.hexDigitToInt('F'));
693 assertEquals(15, Conversion.hexDigitToInt('f'));
694 assertThrows(IllegalArgumentException.class, () -> Conversion.hexDigitToInt('G'));
695 }
696
697
698
699
700 @Test
701 public void testHexToByte() {
702 final String src = "CDF1F0C10F12345678";
703 assertEquals((byte) 0x00, Conversion.hexToByte(src, 0, (byte) 0, 0, 0));
704 assertEquals((byte) 0x0C, Conversion.hexToByte(src, 0, (byte) 0, 0, 1));
705 assertEquals((byte) 0xDC, Conversion.hexToByte(src, 0, (byte) 0, 0, 2));
706 assertEquals((byte) 0xFD, Conversion.hexToByte(src, 1, (byte) 0, 0, 2));
707 assertEquals((byte) 0x34, Conversion.hexToByte(src, 0, (byte) 0x34, 0, 0));
708 assertEquals((byte) 0x84, Conversion.hexToByte(src, 17, (byte) 0x34, 4, 1));
709 }
710
711
712
713
714 @Test
715 public void testHexToInt() {
716 final String src = "CDF1F0C10F12345678";
717 assertEquals(0x00000000, Conversion.hexToInt(src, 0, 0, 0, 0));
718 assertEquals(0x0000000C, Conversion.hexToInt(src, 0, 0, 0, 1));
719 assertEquals(0x1C0F1FDC, Conversion.hexToInt(src, 0, 0, 0, 8));
720 assertEquals(0x01C0F1FD, Conversion.hexToInt(src, 1, 0, 0, 8));
721 assertEquals(0x12345679, Conversion.hexToInt(src, 0, 0x12345679, 0, 0));
722 assertEquals(0x87645679, Conversion.hexToInt(src, 15, 0x12345679, 20, 3));
723 }
724
725
726
727
728 @Test
729 public void testHexToLong() {
730 final String src = "CDF1F0C10F12345678";
731 assertEquals(0x0000000000000000L, Conversion.hexToLong(src, 0, 0L, 0, 0));
732 assertEquals(0x000000000000000CL, Conversion.hexToLong(src, 0, 0L, 0, 1));
733 assertEquals(0x000000001C0F1FDCL, Conversion.hexToLong(src, 0, 0L, 0, 8));
734 assertEquals(0x0000000001C0F1FDL, Conversion.hexToLong(src, 1, 0L, 0, 8));
735 assertEquals(
736 0x123456798ABCDEF0L, Conversion.hexToLong(src, 0, 0x123456798ABCDEF0L, 0, 0));
737 assertEquals(
738 0x1234567876BCDEF0L, Conversion.hexToLong(src, 15, 0x123456798ABCDEF0L, 24, 3));
739 }
740
741
742
743
744 @Test
745 public void testHexToShort() {
746 final String src = "CDF1F0C10F12345678";
747 assertEquals((short) 0x0000, Conversion.hexToShort(src, 0, (short) 0, 0, 0));
748 assertEquals((short) 0x000C, Conversion.hexToShort(src, 0, (short) 0, 0, 1));
749 assertEquals((short) 0x1FDC, Conversion.hexToShort(src, 0, (short) 0, 0, 4));
750 assertEquals((short) 0xF1FD, Conversion.hexToShort(src, 1, (short) 0, 0, 4));
751 assertEquals((short) 0x1234, Conversion.hexToShort(src, 0, (short) 0x1234, 0, 0));
752 assertEquals((short) 0x8764, Conversion.hexToShort(src, 15, (short) 0x1234, 4, 3));
753 }
754
755
756
757
758 @Test
759 public void testIntArrayToLong() {
760 final int[] src = {0xCDF1F0C1, 0x0F123456, 0x78000000};
761 assertEquals(0x0000000000000000L, Conversion.intArrayToLong(src, 0, 0L, 0, 0));
762 assertEquals(0x0000000000000000L, Conversion.intArrayToLong(src, 1, 0L, 0, 0));
763 assertEquals(0x00000000CDF1F0C1L, Conversion.intArrayToLong(src, 0, 0L, 0, 1));
764 assertEquals(0x0F123456CDF1F0C1L, Conversion.intArrayToLong(src, 0, 0L, 0, 2));
765 assertEquals(0x000000000F123456L, Conversion.intArrayToLong(src, 1, 0L, 0, 1));
766 assertEquals(
767 0x123456789ABCDEF0L, Conversion.intArrayToLong(src, 0, 0x123456789ABCDEF0L, 0, 0));
768 assertEquals(
769 0x1234567878000000L, Conversion.intArrayToLong(src, 2, 0x123456789ABCDEF0L, 0, 1));
770
771 }
772
773
774
775
776 @Test
777 public void testIntToBinary() {
778 assertArrayEquals(
779 new boolean[]{}, Conversion.intToBinary(0x00000000, 0, new boolean[]{}, 0, 0));
780 assertArrayEquals(
781 new boolean[]{}, Conversion.intToBinary(0x00000000, 100, new boolean[]{}, 0, 0));
782 assertArrayEquals(
783 new boolean[]{}, Conversion.intToBinary(0x00000000, 0, new boolean[]{}, 100, 0));
784 assertArrayEquals(
785 new boolean[69], Conversion.intToBinary(0x90ABCDEF, 0, new boolean[69], 0, 0));
786 assertArrayEquals(new boolean[]{
787 true, false, false, false, false, false, false, false, false, false, false, false,
788 false, false, false, false, false, false, false, false, false, false, false, false,
789 false, false, false, false, false, false, false, false, false, false, false, false,
790 false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 0, 1));
791 assertArrayEquals(new boolean[]{
792 true, true, false, false, false, false, false, false, false, false, false, false,
793 false, false, false, false, false, false, false, false, false, false, false, false,
794 false, false, false, false, false, false, false, false, false, false, false, false,
795 false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 0, 2));
796 assertArrayEquals(new boolean[]{
797 true, true, true, false, false, false, false, false, false, false, false, false,
798 false, false, false, false, false, false, false, false, false, false, false, false,
799 false, false, false, false, false, false, false, false, false, false, false, false,
800 false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 0, 3));
801 assertArrayEquals(
802 new boolean[]{
803 true, true, true, true, false, true, true, true, true, false, true, true,
804 false, false, true, true, true, true, false, true, false, true, false, true,
805 false, false, false, false, true, false, false, false, false, false, false,
806 false, false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 0, 31));
807 assertArrayEquals(
808 new boolean[]{
809 true, true, true, true, false, true, true, true, true, false, true, true,
810 false, false, true, true, true, true, false, true, false, true, false, true,
811 false, false, false, false, true, false, false, true, false, false, false,
812 false, false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 0, 32));
813 assertArrayEquals(new boolean[]{
814 false, false, true, false, false, false, false, false, false, false, false, false,
815 false, false, false, false, false, false, false, false, false, false, false, false,
816 false, false, false, false, false, false, false, false, false, false, false, false,
817 false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 2, 1));
818 assertArrayEquals(
819 new boolean[]{
820 false, false, true, true, true, true, false, true, true, true, true, false,
821 true, true, false, false, true, true, true, true, false, true, false, true,
822 false, true, false, false, false, false, true, false, false, true, false,
823 false, false}, Conversion.intToBinary(0x90ABCDEF, 0, new boolean[37], 2, 32));
824 assertArrayEquals(
825 new boolean[]{
826 true, true, true, false, true, true, true, true, false, true, true, false,
827 false, true, true, true, true, false, true, false, true, false, true, false,
828 false, false, false, true, false, false, true, false, false, false, false,
829 false, false}, Conversion.intToBinary(0x90ABCDEF, 1, new boolean[37], 0, 31));
830 assertArrayEquals(
831 new boolean[]{
832 true, true, false, true, true, true, true, false, true, true, false, false,
833 true, true, true, true, false, true, false, true, false, true, false, false,
834 false, false, true, false, false, true, false, false, false, false, false,
835 false, false}, Conversion.intToBinary(0x90ABCDEF, 2, new boolean[37], 0, 30));
836
837
838
839
840
841
842 assertArrayEquals(
843 new boolean[]{
844 false, false, false, true, true, false, true, true, true, true, false, true,
845 true, false, false, true, true, true, true, false, true, false, true, false,
846 true, false, false, false, false, true, false, false, true, false, false,
847 false, false}, Conversion.intToBinary(0x90ABCDEF, 2, new boolean[37], 3, 30));
848 }
849
850
851
852
853 @Test
854 public void testIntToByteArray() {
855 assertArrayEquals(
856 new byte[]{}, Conversion.intToByteArray(0x00000000, 0, new byte[]{}, 0, 0));
857 assertArrayEquals(
858 new byte[]{}, Conversion.intToByteArray(0x00000000, 100, new byte[]{}, 0, 0));
859 assertArrayEquals(
860 new byte[]{}, Conversion.intToByteArray(0x00000000, 0, new byte[]{}, 100, 0));
861 assertArrayEquals(
862 new byte[]{
863 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
864 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
865 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 0));
867 assertArrayEquals(
868 new byte[]{
869 (byte) 0xEF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
870 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
871 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
873 assertArrayEquals(
874 new byte[]{
875 (byte) 0xEF, (byte) 0xCD, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
876 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
877 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 2));
879 assertArrayEquals(
880 new byte[]{
881 (byte) 0xEF, (byte) 0xCD, (byte) 0xAB, (byte) 0x90, (byte) 0xFF, (byte) 0xFF,
882 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
883 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 4));
885 assertArrayEquals(
886 new byte[]{
887 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xFF, (byte) 0xFF,
888 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
889 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 1));
891 assertArrayEquals(
892 new byte[]{
893 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xFF,
894 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
895 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 2));
897 assertArrayEquals(
898 new byte[]{
899 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xAB,
900 (byte) 0x90, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
901 Conversion.intToByteArray(0x90ABCDEF, 0, new byte[]{
902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 4));
903 assertArrayEquals(
904 new byte[]{
905 (byte) 0xF7, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
906 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
907 Conversion.intToByteArray(0x90ABCDEF, 1, new byte[]{
908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
909 assertArrayEquals(
910 new byte[]{
911 (byte) 0x7B, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
912 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
913 Conversion.intToByteArray(0x90ABCDEF, 2, new byte[]{
914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
915 assertArrayEquals(
916 new byte[]{
917 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0x6F, (byte) 0x5E, (byte) 0x85,
918 (byte) 0xFC, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
919 Conversion.intToByteArray(0x90ABCDEF, 5, new byte[]{
920 -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 4));
921
922
923
924 assertArrayEquals(
925 new byte[]{
926 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0x5E, (byte) 0x85, (byte) 0xFC,
927 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
928 Conversion.intToByteArray(0x90ABCDEF, 13, new byte[]{
929 -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 3));
930 }
931
932
933
934
935 @Test
936 public void testIntToHex() {
937 assertEquals("", Conversion.intToHex(0x00000000, 0, "", 0, 0));
938 assertEquals("", Conversion.intToHex(0x00000000, 100, "", 0, 0));
939 assertEquals("", Conversion.intToHex(0x00000000, 0, "", 100, 0));
940 assertEquals(
941 "ffffffffffffffffffffffff",
942 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 0, 0));
943 assertEquals(
944 "3fffffffffffffffffffffff",
945 Conversion.intToHex(0x90ABCDE3, 0, "ffffffffffffffffffffffff", 0, 1));
946 assertEquals(
947 "feffffffffffffffffffffff",
948 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 0, 2));
949 assertEquals(
950 "fedcffffffffffffffffffff",
951 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 0, 4));
952 assertEquals(
953 "fedcba0fffffffffffffffff",
954 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 0, 7));
955 assertEquals(
956 "fedcba09ffffffffffffffff",
957 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 0, 8));
958 assertEquals(
959 "fff3ffffffffffffffffffff",
960 Conversion.intToHex(0x90ABCDE3, 0, "ffffffffffffffffffffffff", 3, 1));
961 assertEquals(
962 "ffffefffffffffffffffffff",
963 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 3, 2));
964 assertEquals(
965 "ffffedcfffffffffffffffff",
966 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 3, 4));
967 assertEquals(
968 "ffffedcba0ffffffffffffff",
969 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 3, 7));
970 assertEquals(
971 "ffffedcba09fffffffffffff",
972 Conversion.intToHex(0x90ABCDEF, 0, "ffffffffffffffffffffffff", 3, 8));
973 assertEquals(
974 "7fffffffffffffffffffffff",
975 Conversion.intToHex(0x90ABCDEF, 1, "ffffffffffffffffffffffff", 0, 1));
976 assertEquals(
977 "bfffffffffffffffffffffff",
978 Conversion.intToHex(0x90ABCDEF, 2, "ffffffffffffffffffffffff", 0, 1));
979 assertEquals(
980 "fffdb97512ffffffffffffff",
981 Conversion.intToHex(0x90ABCDEF, 3, "ffffffffffffffffffffffff", 3, 8));
982
983
984 assertEquals(
985 "fffedcba09ffffffffffffff",
986 Conversion.intToHex(0x90ABCDEF, 4, "ffffffffffffffffffffffff", 3, 7));
987 assertEquals("fedcba09", Conversion.intToHex(0x90ABCDEF, 0, "", 0, 8));
988 assertThrows(StringIndexOutOfBoundsException.class, () -> Conversion.intToHex(0x90ABCDEF, 0, "", 1, 8));
989 }
990
991
992
993
994 @Test
995 public void testIntToHexDigit() {
996 assertEquals('0', Conversion.intToHexDigit(0));
997 assertEquals('1', Conversion.intToHexDigit(1));
998 assertEquals('2', Conversion.intToHexDigit(2));
999 assertEquals('3', Conversion.intToHexDigit(3));
1000 assertEquals('4', Conversion.intToHexDigit(4));
1001 assertEquals('5', Conversion.intToHexDigit(5));
1002 assertEquals('6', Conversion.intToHexDigit(6));
1003 assertEquals('7', Conversion.intToHexDigit(7));
1004 assertEquals('8', Conversion.intToHexDigit(8));
1005 assertEquals('9', Conversion.intToHexDigit(9));
1006 assertEquals('a', Conversion.intToHexDigit(10));
1007 assertEquals('b', Conversion.intToHexDigit(11));
1008 assertEquals('c', Conversion.intToHexDigit(12));
1009 assertEquals('d', Conversion.intToHexDigit(13));
1010 assertEquals('e', Conversion.intToHexDigit(14));
1011 assertEquals('f', Conversion.intToHexDigit(15));
1012 assertThrows(IllegalArgumentException.class, () -> Conversion.intToHexDigit(16));
1013 }
1014
1015
1016
1017
1018 @Test
1019 public void testIntToHexDigitMsb0() {
1020 assertEquals('0', Conversion.intToHexDigitMsb0(0));
1021 assertEquals('8', Conversion.intToHexDigitMsb0(1));
1022 assertEquals('4', Conversion.intToHexDigitMsb0(2));
1023 assertEquals('c', Conversion.intToHexDigitMsb0(3));
1024 assertEquals('2', Conversion.intToHexDigitMsb0(4));
1025 assertEquals('a', Conversion.intToHexDigitMsb0(5));
1026 assertEquals('6', Conversion.intToHexDigitMsb0(6));
1027 assertEquals('e', Conversion.intToHexDigitMsb0(7));
1028 assertEquals('1', Conversion.intToHexDigitMsb0(8));
1029 assertEquals('9', Conversion.intToHexDigitMsb0(9));
1030 assertEquals('5', Conversion.intToHexDigitMsb0(10));
1031 assertEquals('d', Conversion.intToHexDigitMsb0(11));
1032 assertEquals('3', Conversion.intToHexDigitMsb0(12));
1033 assertEquals('b', Conversion.intToHexDigitMsb0(13));
1034 assertEquals('7', Conversion.intToHexDigitMsb0(14));
1035 assertEquals('f', Conversion.intToHexDigitMsb0(15));
1036 assertThrows(IllegalArgumentException.class, () -> Conversion.intToHexDigitMsb0(16));
1037 }
1038
1039
1040
1041
1042 @Test
1043 public void testIntToShortArray() {
1044 assertArrayEquals(
1045 new short[]{}, Conversion.intToShortArray(0x00000000, 0, new short[]{}, 0, 0));
1046 assertArrayEquals(
1047 new short[]{}, Conversion.intToShortArray(0x00000000, 100, new short[]{}, 0, 0));
1048 assertArrayEquals(
1049 new short[]{}, Conversion.intToShortArray(0x00000000, 0, new short[]{}, 100, 0));
1050 assertArrayEquals(
1051 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF},
1052 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 0, 0));
1053 assertArrayEquals(
1054 new short[]{(short) 0x5678, (short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF},
1055 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 0, 1));
1056 assertArrayEquals(
1057 new short[]{(short) 0x5678, (short) 0x1234, (short) 0xFFFF, (short) 0xFFFF},
1058 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 0, 2));
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068 assertArrayEquals(
1069 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x5678, (short) 0x1234},
1070 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 2, 2));
1071 assertArrayEquals(
1072 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x5678, (short) 0xFFFF},
1073 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 2, 1));
1074 assertArrayEquals(
1075 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF, (short) 0x5678},
1076 Conversion.intToShortArray(0x12345678, 0, new short[]{-1, -1, -1, -1}, 3, 1));
1077 assertArrayEquals(
1078 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x2B3C, (short) 0xFFFF},
1079 Conversion.intToShortArray(0x12345678, 1, new short[]{-1, -1, -1, -1}, 2, 1));
1080 assertArrayEquals(
1081 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x159E, (short) 0xFFFF},
1082 Conversion.intToShortArray(0x12345678, 2, new short[]{-1, -1, -1, -1}, 2, 1));
1083 assertArrayEquals(
1084 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x8ACF, (short) 0xFFFF},
1085 Conversion.intToShortArray(0x12345678, 3, new short[]{-1, -1, -1, -1}, 2, 1));
1086 assertArrayEquals(
1087 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x4567, (short) 0xFFFF},
1088 Conversion.intToShortArray(0x12345678, 4, new short[]{-1, -1, -1, -1}, 2, 1));
1089
1090
1091
1092
1093
1094
1095 assertArrayEquals(
1096 new short[]{(short) 0x091A},
1097 Conversion.intToShortArray(0x12345678, 17, new short[]{0}, 0, 1));
1098 }
1099
1100
1101
1102
1103 @Test
1104 public void testLongToBinary() {
1105 assertArrayEquals(
1106 new boolean[]{},
1107 Conversion.longToBinary(0x0000000000000000L, 0, new boolean[]{}, 0, 0));
1108 assertArrayEquals(
1109 new boolean[]{},
1110 Conversion.longToBinary(0x0000000000000000L, 100, new boolean[]{}, 0, 0));
1111 assertArrayEquals(
1112 new boolean[]{},
1113 Conversion.longToBinary(0x0000000000000000L, 0, new boolean[]{}, 100, 0));
1114 assertArrayEquals(
1115 new boolean[69],
1116 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 0));
1117
1118 assertArrayEquals(
1119 new boolean[]{
1120 true, false, false, false, false, false, false, false, false, false, false,
1121 false, false, false, false, false, false, false, false, false, false, false,
1122 false, false, false, false, false, false, false, false, false, false, false,
1123 false, false, false, false, false, false, false, false, false, false, false,
1124 false, false, false, false, false, false, false, false, false, false, false,
1125 false, false, false, false, false, false, false, false, false, false, false,
1126 false, false, false},
1127 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 1));
1128 assertArrayEquals(
1129 new boolean[]{
1130 true, true, false, false, false, false, false, false, false, false, false,
1131 false, false, false, false, false, false, false, false, false, false, false,
1132 false, false, false, false, false, false, false, false, false, false, false,
1133 false, false, false, false, false, false, false, false, false, false, false,
1134 false, false, false, false, false, false, false, false, false, false, false,
1135 false, false, false, false, false, false, false, false, false, false, false,
1136 false, false, false},
1137 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 2));
1138 assertArrayEquals(
1139 new boolean[]{
1140 true, true, true, false, false, false, false, false, false, false, false,
1141 false, false, false, false, false, false, false, false, false, false, false,
1142 false, false, false, false, false, false, false, false, false, false, false,
1143 false, false, false, false, false, false, false, false, false, false, false,
1144 false, false, false, false, false, false, false, false, false, false, false,
1145 false, false, false, false, false, false, false, false, false, false, false,
1146 false, false, false},
1147 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 3));
1148 assertArrayEquals(
1149 new boolean[]{
1150 true, true, true, true, false, true, true, true, true, false, true, true,
1151 false, false, true, true, true, true, false, true, false, true, false, true,
1152 false, false, false, false, true, false, false, true, false, false, false,
1153 true, true, true, true, false, false, true, true, false, true, false, true,
1154 false, false, false, true, false, true, true, false, false, false, true, false,
1155 false, true, false, false, false, false, false, false, false, false},
1156 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 63));
1157 assertArrayEquals(
1158 new boolean[]{
1159 true, true, true, true, false, true, true, true, true, false, true, true,
1160 false, false, true, true, true, true, false, true, false, true, false, true,
1161 false, false, false, false, true, false, false, true, false, false, false,
1162 true, true, true, true, false, false, true, true, false, true, false, true,
1163 false, false, false, true, false, true, true, false, false, false, true, false,
1164 false, true, false, false, false, false, false, false, false, false},
1165 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 0, 64));
1166 assertArrayEquals(
1167 new boolean[]{
1168 false, false, true, false, false, false, false, false, false, false, false,
1169 false, false, false, false, false, false, false, false, false, false, false,
1170 false, false, false, false, false, false, false, false, false, false, false,
1171 false, false, false, false, false, false, false, false, false, false, false,
1172 false, false, false, false, false, false, false, false, false, false, false,
1173 false, false, false, false, false, false, false, false, false, false, false,
1174 false, false, false},
1175 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 2, 1));
1176 assertArrayEquals(
1177 new boolean[]{
1178 false, false, true, true, true, true, false, true, true, true, true, false,
1179 true, true, false, false, true, true, true, true, false, true, false, true,
1180 false, true, false, false, false, false, true, false, false, true, false,
1181 false, false, true, true, true, true, false, false, true, true, false, true,
1182 false, true, false, false, false, true, false, true, true, false, false, false,
1183 true, false, false, true, false, false, false, false, false, false},
1184 Conversion.longToBinary(0x1234567890ABCDEFL, 0, new boolean[69], 2, 64));
1185 assertArrayEquals(
1186 new boolean[]{
1187 true, true, true, false, true, true, true, true, false, true, true, false,
1188 false, true, true, true, true, false, true, false, true, false, true, false,
1189 false, false, false, true, false, false, true, false, false, false, true, true,
1190 true, true, false, false, true, true, false, true, false, true, false, false,
1191 false, true, false, true, true, false, false, false, true, false, false, true,
1192 false, false, false, false, false, false, false, false, false},
1193 Conversion.longToBinary(0x1234567890ABCDEFL, 1, new boolean[69], 0, 63));
1194 assertArrayEquals(
1195 new boolean[]{
1196 true, true, false, true, true, true, true, false, true, true, false, false,
1197 true, true, true, true, false, true, false, true, false, true, false, false,
1198 false, false, true, false, false, true, false, false, false, true, true, true,
1199 true, false, false, true, true, false, true, false, true, false, false, false,
1200 true, false, true, true, false, false, false, true, false, false, true, false,
1201 false, false, false, false, false, false, false, false, false},
1202 Conversion.longToBinary(0x1234567890ABCDEFL, 2, new boolean[69], 0, 62));
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212 assertArrayEquals(
1213 new boolean[]{
1214 false, false, false, true, true, false, true, true, true, true, false, true,
1215 true, false, false, true, true, true, true, false, true, false, true, false,
1216 true, false, false, false, false, true, false, false, true, false, false,
1217 false, true, true, true, true, false, false, true, true, false, true, false,
1218 true, false, false, false, true, false, true, true, false, false, false, true,
1219 false, false, true, false, false, false, false, false, false, false},
1220 Conversion.longToBinary(0x1234567890ABCDEFL, 2, new boolean[69], 3, 62));
1221 }
1222
1223
1224
1225
1226 @Test
1227 public void testLongToByteArray() {
1228 assertArrayEquals(
1229 new byte[]{},
1230 Conversion.longToByteArray(0x0000000000000000L, 0, new byte[]{}, 0, 0));
1231 assertArrayEquals(
1232 new byte[]{},
1233 Conversion.longToByteArray(0x0000000000000000L, 100, new byte[]{}, 0, 0));
1234 assertArrayEquals(
1235 new byte[]{},
1236 Conversion.longToByteArray(0x0000000000000000L, 0, new byte[]{}, 100, 0));
1237 assertArrayEquals(
1238 new byte[]{
1239 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1240 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1241 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 0));
1243 assertArrayEquals(
1244 new byte[]{
1245 (byte) 0xEF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1246 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1247 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1248 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1249 assertArrayEquals(
1250 new byte[]{
1251 (byte) 0xEF, (byte) 0xCD, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1252 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1253 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 2));
1255 assertArrayEquals(
1256 new byte[]{
1257 (byte) 0xEF, (byte) 0xCD, (byte) 0xAB, (byte) 0x90, (byte) 0xFF, (byte) 0xFF,
1258 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1259 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 4));
1261 assertArrayEquals(
1262 new byte[]{
1263 (byte) 0xEF, (byte) 0xCD, (byte) 0xAB, (byte) 0x90, (byte) 0x78, (byte) 0x56,
1264 (byte) 0x34, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1265 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 7));
1267 assertArrayEquals(
1268 new byte[]{
1269 (byte) 0xEF, (byte) 0xCD, (byte) 0xAB, (byte) 0x90, (byte) 0x78, (byte) 0x56,
1270 (byte) 0x34, (byte) 0x12, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1271 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 8));
1273 assertArrayEquals(
1274 new byte[]{
1275 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xFF, (byte) 0xFF,
1276 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1277 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1278 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 1));
1279 assertArrayEquals(
1280 new byte[]{
1281 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xFF,
1282 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1283 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 2));
1285 assertArrayEquals(
1286 new byte[]{
1287 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xAB,
1288 (byte) 0x90, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1289 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 4));
1291 assertArrayEquals(
1292 new byte[]{
1293 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xAB,
1294 (byte) 0x90, (byte) 0x78, (byte) 0x56, (byte) 0x34, (byte) 0xFF},
1295 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 7));
1297 assertArrayEquals(
1298 new byte[]{
1299 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xAB,
1300 (byte) 0x90, (byte) 0x78, (byte) 0x56, (byte) 0x34, (byte) 0x12},
1301 Conversion.longToByteArray(0x1234567890ABCDEFL, 0, new byte[]{
1302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 8));
1303 assertArrayEquals(
1304 new byte[]{
1305 (byte) 0xF7, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1306 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1307 Conversion.longToByteArray(0x1234567890ABCDEFL, 1, new byte[]{
1308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1309 assertArrayEquals(
1310 new byte[]{
1311 (byte) 0x7B, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1312 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF},
1313 Conversion.longToByteArray(0x1234567890ABCDEFL, 2, new byte[]{
1314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1315 assertArrayEquals(
1316 new byte[]{
1317 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0x6F, (byte) 0x5E, (byte) 0x85,
1318 (byte) 0xC4, (byte) 0xB3, (byte) 0xA2, (byte) 0x91, (byte) 0x00},
1319 Conversion.longToByteArray(0x1234567890ABCDEFL, 5, new byte[]{
1320 -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 8));
1321
1322
1323
1324 assertArrayEquals(
1325 new byte[]{
1326 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0x5E, (byte) 0x85, (byte) 0xC4,
1327 (byte) 0xB3, (byte) 0xA2, (byte) 0x91, (byte) 0x00, (byte) 0xFF},
1328 Conversion.longToByteArray(0x1234567890ABCDEFL, 13, new byte[]{
1329 -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 3, 7));
1330 }
1331
1332
1333
1334
1335 @Test
1336 public void testLongToHex() {
1337 assertEquals("", Conversion.longToHex(0x0000000000000000L, 0, "", 0, 0));
1338 assertEquals("", Conversion.longToHex(0x0000000000000000L, 100, "", 0, 0));
1339 assertEquals("", Conversion.longToHex(0x0000000000000000L, 0, "", 100, 0));
1340 assertEquals(
1341 "ffffffffffffffffffffffff",
1342 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 0, 0));
1343 assertEquals(
1344 "3fffffffffffffffffffffff",
1345 Conversion.longToHex(0x1234567890ABCDE3L, 0, "ffffffffffffffffffffffff", 0, 1));
1346 assertEquals(
1347 "feffffffffffffffffffffff",
1348 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 0, 2));
1349 assertEquals(
1350 "fedcffffffffffffffffffff",
1351 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 0, 4));
1352 assertEquals(
1353 "fedcba098765432fffffffff",
1354 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 0, 15));
1355 assertEquals(
1356 "fedcba0987654321ffffffff",
1357 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 0, 16));
1358 assertEquals(
1359 "fff3ffffffffffffffffffff",
1360 Conversion.longToHex(0x1234567890ABCDE3L, 0, "ffffffffffffffffffffffff", 3, 1));
1361 assertEquals(
1362 "ffffefffffffffffffffffff",
1363 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 3, 2));
1364 assertEquals(
1365 "ffffedcfffffffffffffffff",
1366 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 3, 4));
1367 assertEquals(
1368 "ffffedcba098765432ffffff",
1369 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 3, 15));
1370 assertEquals(
1371 "ffffedcba0987654321fffff",
1372 Conversion.longToHex(0x1234567890ABCDEFL, 0, "ffffffffffffffffffffffff", 3, 16));
1373 assertEquals(
1374 "7fffffffffffffffffffffff",
1375 Conversion.longToHex(0x1234567890ABCDEFL, 1, "ffffffffffffffffffffffff", 0, 1));
1376 assertEquals(
1377 "bfffffffffffffffffffffff",
1378 Conversion.longToHex(0x1234567890ABCDEFL, 2, "ffffffffffffffffffffffff", 0, 1));
1379 assertEquals(
1380 "fffdb975121fca86420fffff",
1381 Conversion.longToHex(0x1234567890ABCDEFL, 3, "ffffffffffffffffffffffff", 3, 16));
1382
1383
1384 assertEquals(
1385 "fffedcba0987654321ffffff",
1386 Conversion.longToHex(0x1234567890ABCDEFL, 4, "ffffffffffffffffffffffff", 3, 15));
1387 assertEquals(
1388 "fedcba0987654321", Conversion.longToHex(0x1234567890ABCDEFL, 0, "", 0, 16));
1389 assertThrows(StringIndexOutOfBoundsException.class, () -> Conversion.longToHex(0x1234567890ABCDEFL, 0, "", 1, 8));
1390 }
1391
1392
1393
1394
1395 @Test
1396 public void testLongToIntArray() {
1397 assertArrayEquals(
1398 new int[]{}, Conversion.longToIntArray(0x0000000000000000L, 0, new int[]{}, 0, 0));
1399 assertArrayEquals(
1400 new int[]{}, Conversion.longToIntArray(0x0000000000000000L, 100, new int[]{}, 0, 0));
1401 assertArrayEquals(
1402 new int[]{}, Conversion.longToIntArray(0x0000000000000000L, 0, new int[]{}, 100, 0));
1403 assertArrayEquals(
1404 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF},
1405 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 0, 0));
1406 assertArrayEquals(
1407 new int[]{0x90ABCDEF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF},
1408 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 0, 1));
1409 assertArrayEquals(
1410 new int[]{0x90ABCDEF, 0x12345678, 0xFFFFFFFF, 0xFFFFFFFF},
1411 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 0, 2));
1412
1413
1414
1415
1416
1417
1418 assertArrayEquals(
1419 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x90ABCDEF, 0x12345678},
1420 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 2, 2));
1421 assertArrayEquals(
1422 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x90ABCDEF, 0xFFFFFFFF},
1423 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 2, 1));
1424 assertArrayEquals(
1425 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x90ABCDEF},
1426 Conversion.longToIntArray(0x1234567890ABCDEFL, 0, new int[]{-1, -1, -1, -1}, 3, 1));
1427 assertArrayEquals(
1428 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x4855E6F7, 0xFFFFFFFF},
1429 Conversion.longToIntArray(0x1234567890ABCDEFL, 1, new int[]{-1, -1, -1, -1}, 2, 1));
1430 assertArrayEquals(
1431 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x242AF37B, 0xFFFFFFFF},
1432 Conversion.longToIntArray(0x1234567890ABCDEFL, 2, new int[]{-1, -1, -1, -1}, 2, 1));
1433 assertArrayEquals(
1434 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x121579BD, 0xFFFFFFFF},
1435 Conversion.longToIntArray(0x1234567890ABCDEFL, 3, new int[]{-1, -1, -1, -1}, 2, 1));
1436 assertArrayEquals(
1437 new int[]{0xFFFFFFFF, 0xFFFFFFFF, 0x890ABCDE, 0xFFFFFFFF},
1438 Conversion.longToIntArray(0x1234567890ABCDEFL, 4, new int[]{-1, -1, -1, -1}, 2, 1));
1439
1440
1441
1442 assertArrayEquals(
1443 new int[]{0x091A2B3C},
1444 Conversion.longToIntArray(0x1234567890ABCDEFL, 33, new int[]{0}, 0, 1));
1445 }
1446
1447
1448
1449
1450 @Test
1451 public void testLongToShortArray() {
1452 assertArrayEquals(
1453 new short[]{},
1454 Conversion.longToShortArray(0x0000000000000000L, 0, new short[]{}, 0, 0));
1455 assertArrayEquals(
1456 new short[]{},
1457 Conversion.longToShortArray(0x0000000000000000L, 100, new short[]{}, 0, 0));
1458 assertArrayEquals(
1459 new short[]{},
1460 Conversion.longToShortArray(0x0000000000000000L, 0, new short[]{}, 100, 0));
1461 assertArrayEquals(
1462 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF},
1463 Conversion.longToShortArray(
1464 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 0, 0));
1465 assertArrayEquals(
1466 new short[]{(short) 0xCDEF, (short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF},
1467 Conversion.longToShortArray(
1468 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 0, 1));
1469 assertArrayEquals(
1470 new short[]{(short) 0xCDEF, (short) 0x90AB, (short) 0xFFFF, (short) 0xFFFF},
1471 Conversion.longToShortArray(
1472 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 0, 2));
1473 assertArrayEquals(
1474 new short[]{(short) 0xCDEF, (short) 0x90AB, (short) 0x5678, (short) 0xFFFF},
1475 Conversion.longToShortArray(
1476 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 0, 3));
1477 assertArrayEquals(
1478 new short[]{(short) 0xCDEF, (short) 0x90AB, (short) 0x5678, (short) 0x1234},
1479 Conversion.longToShortArray(
1480 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 0, 4));
1481 assertArrayEquals(
1482 new short[]{(short) 0xFFFF, (short) 0xCDEF, (short) 0x90AB, (short) 0x5678},
1483 Conversion.longToShortArray(
1484 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 1, 3));
1485 assertArrayEquals(
1486 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xCDEF, (short) 0x90AB},
1487 Conversion.longToShortArray(
1488 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 2, 2));
1489 assertArrayEquals(
1490 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xCDEF, (short) 0xFFFF},
1491 Conversion.longToShortArray(
1492 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 2, 1));
1493 assertArrayEquals(
1494 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xFFFF, (short) 0xCDEF},
1495 Conversion.longToShortArray(
1496 0x1234567890ABCDEFL, 0, new short[]{-1, -1, -1, -1}, 3, 1));
1497 assertArrayEquals(
1498 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xE6F7, (short) 0xFFFF},
1499 Conversion.longToShortArray(
1500 0x1234567890ABCDEFL, 1, new short[]{-1, -1, -1, -1}, 2, 1));
1501 assertArrayEquals(
1502 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xF37B, (short) 0xFFFF},
1503 Conversion.longToShortArray(
1504 0x1234567890ABCDEFL, 2, new short[]{-1, -1, -1, -1}, 2, 1));
1505 assertArrayEquals(
1506 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0x79BD, (short) 0xFFFF},
1507 Conversion.longToShortArray(
1508 0x1234567890ABCDEFL, 3, new short[]{-1, -1, -1, -1}, 2, 1));
1509 assertArrayEquals(
1510 new short[]{(short) 0xFFFF, (short) 0xFFFF, (short) 0xBCDE, (short) 0xFFFF},
1511 Conversion.longToShortArray(
1512 0x1234567890ABCDEFL, 4, new short[]{-1, -1, -1, -1}, 2, 1));
1513 assertArrayEquals(
1514 new short[]{(short) 0xE6F7, (short) 0x4855, (short) 0x2B3C, (short) 0x091A},
1515 Conversion.longToShortArray(
1516 0x1234567890ABCDEFL, 1, new short[]{-1, -1, -1, -1}, 0, 4));
1517 assertArrayEquals(
1518 new short[]{(short) 0x2B3C},
1519 Conversion.longToShortArray(0x1234567890ABCDEFL, 33, new short[]{0}, 0, 1));
1520 }
1521
1522
1523
1524
1525 @Test
1526 public void testShortArrayToInt() {
1527 final short[] src = {
1528 (short) 0xCDF1, (short) 0xF0C1, (short) 0x0F12, (short) 0x3456, (short) 0x7800};
1529 assertEquals(0x00000000, Conversion.shortArrayToInt(src, 0, 0, 0, 0));
1530 assertEquals(0x0000CDF1, Conversion.shortArrayToInt(src, 0, 0, 0, 1));
1531 assertEquals(0xF0C1CDF1, Conversion.shortArrayToInt(src, 0, 0, 0, 2));
1532 assertEquals(0x0F12F0C1, Conversion.shortArrayToInt(src, 1, 0, 0, 2));
1533 assertEquals(0x12345678, Conversion.shortArrayToInt(src, 0, 0x12345678, 0, 0));
1534 assertEquals(0xCDF15678, Conversion.shortArrayToInt(src, 0, 0x12345678, 16, 1));
1535
1536 }
1537
1538
1539
1540
1541 @Test
1542 public void testShortArrayToLong() {
1543 final short[] src = {
1544 (short) 0xCDF1, (short) 0xF0C1, (short) 0x0F12, (short) 0x3456, (short) 0x7800};
1545 assertEquals(0x0000000000000000L, Conversion.shortArrayToLong(src, 0, 0L, 0, 0));
1546 assertEquals(0x000000000000CDF1L, Conversion.shortArrayToLong(src, 0, 0L, 0, 1));
1547 assertEquals(0x00000000F0C1CDF1L, Conversion.shortArrayToLong(src, 0, 0L, 0, 2));
1548 assertEquals(0x780034560F12F0C1L, Conversion.shortArrayToLong(src, 1, 0L, 0, 4));
1549 assertEquals(
1550 0x123456789ABCDEF0L, Conversion.shortArrayToLong(src, 0, 0x123456789ABCDEF0L, 0, 0));
1551 assertEquals(
1552 0x123456CDF1BCDEF0L,
1553 Conversion.shortArrayToLong(src, 0, 0x123456789ABCDEF0L, 24, 1));
1554 assertEquals(
1555 0x123478003456DEF0L,
1556 Conversion.shortArrayToLong(src, 3, 0x123456789ABCDEF0L, 16, 2));
1557 }
1558
1559
1560
1561
1562 @Test
1563 public void testShortToBinary() {
1564 assertArrayEquals(
1565 new boolean[]{}, Conversion.shortToBinary((short) 0x0000, 0, new boolean[]{}, 0, 0));
1566 assertArrayEquals(
1567 new boolean[]{},
1568 Conversion.shortToBinary((short) 0x0000, 100, new boolean[]{}, 0, 0));
1569 assertArrayEquals(
1570 new boolean[]{},
1571 Conversion.shortToBinary((short) 0x0000, 0, new boolean[]{}, 100, 0));
1572 assertArrayEquals(
1573 new boolean[69], Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[69], 0, 0));
1574 assertArrayEquals(
1575 new boolean[]{
1576 true, false, false, false, false, false, false, false, false, false, false,
1577 false, false, false, false, false, false, false, false, false, false},
1578 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 0, 1));
1579 assertArrayEquals(
1580 new boolean[]{
1581 true, true, false, false, false, false, false, false, false, false, false,
1582 false, false, false, false, false, false, false, false, false, false},
1583 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 0, 2));
1584 assertArrayEquals(
1585 new boolean[]{
1586 true, true, true, false, false, false, false, false, false, false, false,
1587 false, false, false, false, false, false, false, false, false, false},
1588 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 0, 3));
1589 assertArrayEquals(
1590 new boolean[]{
1591 true, true, true, true, false, true, true, true, true, false, true, true,
1592 false, false, true, false, false, false, false, false, false},
1593 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 0, 15));
1594 assertArrayEquals(
1595 new boolean[]{
1596 true, true, true, true, false, true, true, true, true, false, true, true,
1597 false, false, true, true, false, false, false, false, false},
1598 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 0, 16));
1599 assertArrayEquals(
1600 new boolean[]{
1601 false, false, true, false, false, false, false, false, false, false, false,
1602 false, false, false, false, false, false, false, false, false, false},
1603 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 2, 1));
1604 assertArrayEquals(
1605 new boolean[]{
1606 false, false, true, true, true, true, false, true, true, true, true, false,
1607 true, true, false, false, true, true, false, false, false},
1608 Conversion.shortToBinary((short) 0xCDEF, 0, new boolean[21], 2, 16));
1609 assertArrayEquals(
1610 new boolean[]{
1611 true, true, true, false, true, true, true, true, false, true, true, false,
1612 false, true, true, false, false, false, false, false, false},
1613 Conversion.shortToBinary((short) 0xCDEF, 1, new boolean[21], 0, 15));
1614 assertArrayEquals(
1615 new boolean[]{
1616 true, true, false, true, true, true, true, false, true, true, false, false,
1617 true, true, false, false, false, false, false, false, false},
1618 Conversion.shortToBinary((short) 0xCDEF, 2, new boolean[21], 0, 14));
1619
1620
1621
1622
1623
1624 assertArrayEquals(
1625 new boolean[]{
1626 false, false, false, true, true, false, true, true, true, true, false, true,
1627 true, false, false, true, true, false, false, false, false},
1628 Conversion.shortToBinary((short) 0xCDEF, 2, new boolean[21], 3, 14));
1629 }
1630
1631
1632
1633
1634 @Test
1635 public void testShortToByteArray() {
1636 assertArrayEquals(
1637 new byte[]{}, Conversion.shortToByteArray((short) 0x0000, 0, new byte[]{}, 0, 0));
1638 assertArrayEquals(
1639 new byte[]{}, Conversion.shortToByteArray((short) 0x0000, 100, new byte[]{}, 0, 0));
1640 assertArrayEquals(
1641 new byte[]{}, Conversion.shortToByteArray((short) 0x0000, 0, new byte[]{}, 100, 0));
1642 assertArrayEquals(
1643 new byte[]{
1644 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1645 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 0, new byte[]{
1646 -1, -1, -1, -1, -1, -1, -1}, 0, 0));
1647 assertArrayEquals(
1648 new byte[]{
1649 (byte) 0xEF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1650 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 0, new byte[]{
1651 -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1652 assertArrayEquals(
1653 new byte[]{
1654 (byte) 0xEF, (byte) 0xCD, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1655 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 0, new byte[]{
1656 -1, -1, -1, -1, -1, -1, -1}, 0, 2));
1657 assertArrayEquals(
1658 new byte[]{
1659 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xFF, (byte) 0xFF,
1660 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 0, new byte[]{
1661 -1, -1, -1, -1, -1, -1, -1}, 3, 1));
1662 assertArrayEquals(
1663 new byte[]{
1664 (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xEF, (byte) 0xCD, (byte) 0xFF,
1665 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 0, new byte[]{
1666 -1, -1, -1, -1, -1, -1, -1}, 3, 2));
1667 assertArrayEquals(
1668 new byte[]{
1669 (byte) 0xF7, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1670 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 1, new byte[]{
1671 -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1672 assertArrayEquals(
1673 new byte[]{
1674 (byte) 0x7B, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
1675 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 2, new byte[]{
1676 -1, -1, -1, -1, -1, -1, -1}, 0, 1));
1677 assertArrayEquals(
1678 new byte[]{
1679 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0x6F, (byte) 0xFE, (byte) 0xFF,
1680 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 5, new byte[]{
1681 -1, 0, -1, -1, -1, -1, -1}, 3, 2));
1682
1683
1684
1685 assertArrayEquals(
1686 new byte[]{
1687 (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0xFE, (byte) 0xFF, (byte) 0xFF,
1688 (byte) 0xFF}, Conversion.shortToByteArray((short) 0xCDEF, 13, new byte[]{
1689 -1, 0, -1, -1, -1, -1, -1}, 3, 1));
1690 }
1691
1692
1693
1694
1695 @Test
1696 public void testShortToHex() {
1697 assertEquals("", Conversion.shortToHex((short) 0x0000, 0, "", 0, 0));
1698 assertEquals("", Conversion.shortToHex((short) 0x0000, 100, "", 0, 0));
1699 assertEquals("", Conversion.shortToHex((short) 0x0000, 0, "", 100, 0));
1700 assertEquals(
1701 "ffffffffffffffffffffffff",
1702 Conversion.shortToHex((short) 0xCDEF, 0, "ffffffffffffffffffffffff", 0, 0));
1703 assertEquals(
1704 "3fffffffffffffffffffffff",
1705 Conversion.shortToHex((short) 0xCDE3, 0, "ffffffffffffffffffffffff", 0, 1));
1706 assertEquals(
1707 "feffffffffffffffffffffff",
1708 Conversion.shortToHex((short) 0xCDEF, 0, "ffffffffffffffffffffffff", 0, 2));
1709 assertEquals(
1710 "fedfffffffffffffffffffff",
1711 Conversion.shortToHex((short) 0xCDEF, 0, "ffffffffffffffffffffffff", 0, 3));
1712 assertEquals(
1713 "fedcffffffffffffffffffff",
1714 Conversion.shortToHex((short) 0xCDEF, 0, "ffffffffffffffffffffffff", 0, 4));
1715 assertEquals(
1716 "fff3ffffffffffffffffffff",
1717 Conversion.shortToHex((short) 0xCDE3, 0, "ffffffffffffffffffffffff", 3, 1));
1718 assertEquals(
1719 "ffffefffffffffffffffffff",
1720 Conversion.shortToHex((short) 0xCDEF, 0, "ffffffffffffffffffffffff", 3, 2));
1721 assertEquals(
1722 "7fffffffffffffffffffffff",
1723 Conversion.shortToHex((short) 0xCDEF, 1, "ffffffffffffffffffffffff", 0, 1));
1724 assertEquals(
1725 "bfffffffffffffffffffffff",
1726 Conversion.shortToHex((short) 0xCDEF, 2, "ffffffffffffffffffffffff", 0, 1));
1727 assertEquals(
1728 "fffdb9ffffffffffffffffff",
1729 Conversion.shortToHex((short) 0xCDEF, 3, "ffffffffffffffffffffffff", 3, 4));
1730
1731
1732 assertEquals(
1733 "fffedcffffffffffffffffff",
1734 Conversion.shortToHex((short) 0xCDEF, 4, "ffffffffffffffffffffffff", 3, 3));
1735 assertEquals("fedc", Conversion.shortToHex((short) 0xCDEF, 0, "", 0, 4));
1736 assertThrows(StringIndexOutOfBoundsException.class, () -> Conversion.shortToHex((short) 0xCDEF, 0, "", 1, 4));
1737 }
1738
1739
1740
1741
1742 @Test
1743 public void testUuidToByteArray() {
1744 assertArrayEquals(new byte[]{
1745 (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
1746 (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
1747 (byte) 0xff, (byte) 0xff}, Conversion.uuidToByteArray(new UUID(
1748 0xFFFFFFFFFFFFFFFFL, 0xFFFFFFFFFFFFFFFFL), new byte[16], 0, 16));
1749 assertArrayEquals(new byte[]{
1750 (byte) 0x88, (byte) 0x99, (byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee,
1751 (byte) 0xff, (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44, (byte) 0x55,
1752 (byte) 0x66, (byte) 0x77}, Conversion.uuidToByteArray(new UUID(
1753 0xFFEEDDCCBBAA9988L, 0x7766554433221100L), new byte[16], 0, 16));
1754 assertArrayEquals(new byte[]{
1755 (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x88, (byte) 0x99, (byte) 0xaa,
1756 (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee, (byte) 0xff, (byte) 0x00, (byte) 0x00,
1757 (byte) 0x00, (byte) 0x00}, Conversion.uuidToByteArray(new UUID(
1758 0xFFEEDDCCBBAA9988L, 0x7766554433221100L), new byte[16], 4, 8));
1759 assertArrayEquals(new byte[]{
1760 (byte) 0x00, (byte) 0x00, (byte) 0x88, (byte) 0x99, (byte) 0xaa, (byte) 0xbb, (byte) 0xcc,
1761 (byte) 0xdd, (byte) 0xee, (byte) 0xff, (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
1762 (byte) 0x00, (byte) 0x00}, Conversion.uuidToByteArray(new UUID(
1763 0xFFEEDDCCBBAA9988L, 0x7766554433221100L), new byte[16], 2, 12));
1764 }
1765 }