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