Skip to content

Commit 53647a3

Browse files
committed
Add missing test coverage for
org.apache.commons.lang3.ArrayUtils.shuffle(*)
1 parent 456be09 commit 53647a3

File tree

1 file changed

+120
-28
lines changed

1 file changed

+120
-28
lines changed

src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java

Lines changed: 120 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ private static final class TestClass {
5959
/** A predefined seed used to initialize {@link Random} in order to get predictable results */
6060
private static final long SEED = 16111981L;
6161

62+
private static Random seededRandom() {
63+
return new Random(SEED);
64+
}
65+
6266
@SafeVarargs
6367
private static <T> T[] toArrayPropagatingType(final T... items) {
6468
return ArrayUtils.toArray(items);
@@ -91,7 +95,6 @@ void testArraycopySupplier() {
9195
assertThrows(NullPointerException.class, () -> ArrayUtils.arraycopy(arr, 0, 0, 1, Suppliers.nul()));
9296
assertThrows(NullPointerException.class, () -> ArrayUtils.arraycopy(arr, 0, 0, 1, (Supplier<String[]>) null));
9397
}
94-
9598
/**
9699
* Tests generic array creation with parameters of same type.
97100
*/
@@ -102,6 +105,7 @@ void testArrayCreation() {
102105
assertEquals("foo", array[0]);
103106
assertEquals("bar", array[1]);
104107
}
108+
105109
/**
106110
* Tests generic array creation with parameters of common base type.
107111
*/
@@ -5091,107 +5095,195 @@ void testShiftShort() {
50915095

50925096
@Test
50935097
void testShuffle() {
5094-
final String[] array1 = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
5098+
final String[] array1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
50955099
final String[] array2 = ArrayUtils.clone(array1);
5096-
5097-
ArrayUtils.shuffle(array1, new Random(SEED));
5100+
ArrayUtils.shuffle(array1);
50985101
assertFalse(Arrays.equals(array1, array2));
50995102
for (final String element : array2) {
5100-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5103+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51015104
}
51025105
}
51035106

51045107
@Test
51055108
void testShuffleBoolean() {
5106-
final boolean[] array1 = {true, false, true, true, false, false, true, false, false, true};
5109+
final boolean[] array1 = { true, false, true, true, false, false, true, false, false, true };
51075110
final boolean[] array2 = ArrayUtils.clone(array1);
5111+
ArrayUtils.shuffle(array1);
5112+
assertFalse(Arrays.equals(array1, array2));
5113+
assertEquals(5, ArrayUtils.removeAllOccurrences(array1, true).length);
5114+
}
51085115

5109-
ArrayUtils.shuffle(array1, new Random(SEED));
5116+
@Test
5117+
void testShuffleBooleanRandom() {
5118+
final boolean[] array1 = { true, false, true, true, false, false, true, false, false, true };
5119+
final boolean[] array2 = ArrayUtils.clone(array1);
5120+
ArrayUtils.shuffle(array1, seededRandom());
51105121
assertFalse(Arrays.equals(array1, array2));
51115122
assertEquals(5, ArrayUtils.removeAllOccurrences(array1, true).length);
51125123
}
51135124

51145125
@Test
51155126
void testShuffleByte() {
5116-
final byte[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5127+
final byte[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51175128
final byte[] array2 = ArrayUtils.clone(array1);
5129+
ArrayUtils.shuffle(array1);
5130+
assertFalse(Arrays.equals(array1, array2));
5131+
for (final byte element : array2) {
5132+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5133+
}
5134+
}
51185135

5119-
ArrayUtils.shuffle(array1, new Random(SEED));
5136+
@Test
5137+
void testShuffleByteRandom() {
5138+
final byte[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5139+
final byte[] array2 = ArrayUtils.clone(array1);
5140+
ArrayUtils.shuffle(array1, seededRandom());
51205141
assertFalse(Arrays.equals(array1, array2));
51215142
for (final byte element : array2) {
5122-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5143+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51235144
}
51245145
}
51255146

51265147
@Test
51275148
void testShuffleChar() {
5128-
final char[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5149+
final char[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51295150
final char[] array2 = ArrayUtils.clone(array1);
5151+
ArrayUtils.shuffle(array1);
5152+
assertFalse(Arrays.equals(array1, array2));
5153+
for (final char element : array2) {
5154+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5155+
}
5156+
}
51305157

5131-
ArrayUtils.shuffle(array1, new Random(SEED));
5158+
@Test
5159+
void testShuffleCharRandom() {
5160+
final char[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5161+
final char[] array2 = ArrayUtils.clone(array1);
5162+
ArrayUtils.shuffle(array1, seededRandom());
51325163
assertFalse(Arrays.equals(array1, array2));
51335164
for (final char element : array2) {
5134-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5165+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51355166
}
51365167
}
51375168

51385169
@Test
51395170
void testShuffleDouble() {
5140-
final double[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5171+
final double[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51415172
final double[] array2 = ArrayUtils.clone(array1);
5173+
ArrayUtils.shuffle(array1);
5174+
assertFalse(Arrays.equals(array1, array2));
5175+
for (final double element : array2) {
5176+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5177+
}
5178+
}
51425179

5143-
ArrayUtils.shuffle(array1, new Random(SEED));
5180+
@Test
5181+
void testShuffleDoubleRandom() {
5182+
final double[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5183+
final double[] array2 = ArrayUtils.clone(array1);
5184+
ArrayUtils.shuffle(array1, seededRandom());
51445185
assertFalse(Arrays.equals(array1, array2));
51455186
for (final double element : array2) {
5146-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5187+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51475188
}
51485189
}
51495190

51505191
@Test
51515192
void testShuffleFloat() {
5152-
final float[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5193+
final float[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51535194
final float[] array2 = ArrayUtils.clone(array1);
5195+
ArrayUtils.shuffle(array1);
5196+
assertFalse(Arrays.equals(array1, array2));
5197+
for (final float element : array2) {
5198+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5199+
}
5200+
}
51545201

5155-
ArrayUtils.shuffle(array1, new Random(SEED));
5202+
@Test
5203+
void testShuffleFloatRandom() {
5204+
final float[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5205+
final float[] array2 = ArrayUtils.clone(array1);
5206+
ArrayUtils.shuffle(array1, seededRandom());
51565207
assertFalse(Arrays.equals(array1, array2));
51575208
for (final float element : array2) {
5158-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5209+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51595210
}
51605211
}
51615212

51625213
@Test
51635214
void testShuffleInt() {
5164-
final int[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5215+
final int[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51655216
final int[] array2 = ArrayUtils.clone(array1);
5217+
ArrayUtils.shuffle(array1, seededRandom());
5218+
assertFalse(Arrays.equals(array1, array2));
5219+
for (final int element : array2) {
5220+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5221+
}
5222+
}
51665223

5167-
ArrayUtils.shuffle(array1, new Random(SEED));
5224+
@Test
5225+
void testShuffleIntRandom() {
5226+
final int[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5227+
final int[] array2 = ArrayUtils.clone(array1);
5228+
ArrayUtils.shuffle(array1);
51685229
assertFalse(Arrays.equals(array1, array2));
51695230
for (final int element : array2) {
5170-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5231+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51715232
}
51725233
}
51735234

51745235
@Test
51755236
void testShuffleLong() {
5176-
final long[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5237+
final long[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51775238
final long[] array2 = ArrayUtils.clone(array1);
5239+
ArrayUtils.shuffle(array1);
5240+
assertFalse(Arrays.equals(array1, array2));
5241+
for (final long element : array2) {
5242+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5243+
}
5244+
}
51785245

5179-
ArrayUtils.shuffle(array1, new Random(SEED));
5246+
@Test
5247+
void testShuffleLongRandom() {
5248+
final long[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5249+
final long[] array2 = ArrayUtils.clone(array1);
5250+
ArrayUtils.shuffle(array1, seededRandom());
51805251
assertFalse(Arrays.equals(array1, array2));
51815252
for (final long element : array2) {
5182-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5253+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5254+
}
5255+
}
5256+
5257+
@Test
5258+
void testShuffleRandom() {
5259+
final String[] array1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
5260+
final String[] array2 = ArrayUtils.clone(array1);
5261+
ArrayUtils.shuffle(array1, seededRandom());
5262+
assertFalse(Arrays.equals(array1, array2));
5263+
for (final String element : array2) {
5264+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51835265
}
51845266
}
51855267

51865268
@Test
51875269
void testShuffleShort() {
5188-
final short[] array1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
5270+
final short[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
51895271
final short[] array2 = ArrayUtils.clone(array1);
5272+
ArrayUtils.shuffle(array1);
5273+
assertFalse(Arrays.equals(array1, array2));
5274+
for (final short element : array2) {
5275+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
5276+
}
5277+
}
51905278

5191-
ArrayUtils.shuffle(array1, new Random(SEED));
5279+
@Test
5280+
void testShuffleShortRandom() {
5281+
final short[] array1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5282+
final short[] array2 = ArrayUtils.clone(array1);
5283+
ArrayUtils.shuffle(array1, seededRandom());
51925284
assertFalse(Arrays.equals(array1, array2));
51935285
for (final short element : array2) {
5194-
assertTrue(ArrayUtils.contains(array1, element), "Element " + element + " not found");
5286+
assertTrue(ArrayUtils.contains(array1, element), () -> "Element " + element + " not found");
51955287
}
51965288
}
51975289

0 commit comments

Comments
 (0)