This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new 53647a31a Add missing test coverage for
org.apache.commons.lang3.ArrayUtils.shuffle(*)
53647a31a is described below
commit 53647a31a57a917a3c1fcd19dbd822fb707e0ecf
Author: Gary D. Gregory <[email protected]>
AuthorDate: Mon Jun 16 11:46:30 2025 -0400
Add missing test coverage for
org.apache.commons.lang3.ArrayUtils.shuffle(*)
---
.../org/apache/commons/lang3/ArrayUtilsTest.java | 148 +++++++++++++++++----
1 file changed, 120 insertions(+), 28 deletions(-)
diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
index 1675b56e9..0633f959d 100644
--- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
@@ -59,6 +59,10 @@ private static final class TestClass {
/** A predefined seed used to initialize {@link Random} in order to get
predictable results */
private static final long SEED = 16111981L;
+ private static Random seededRandom() {
+ return new Random(SEED);
+ }
+
@SafeVarargs
private static <T> T[] toArrayPropagatingType(final T... items) {
return ArrayUtils.toArray(items);
@@ -91,7 +95,6 @@ void testArraycopySupplier() {
assertThrows(NullPointerException.class, () ->
ArrayUtils.arraycopy(arr, 0, 0, 1, Suppliers.nul()));
assertThrows(NullPointerException.class, () ->
ArrayUtils.arraycopy(arr, 0, 0, 1, (Supplier<String[]>) null));
}
-
/**
* Tests generic array creation with parameters of same type.
*/
@@ -102,6 +105,7 @@ void testArrayCreation() {
assertEquals("foo", array[0]);
assertEquals("bar", array[1]);
}
+
/**
* Tests generic array creation with parameters of common base type.
*/
@@ -5091,107 +5095,195 @@ void testShiftShort() {
@Test
void testShuffle() {
- final String[] array1 = {"1", "2", "3", "4", "5", "6", "7", "8", "9",
"10"};
+ final String[] array1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10" };
final String[] array2 = ArrayUtils.clone(array1);
-
- ArrayUtils.shuffle(array1, new Random(SEED));
+ ArrayUtils.shuffle(array1);
assertFalse(Arrays.equals(array1, array2));
for (final String element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleBoolean() {
- final boolean[] array1 = {true, false, true, true, false, false, true,
false, false, true};
+ final boolean[] array1 = { true, false, true, true, false, false,
true, false, false, true };
final boolean[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ assertEquals(5, ArrayUtils.removeAllOccurrences(array1, true).length);
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleBooleanRandom() {
+ final boolean[] array1 = { true, false, true, true, false, false,
true, false, false, true };
+ final boolean[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
assertEquals(5, ArrayUtils.removeAllOccurrences(array1, true).length);
}
@Test
void testShuffleByte() {
- final byte[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final byte[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final byte[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final byte element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleByteRandom() {
+ final byte[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final byte[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final byte element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleChar() {
- final char[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final char[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final char[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final char element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleCharRandom() {
+ final char[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final char[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final char element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleDouble() {
- final double[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final double[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final double[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final double element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleDoubleRandom() {
+ final double[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final double[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final double element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleFloat() {
- final float[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final float[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final float[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final float element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleFloatRandom() {
+ final float[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final float[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final float element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleInt() {
- final int[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final int[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final int[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
+ assertFalse(Arrays.equals(array1, array2));
+ for (final int element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleIntRandom() {
+ final int[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final int[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
assertFalse(Arrays.equals(array1, array2));
for (final int element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleLong() {
- final long[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final long[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final long[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final long element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleLongRandom() {
+ final long[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final long[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final long element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
+
+ @Test
+ void testShuffleRandom() {
+ final String[] array1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10" };
+ final String[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
+ assertFalse(Arrays.equals(array1, array2));
+ for (final String element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}
@Test
void testShuffleShort() {
- final short[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ final short[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
final short[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1);
+ assertFalse(Arrays.equals(array1, array2));
+ for (final short element : array2) {
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
+ }
+ }
- ArrayUtils.shuffle(array1, new Random(SEED));
+ @Test
+ void testShuffleShortRandom() {
+ final short[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ final short[] array2 = ArrayUtils.clone(array1);
+ ArrayUtils.shuffle(array1, seededRandom());
assertFalse(Arrays.equals(array1, array2));
for (final short element : array2) {
- assertTrue(ArrayUtils.contains(array1, element), "Element " +
element + " not found");
+ assertTrue(ArrayUtils.contains(array1, element), () -> "Element "
+ element + " not found");
}
}