You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/03/09 22:06:08 UTC

[lang] Predictable randomness in shuffle tests. Closes #317 from Allon Murienik's PR https://github.com/apache/commons-lang/pull/317

Repository: commons-lang
Updated Branches:
  refs/heads/master 1a8d27627 -> 9c886bd4a


Predictable randomness in shuffle tests. Closes #317 from Allon
Murienik's PR https://github.com/apache/commons-lang/pull/317

Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/9c886bd4
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/9c886bd4
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/9c886bd4

Branch: refs/heads/master
Commit: 9c886bd4a188c91301029040b3a839e4b8e2812d
Parents: 1a8d276
Author: Gary Gregory <ga...@gmail.com>
Authored: Fri Mar 9 15:06:03 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Fri Mar 9 15:06:03 2018 -0700

----------------------------------------------------------------------
 .../apache/commons/lang3/ArrayUtilsTest.java    | 22 ++++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/9c886bd4/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
index 0effba7..a853642 100644
--- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.Map;
+import java.util.Random;
 
 import org.junit.Test;
 
@@ -41,6 +42,9 @@ import org.junit.Test;
 @SuppressWarnings("deprecation") // deliberate use of deprecated code
 public class ArrayUtilsTest {
 
+    /** A predefined seed used to initialize {@link Random} in order to get predictable results */
+    private static final long SEED = 16111981L;
+
     //-----------------------------------------------------------------------
     @Test
     public void testConstructor() {
@@ -5007,7 +5011,7 @@ public class ArrayUtilsTest {
         final String[] array1 = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
         final String[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final String element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5019,7 +5023,7 @@ public class ArrayUtilsTest {
         final boolean[] array1 = new boolean[]{true, false, true, true, false, false, true, false, false, true};
         final boolean[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         assertEquals(5, ArrayUtils.removeAllOccurences(array1, true).length);
     }
@@ -5029,7 +5033,7 @@ public class ArrayUtilsTest {
         final byte[] array1 = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final byte[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final byte element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5041,7 +5045,7 @@ public class ArrayUtilsTest {
         final char[] array1 = new char[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final char[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final char element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5053,7 +5057,7 @@ public class ArrayUtilsTest {
         final short[] array1 = new short[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final short[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final short element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5065,7 +5069,7 @@ public class ArrayUtilsTest {
         final int[] array1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final int[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final int element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5077,7 +5081,7 @@ public class ArrayUtilsTest {
         final long[] array1 = new long[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final long[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final long element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5089,7 +5093,7 @@ public class ArrayUtilsTest {
         final float[] array1 = new float[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final float[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final float element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));
@@ -5101,7 +5105,7 @@ public class ArrayUtilsTest {
         final double[] array1 = new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
         final double[] array2 = ArrayUtils.clone(array1);
 
-        ArrayUtils.shuffle(array1);
+        ArrayUtils.shuffle(array1, new Random(SEED));
         assertFalse(Arrays.equals(array1, array2));
         for (final double element : array2) {
             assertTrue("Element " + element + " not found", ArrayUtils.contains(array1, element));