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