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