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.junit.jupiter.api.Assertions.assertArrayEquals;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertNotEquals;
23 import static org.junit.jupiter.api.Assertions.assertNotNull;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25
26 import java.util.stream.Stream;
27
28 import org.junit.jupiter.api.Test;
29 import org.junit.jupiter.params.ParameterizedTest;
30 import org.junit.jupiter.params.provider.MethodSource;
31
32
33
34
35 class RandomUtilsTest extends AbstractLangTest {
36
37
38
39
40 private static final double DELTA = 1e-5;
41
42 static Stream<RandomUtils> randomProvider() {
43 return Stream.of(RandomUtils.secure(), RandomUtils.secureStrong(), RandomUtils.insecure());
44 }
45
46
47
48
49 @Test
50 void testBoolean() {
51 final boolean result = RandomUtils.nextBoolean();
52 assertTrue(result || !result);
53 }
54
55 @ParameterizedTest
56 @MethodSource("randomProvider")
57 void testBoolean(final RandomUtils ru) {
58 final boolean result = ru.randomBoolean();
59 assertTrue(result || !result);
60 }
61
62 @Test
63 void testConstructor() {
64 assertNotNull(new RandomUtils());
65 }
66
67
68
69
70 @Test
71 void testExtremeRangeDouble() {
72 final double result = RandomUtils.nextDouble(0, Double.MAX_VALUE);
73 assertTrue(result >= 0 && result <= Double.MAX_VALUE);
74 }
75
76 @ParameterizedTest
77 @MethodSource("randomProvider")
78 void testExtremeRangeDouble(final RandomUtils ru) {
79 final double result = ru.randomDouble(0, Double.MAX_VALUE);
80 assertTrue(result >= 0 && result <= Double.MAX_VALUE);
81 }
82
83
84
85
86 @Test
87 void testExtremeRangeFloat() {
88 final float result = RandomUtils.nextFloat(0, Float.MAX_VALUE);
89 assertTrue(result >= 0f && result <= Float.MAX_VALUE);
90 }
91
92
93
94
95 @ParameterizedTest
96 @MethodSource("randomProvider")
97 void testExtremeRangeFloat(final RandomUtils ru) {
98 final float result = ru.randomFloat(0, Float.MAX_VALUE);
99 assertTrue(result >= 0f && result <= Float.MAX_VALUE);
100 }
101
102
103
104
105 @Test
106 void testExtremeRangeInt() {
107 final int result = RandomUtils.nextInt(0, Integer.MAX_VALUE);
108 assertTrue(result >= 0);
109 assertTrue(result < Integer.MAX_VALUE);
110 }
111
112
113
114
115 @ParameterizedTest
116 @MethodSource("randomProvider")
117 void testExtremeRangeInt(final RandomUtils ru) {
118 final int result = ru.randomInt(0, Integer.MAX_VALUE);
119 assertTrue(result >= 0);
120 assertTrue(result < Integer.MAX_VALUE);
121 }
122
123
124
125
126 @Test
127 void testExtremeRangeLong() {
128 final long result = RandomUtils.nextLong(0, Long.MAX_VALUE);
129 assertTrue(result >= 0);
130 assertTrue(result < Long.MAX_VALUE);
131 }
132
133
134
135
136 @ParameterizedTest
137 @MethodSource("randomProvider")
138 void testExtremeRangeLong(final RandomUtils ru) {
139 final long result = ru.randomLong(0, Long.MAX_VALUE);
140 assertTrue(result >= 0);
141 assertTrue(result < Long.MAX_VALUE);
142 }
143
144
145
146
147
148
149
150
151
152
153
154
155 @Test
156 void testLargeValueRangeLong() {
157 final long startInclusive = 12900000000001L;
158 final long endExclusive = 12900000000016L;
159
160
161
162 final int n = (int) (endExclusive - startInclusive) * 1000;
163 for (int i = 0; i < n; i++) {
164 assertNotEquals(endExclusive, RandomUtils.nextLong(startInclusive, endExclusive));
165 }
166 }
167
168
169
170
171
172
173
174
175
176
177
178
179 @ParameterizedTest
180 @MethodSource("randomProvider")
181 void testLargeValueRangeLong(final RandomUtils ru) {
182 final long startInclusive = 12900000000001L;
183 final long endExclusive = 12900000000016L;
184
185
186
187 final int n = (int) (endExclusive - startInclusive) * 1000;
188 for (int i = 0; i < n; i++) {
189 assertNotEquals(endExclusive, ru.randomLong(startInclusive, endExclusive));
190 }
191 }
192
193
194
195
196 @Test
197 void testNextBytes() {
198 final byte[] result = RandomUtils.nextBytes(20);
199 assertEquals(20, result.length);
200 }
201
202
203
204
205 @ParameterizedTest
206 @MethodSource("randomProvider")
207 void testNextBytes(final RandomUtils ru) {
208 final byte[] result = ru.randomBytes(20);
209 assertEquals(20, result.length);
210 }
211
212 @Test
213 void testNextBytesNegative() {
214 assertIllegalArgumentException(() -> RandomUtils.nextBytes(-1));
215 }
216
217 @ParameterizedTest
218 @MethodSource("randomProvider")
219 void testNextBytesNegative(final RandomUtils ru) {
220 assertIllegalArgumentException(() -> ru.randomBytes(-1));
221 }
222
223
224
225
226 @Test
227 void testNextDouble() {
228 final double result = RandomUtils.nextDouble(33d, 42d);
229 assertTrue(result >= 33d);
230 assertTrue(result < 42d);
231 }
232
233
234
235
236 @ParameterizedTest
237 @MethodSource("randomProvider")
238 void testNextDouble(final RandomUtils ru) {
239 final double result = ru.randomDouble(33d, 42d);
240 assertTrue(result >= 33d);
241 assertTrue(result < 42d);
242 }
243
244 @Test
245 void testNextDoubleLowerGreaterUpper() {
246 assertIllegalArgumentException(() -> RandomUtils.nextDouble(2, 1));
247 }
248
249 @ParameterizedTest
250 @MethodSource("randomProvider")
251 void testNextDoubleLowerGreaterUpper(final RandomUtils ru) {
252 assertIllegalArgumentException(() -> ru.randomDouble(2, 1));
253 }
254
255
256
257
258 @Test
259 void testNextDoubleMinimalRange() {
260 assertEquals(42.1, RandomUtils.nextDouble(42.1, 42.1), DELTA);
261 }
262
263
264
265
266 @ParameterizedTest
267 @MethodSource("randomProvider")
268 void testNextDoubleMinimalRange(final RandomUtils ru) {
269 assertEquals(42.1, ru.randomDouble(42.1, 42.1), DELTA);
270 }
271
272 @Test
273 void testNextDoubleNegative() {
274 assertIllegalArgumentException(() -> RandomUtils.nextDouble(-1, 1));
275 }
276
277 @ParameterizedTest
278 @MethodSource("randomProvider")
279 void testNextDoubleNegative(final RandomUtils ru) {
280 assertIllegalArgumentException(() -> ru.randomDouble(-1, 1));
281 }
282
283
284
285
286 @Test
287 void testNextDoubleRandomResult() {
288 final double result = RandomUtils.nextDouble();
289 assertTrue(result >= 0d);
290 assertTrue(result < Double.MAX_VALUE);
291 }
292
293
294
295
296 @ParameterizedTest
297 @MethodSource("randomProvider")
298 void testNextDoubleRandomResult(final RandomUtils ru) {
299 final double result = ru.randomDouble();
300 assertTrue(result >= 0d);
301 assertTrue(result < Double.MAX_VALUE);
302 }
303
304
305
306
307 @Test
308 void testNextFloat() {
309 final float result = RandomUtils.nextFloat(33f, 42f);
310 assertTrue(result >= 33f);
311 assertTrue(result < 42f);
312 }
313
314
315
316
317 @ParameterizedTest
318 @MethodSource("randomProvider")
319 void testNextFloat(final RandomUtils ru) {
320 final float result = ru.randomFloat(33f, 42f);
321 assertTrue(result >= 33f);
322 assertTrue(result < 42f);
323 }
324
325 @Test
326 void testNextFloatLowerGreaterUpper() {
327 assertIllegalArgumentException(() -> RandomUtils.nextFloat(2, 1));
328 }
329
330 @ParameterizedTest
331 @MethodSource("randomProvider")
332 void testNextFloatLowerGreaterUpper(final RandomUtils ru) {
333 assertIllegalArgumentException(() -> ru.randomFloat(2, 1));
334 }
335
336
337
338
339 @Test
340 void testNextFloatMinimalRange() {
341 assertEquals(42.1f, RandomUtils.nextFloat(42.1f, 42.1f), DELTA);
342 }
343
344
345
346
347 @ParameterizedTest
348 @MethodSource("randomProvider")
349 void testNextFloatMinimalRange(final RandomUtils ru) {
350 assertEquals(42.1f, ru.randomFloat(42.1f, 42.1f), DELTA);
351 }
352
353 @Test
354 void testNextFloatNegative() {
355 assertIllegalArgumentException(() -> RandomUtils.nextFloat(-1, 1));
356 }
357
358 @ParameterizedTest
359 @MethodSource("randomProvider")
360 void testNextFloatNegative(final RandomUtils ru) {
361 assertIllegalArgumentException(() -> ru.randomFloat(-1, 1));
362 }
363
364
365
366
367 @Test
368 void testNextFloatRandomResult() {
369 final float result = RandomUtils.nextFloat();
370 assertTrue(result >= 0f);
371 assertTrue(result < Float.MAX_VALUE);
372 }
373
374
375
376
377 @ParameterizedTest
378 @MethodSource("randomProvider")
379 void testNextFloatRandomResult(final RandomUtils ru) {
380 final float result = ru.randomFloat();
381 assertTrue(result >= 0f);
382 assertTrue(result < Float.MAX_VALUE);
383 }
384
385
386
387
388 @Test
389 void testNextInt() {
390 final int result = RandomUtils.nextInt(33, 42);
391 assertTrue(result >= 33);
392 assertTrue(result < 42);
393 }
394
395
396
397
398 @ParameterizedTest
399 @MethodSource("randomProvider")
400 void testNextInt(final RandomUtils ru) {
401 final int result = ru.randomInt(33, 42);
402 assertTrue(result >= 33);
403 assertTrue(result < 42);
404 }
405
406 @Test
407 void testNextIntLowerGreaterUpper() {
408 assertIllegalArgumentException(() -> RandomUtils.nextInt(2, 1));
409 }
410
411 @ParameterizedTest
412 @MethodSource("randomProvider")
413 void testNextIntLowerGreaterUpper(final RandomUtils ru) {
414 assertIllegalArgumentException(() -> ru.randomInt(2, 1));
415 }
416
417
418
419
420 @Test
421 void testNextIntMinimalRange() {
422 assertEquals(42, RandomUtils.nextInt(42, 42));
423 }
424
425
426
427
428 @ParameterizedTest
429 @MethodSource("randomProvider")
430 void testNextIntMinimalRange(final RandomUtils ru) {
431 assertEquals(42, ru.randomInt(42, 42));
432 }
433
434 @Test
435 void testNextIntNegative() {
436 assertIllegalArgumentException(() -> RandomUtils.nextInt(-1, 1));
437 }
438
439 @ParameterizedTest
440 @MethodSource("randomProvider")
441 void testNextIntNegative(final RandomUtils ru) {
442 assertIllegalArgumentException(() -> ru.randomInt(-1, 1));
443 }
444
445
446
447
448 @Test
449 void testNextIntRandomResult() {
450 final int randomResult = RandomUtils.nextInt();
451 assertTrue(randomResult > 0);
452 assertTrue(randomResult < Integer.MAX_VALUE);
453 }
454
455
456
457
458 @ParameterizedTest
459 @MethodSource("randomProvider")
460 void testNextIntRandomResult(final RandomUtils ru) {
461 final int randomResult = ru.randomInt();
462 assertTrue(randomResult > 0);
463 assertTrue(randomResult < Integer.MAX_VALUE);
464 }
465
466
467
468
469 @Test
470 void testNextLong() {
471 final long result = RandomUtils.nextLong(33L, 42L);
472 assertTrue(result >= 33L);
473 assertTrue(result < 42L);
474 }
475
476
477
478
479 @ParameterizedTest
480 @MethodSource("randomProvider")
481 void testNextLong(final RandomUtils ru) {
482 final long result = ru.randomLong(33L, 42L);
483 assertTrue(result >= 33L);
484 assertTrue(result < 42L);
485 }
486
487 @Test
488 void testNextLongLowerGreaterUpper() {
489 assertIllegalArgumentException(() -> RandomUtils.nextLong(2, 1));
490 }
491
492 @ParameterizedTest
493 @MethodSource("randomProvider")
494 void testNextLongLowerGreaterUpper(final RandomUtils ru) {
495 assertIllegalArgumentException(() -> ru.randomLong(2, 1));
496 }
497
498
499
500
501 @Test
502 void testNextLongMinimalRange() {
503 assertEquals(42L, RandomUtils.nextLong(42L, 42L));
504 }
505
506
507
508
509 @ParameterizedTest
510 @MethodSource("randomProvider")
511 void testNextLongMinimalRange(final RandomUtils ru) {
512 assertEquals(42L, ru.randomLong(42L, 42L));
513 }
514
515 @Test
516 void testNextLongNegative() {
517 assertIllegalArgumentException(() -> RandomUtils.nextLong(-1, 1));
518 }
519
520 @ParameterizedTest
521 @MethodSource("randomProvider")
522 void testNextLongNegative(final RandomUtils ru) {
523 assertIllegalArgumentException(() -> ru.randomLong(-1, 1));
524 }
525
526
527
528
529 @Test
530 void testNextLongRandomResult() {
531 final long result = RandomUtils.nextLong();
532 assertTrue(result >= 0L);
533 assertTrue(result < Long.MAX_VALUE);
534 }
535
536
537
538
539 @ParameterizedTest
540 @MethodSource("randomProvider")
541 void testNextLongRandomResult(final RandomUtils ru) {
542 final long result = ru.randomLong();
543 assertTrue(result >= 0L);
544 assertTrue(result < Long.MAX_VALUE);
545 }
546
547
548
549
550 @Test
551 void testZeroLengthNextBytes() {
552 assertArrayEquals(new byte[0], RandomUtils.nextBytes(0));
553 }
554
555
556
557
558 @ParameterizedTest
559 @MethodSource("randomProvider")
560 void testZeroLengthNextBytes(final RandomUtils ru) {
561 assertArrayEquals(new byte[0], ru.randomBytes(0));
562 }
563 }