You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2022/03/17 22:38:25 UTC

[commons-rng] 05/07: RNG-169: Remove redundant Seed2ArrayConverter implementation

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-rng.git

commit b317d3e0bad0d0e833f42ee197f4ffabd5649063
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Thu Mar 17 22:08:55 2022 +0000

    RNG-169: Remove redundant Seed2ArrayConverter implementation
    
    The functionality has been moved to the Conversions class. This removes
    unreleased public API methods from legacy convertor classes.
    
    Add tests to ensure coverage for converter classes.
---
 .../rng/simple/internal/ByteArray2IntArray.java    | 12 +-----
 .../rng/simple/internal/ByteArray2LongArray.java   | 12 +-----
 .../rng/simple/internal/IntArray2LongArray.java    | 12 +-----
 .../commons/rng/simple/internal/Long2IntArray.java |  2 +-
 .../rng/simple/internal/Long2LongArray.java        |  2 +-
 .../rng/simple/internal/LongArray2IntArray.java    | 12 +-----
 .../simple/internal/ArrayConverterEndianTest.java  |  1 -
 .../simple/internal/ByteArray2IntArrayTest.java    | 33 ---------------
 .../simple/internal/ByteArray2LongArrayTest.java   | 33 ---------------
 .../simple/internal/IntArray2LongArrayTest.java    | 45 --------------------
 .../commons/rng/simple/internal/Long2IntTest.java} | 30 +++++--------
 .../simple/internal/LongArray2IntArrayTest.java    | 49 ----------------------
 12 files changed, 17 insertions(+), 226 deletions(-)

diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java
index 7c11a2b..ad04e41 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java
@@ -21,21 +21,11 @@ package org.apache.commons.rng.simple.internal;
  *
  * @since 1.0
  */
-public class ByteArray2IntArray implements Seed2ArrayConverter<byte[], int[]> {
+public class ByteArray2IntArray implements SeedConverter<byte[], int[]> {
     /** {@inheritDoc} */
     @Override
     public int[] convert(byte[] seed) {
         // Full length conversion
         return Conversions.byteArray2IntArray(seed, Conversions.intSizeFromByteSize(seed.length));
     }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.5
-     */
-    @Override
-    public int[] convert(byte[] seed, int outputSize) {
-        return Conversions.byteArray2IntArray(seed, outputSize);
-    }
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2LongArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2LongArray.java
index e5a68e1..9be36f2 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2LongArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2LongArray.java
@@ -21,21 +21,11 @@ package org.apache.commons.rng.simple.internal;
  *
  * @since 1.0
  */
-public class ByteArray2LongArray implements Seed2ArrayConverter<byte[], long[]> {
+public class ByteArray2LongArray implements SeedConverter<byte[], long[]> {
     /** {@inheritDoc} */
     @Override
     public long[] convert(byte[] seed) {
         // Full length conversion
         return Conversions.byteArray2LongArray(seed, Conversions.longSizeFromByteSize(seed.length));
     }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.5
-     */
-    @Override
-    public long[] convert(byte[] seed, int outputSize) {
-        return Conversions.byteArray2LongArray(seed, outputSize);
-    }
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/IntArray2LongArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/IntArray2LongArray.java
index 237da1a..203777a 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/IntArray2LongArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/IntArray2LongArray.java
@@ -25,21 +25,11 @@ package org.apache.commons.rng.simple.internal;
  *
  * @since 1.0
  */
-public class IntArray2LongArray implements Seed2ArrayConverter<int[], long[]> {
+public class IntArray2LongArray implements SeedConverter<int[], long[]> {
     /** {@inheritDoc} */
     @Override
     public long[] convert(int[] seed) {
         // Full length conversion
         return Conversions.intArray2LongArray(seed, Conversions.longSizeFromIntSize(seed.length));
     }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.5
-     */
-    @Override
-    public long[] convert(int[] seed, int outputSize) {
-        return Conversions.intArray2LongArray(seed, outputSize);
-    }
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2IntArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2IntArray.java
index 4b78632..b4c0594 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2IntArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2IntArray.java
@@ -38,7 +38,7 @@ public class Long2IntArray implements Seed2ArrayConverter<Long, int[]> {
     /** {@inheritDoc} */
     @Override
     public int[] convert(Long seed) {
-        return Conversions.long2IntArray(seed, size);
+        return convert(seed, size);
     }
 
     /**
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2LongArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2LongArray.java
index 652e08c..02264c2 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2LongArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/Long2LongArray.java
@@ -39,7 +39,7 @@ public class Long2LongArray implements Seed2ArrayConverter<Long, long[]> {
     /** {@inheritDoc} */
     @Override
     public long[] convert(Long seed) {
-        return Conversions.long2LongArray(seed, size);
+        return convert(seed, size);
     }
 
     /**
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/LongArray2IntArray.java b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/LongArray2IntArray.java
index 4beab1c..6cff84c 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/LongArray2IntArray.java
+++ b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/LongArray2IntArray.java
@@ -24,21 +24,11 @@ package org.apache.commons.rng.simple.internal;
  *
  * @since 1.0
  */
-public class LongArray2IntArray implements Seed2ArrayConverter<long[], int[]> {
+public class LongArray2IntArray implements SeedConverter<long[], int[]> {
     /** {@inheritDoc} */
     @Override
     public int[] convert(long[] seed) {
         // Full length conversion
         return Conversions.longArray2IntArray(seed, Conversions.intSizeFromLongSize(seed.length));
     }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.5
-     */
-    @Override
-    public int[] convert(long[] seed, int outputSize) {
-        return Conversions.longArray2IntArray(seed, outputSize);
-    }
 }
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ArrayConverterEndianTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ArrayConverterEndianTest.java
index 8c80c56..5a3f987 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ArrayConverterEndianTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ArrayConverterEndianTest.java
@@ -71,7 +71,6 @@ class ArrayConverterEndianTest {
         Assertions.assertArrayEquals(expectedLong, (long[]) NativeSeedType.LONG_ARRAY.convert(expectedInt, expectedLong.length));
 
         // long[] -> int[]
-        Assertions.assertArrayEquals(expectedInt, new LongArray2IntArray().convert(expectedLong, expectedInt.length));
         Assertions.assertArrayEquals(expectedInt, (int[]) NativeSeedType.INT_ARRAY.convert(expectedLong, expectedInt.length));
     }
 }
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2IntArrayTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2IntArrayTest.java
index 939676a..a75e6ed 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2IntArrayTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2IntArrayTest.java
@@ -16,10 +16,7 @@
  */
 package org.apache.commons.rng.simple.internal;
 
-import java.util.Arrays;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.IntStream;
-import org.apache.commons.rng.core.util.NumberFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -52,37 +49,7 @@ class ByteArray2IntArrayTest {
     void testSeedSizeIsMultipleOfIntSize(int bytes) {
         final byte[] seed = new byte[bytes];
 
-        // This calls convert without a length
         final int[] out = new ByteArray2IntArray().convert(seed);
         Assertions.assertEquals(getOutputLength(bytes), out.length);
     }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testSeedConversion(int bytes) {
-        assertSeedConversion(bytes, getOutputLength(bytes));
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testFilledSeedConversion(int bytes) {
-        assertSeedConversion(bytes, bytes / 3);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testTruncatedSeedConversion(int bytes) {
-        assertSeedConversion(bytes, bytes * 3);
-    }
-
-    private static void assertSeedConversion(int bytes, int outLength) {
-        final byte[] seed = new byte[bytes];
-        ThreadLocalRandom.current().nextBytes(seed);
-        final byte[] filledSeed = Arrays.copyOf(seed, outLength * Integer.BYTES);
-        final int[] expected = NumberFactory.makeIntArray(filledSeed);
-
-        // This calls convert with a length
-        final int[] out = new ByteArray2IntArray().convert(seed, outLength);
-        Assertions.assertArrayEquals(expected, out);
-    }
 }
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2LongArrayTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2LongArrayTest.java
index 9ecd0b4..d92e8a9 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2LongArrayTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/ByteArray2LongArrayTest.java
@@ -16,10 +16,7 @@
  */
 package org.apache.commons.rng.simple.internal;
 
-import java.util.Arrays;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.IntStream;
-import org.apache.commons.rng.core.util.NumberFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -52,37 +49,7 @@ class ByteArray2LongArrayTest {
     void testSeedSizeIsMultipleOfIntSize(int bytes) {
         final byte[] seed = new byte[bytes];
 
-        // This calls convert without a length
         final long[] out = new ByteArray2LongArray().convert(seed);
         Assertions.assertEquals(getOutputLength(bytes), out.length);
     }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testSeedConversion(int bytes) {
-        assertSeedConversion(bytes, getOutputLength(bytes));
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testFilledSeedConversion(int bytes) {
-        assertSeedConversion(bytes, bytes / 3);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testTruncatedSeedConversion(int bytes) {
-        assertSeedConversion(bytes, bytes * 3);
-    }
-
-    private static void assertSeedConversion(int bytes, int outLength) {
-        final byte[] seed = new byte[bytes];
-        ThreadLocalRandom.current().nextBytes(seed);
-        final byte[] filledSeed = Arrays.copyOf(seed, outLength * Long.BYTES);
-        final long[] expected = NumberFactory.makeLongArray(filledSeed);
-
-        // This calls convert with a length
-        final long[] out = new ByteArray2LongArray().convert(seed, outLength);
-        Assertions.assertArrayEquals(expected, out);
-    }
 }
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/IntArray2LongArrayTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/IntArray2LongArrayTest.java
index d671d2e..aba4b00 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/IntArray2LongArrayTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/IntArray2LongArrayTest.java
@@ -16,10 +16,7 @@
  */
 package org.apache.commons.rng.simple.internal;
 
-import java.util.Arrays;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.IntStream;
-import org.apache.commons.rng.core.util.NumberFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -52,49 +49,7 @@ class IntArray2LongArrayTest {
     void testSeedSizeIsMultipleOfIntSize(int ints) {
         final int[] seed = new int[ints];
 
-        // This calls convert without a length
         final long[] out = new IntArray2LongArray().convert(seed);
         Assertions.assertEquals(getOutputLength(ints), out.length);
     }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testSeedConversion(int ints) {
-        assertSeedConversion(ints, getOutputLength(ints));
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testFilledSeedConversion(int ints) {
-        assertSeedConversion(ints, ints / 3);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testTruncatedSeedConversion(int ints) {
-        assertSeedConversion(ints, ints * 3);
-    }
-
-    private static void assertSeedConversion(int ints, int outLength) {
-        final int[] seed = ThreadLocalRandom.current().ints(ints).toArray();
-
-        // Convert to little-endian int array
-        final int[] filledSeed = Arrays.copyOf(seed, outLength * 2);
-        final long[] expected = new long[filledSeed.length / 2];
-        for (int i = 0; i < expected.length; i++) {
-            expected[i] = NumberFactory.makeLong(filledSeed[2 * i + 1], filledSeed[2 * i]);
-        }
-
-        // This calls convert with a length
-        final long[] out = new IntArray2LongArray().convert(seed, outLength);
-        Assertions.assertArrayEquals(expected, out);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testIntArrayToLongArrayToIntArray(int ints) {
-        final int[] expected = ThreadLocalRandom.current().ints(ints).toArray();
-        final int[] out = new LongArray2IntArray().convert(new IntArray2LongArray().convert(expected), ints);
-        Assertions.assertArrayEquals(expected, out);
-    }
 }
diff --git a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/Long2IntTest.java
similarity index 60%
copy from commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java
copy to commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/Long2IntTest.java
index 7c11a2b..68df465 100644
--- a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ByteArray2IntArray.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/Long2IntTest.java
@@ -16,26 +16,18 @@
  */
 package org.apache.commons.rng.simple.internal;
 
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
 /**
- * Creates a {@code int[]} from a {@code byte[]}.
- *
- * @since 1.0
+ * Tests for the {@link Long2Int} converter to ensure code coverage.
  */
-public class ByteArray2IntArray implements Seed2ArrayConverter<byte[], int[]> {
-    /** {@inheritDoc} */
-    @Override
-    public int[] convert(byte[] seed) {
-        // Full length conversion
-        return Conversions.byteArray2IntArray(seed, Conversions.intSizeFromByteSize(seed.length));
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 1.5
-     */
-    @Override
-    public int[] convert(byte[] seed, int outputSize) {
-        return Conversions.byteArray2IntArray(seed, outputSize);
+class Long2IntTest {
+    @Test
+    void testConversion() {
+        final Long2Int c = new Long2Int();
+        for (final long l : new long[] {2637678842234L, -62374682438234L, -1L, 0}) {
+            Assertions.assertEquals(Conversions.long2Int(l), c.convert(l));
+        }
     }
 }
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/LongArray2IntArrayTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/LongArray2IntArrayTest.java
index 40c6bb8..0f95161 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/LongArray2IntArrayTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/internal/LongArray2IntArrayTest.java
@@ -16,10 +16,7 @@
  */
 package org.apache.commons.rng.simple.internal;
 
-import java.util.Arrays;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.IntStream;
-import org.apache.commons.rng.core.util.NumberFactory;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -52,53 +49,7 @@ class LongArray2IntArrayTest {
     void testIntSizeIsMultipleOfSeedSize(int ints) {
         final long[] seed = new long[getInputLength(ints)];
 
-        // This calls convert without a length
         final int[] out = new LongArray2IntArray().convert(seed);
         Assertions.assertEquals(seed.length * 2, out.length);
     }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testSeedConversion(int ints) {
-        assertSeedConversion(ints, getInputLength(ints));
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testFilledSeedConversion(int ints) {
-        assertSeedConversion(ints, getInputLength(ints) / 3);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testTruncatedSeedConversion(int ints) {
-        assertSeedConversion(ints, getInputLength(ints) * 3);
-    }
-
-    private static void assertSeedConversion(int ints, int inLength) {
-        final long[] seed = ThreadLocalRandom.current().longs(inLength).toArray();
-
-        // Convert to little-endian int array
-        final long[] filledSeed = Arrays.copyOf(seed, ints * 2);
-        final int[] expected = new int[ints];
-        for (int i = 0; i < expected.length; i++) {
-            if ((i & 1) == 0) {
-                expected[i] = NumberFactory.extractLo(filledSeed[i >> 1]);
-            } else {
-                expected[i] = NumberFactory.extractHi(filledSeed[i >> 1]);
-            }
-        }
-
-        // This calls convert with a length
-        final int[] out = new LongArray2IntArray().convert(seed, ints);
-        Assertions.assertArrayEquals(expected, out);
-    }
-
-    @ParameterizedTest
-    @MethodSource(value = {"getLengths"})
-    void testLongArrayToIntArrayToIntArray(int ints) {
-        final long[] expected = ThreadLocalRandom.current().longs(ints / 2).toArray();
-        final long[] out = new IntArray2LongArray().convert(new LongArray2IntArray().convert(expected));
-        Assertions.assertArrayEquals(expected, out);
-    }
 }