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/30 11:41:49 UTC
[commons-rng] 03/04: Update checkNextInRange to use a LongSupplier
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 3fb6b326b1889f2ddc01cb040e72d710b0f27ce1
Author: aherbert <ah...@apache.org>
AuthorDate: Wed Mar 30 12:39:18 2022 +0100
Update checkNextInRange to use a LongSupplier
The generic type <T extends Number> was used as a long value. The type
can be dropped to avoid auto-boxing for all generator tests.
Modified methods to static.
---
.../rng/core/ProvidersCommonParametricTest.java | 62 ++++++++--------------
.../rng/simple/ProvidersCommonParametricTest.java | 29 +++++-----
2 files changed, 33 insertions(+), 58 deletions(-)
diff --git a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersCommonParametricTest.java b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersCommonParametricTest.java
index 4c7b54c..653c878 100644
--- a/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersCommonParametricTest.java
+++ b/commons-rng-core/src/test/java/org/apache/commons/rng/core/ProvidersCommonParametricTest.java
@@ -20,6 +20,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.Callable;
+import java.util.function.LongSupplier;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
@@ -381,15 +382,10 @@ class ProvidersCommonParametricTest {
* @param max Upper bound.
* @param sampleSize Number of random values generated.
*/
- private void checkNextIntegerInRange(final UniformRandomProvider generator,
- final int max,
- int sampleSize) {
- final Callable<Integer> nextMethod = new Callable<Integer>() {
- @Override
- public Integer call() throws Exception {
- return generator.nextInt(max);
- }
- };
+ private static void checkNextIntegerInRange(final UniformRandomProvider generator,
+ final int max,
+ int sampleSize) {
+ final LongSupplier nextMethod = () -> generator.nextInt(max);
checkNextInRange(generator, max, sampleSize, nextMethod);
}
@@ -401,15 +397,10 @@ class ProvidersCommonParametricTest {
* @param max Upper bound.
* @param sampleSize Number of random values generated.
*/
- private void checkNextLongInRange(final UniformRandomProvider generator,
- long max,
- int sampleSize) {
- final Callable<Long> nextMethod = new Callable<Long>() {
- @Override
- public Long call() throws Exception {
- return generator.nextLong(max);
- }
- };
+ private static void checkNextLongInRange(final UniformRandomProvider generator,
+ long max,
+ int sampleSize) {
+ final LongSupplier nextMethod = () -> generator.nextLong(max);
checkNextInRange(generator, max, sampleSize, nextMethod);
}
@@ -420,15 +411,10 @@ class ProvidersCommonParametricTest {
* @param generator Generator.
* @param sampleSize Number of random values generated.
*/
- private void checkNextFloat(final UniformRandomProvider generator,
- int sampleSize) {
+ private static void checkNextFloat(final UniformRandomProvider generator,
+ int sampleSize) {
final int max = 1234;
- final Callable<Integer> nextMethod = new Callable<Integer>() {
- @Override
- public Integer call() throws Exception {
- return (int) (max * generator.nextFloat());
- }
- };
+ final LongSupplier nextMethod = () -> (int) (max * generator.nextFloat());
checkNextInRange(generator, max, sampleSize, nextMethod);
}
@@ -439,15 +425,10 @@ class ProvidersCommonParametricTest {
* @param generator Generator.
* @param sampleSize Number of random values generated.
*/
- private void checkNextDouble(final UniformRandomProvider generator,
- int sampleSize) {
+ private static void checkNextDouble(final UniformRandomProvider generator,
+ int sampleSize) {
final int max = 578;
- final Callable<Integer> nextMethod = new Callable<Integer>() {
- @Override
- public Integer call() throws Exception {
- return (int) (max * generator.nextDouble());
- }
- };
+ final LongSupplier nextMethod = () -> (int) (max * generator.nextDouble());
checkNextInRange(generator, max, sampleSize, nextMethod);
}
@@ -461,21 +442,20 @@ class ProvidersCommonParametricTest {
* tests is tested at the 0.5% significance level.
*
* @param generator Generator.
- * @param max Upper bound.
+ * @param n Upper bound.
* @param nextMethod method to call.
* @param sampleSize Number of random values generated.
*/
- private <T extends Number> void checkNextInRange(final UniformRandomProvider generator,
- T max,
- int sampleSize,
- Callable<T> nextMethod) {
+ private static void checkNextInRange(final UniformRandomProvider generator,
+ long n,
+ int sampleSize,
+ LongSupplier nextMethod) {
final int numTests = 500;
// Do not change (statistical test assumes that dof = 9).
final int numBins = 10; // dof = numBins - 1
// Set up bins.
- final long n = max.longValue();
final long[] binUpperBounds = new long[numBins];
final double step = n / (double) numBins;
for (int k = 0; k < numBins; k++) {
@@ -507,7 +487,7 @@ class ProvidersCommonParametricTest {
for (int i = 0; i < numTests; i++) {
Arrays.fill(observed, 0);
SAMPLE: for (int j = 0; j < sampleSize; j++) {
- final long value = nextMethod.call().longValue();
+ final long value = nextMethod.getAsLong();
Assertions.assertTrue(value >= 0 && value < n, "Range");
for (int k = 0; k < lastDecileIndex; k++) {
diff --git a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersCommonParametricTest.java b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersCommonParametricTest.java
index 55c6070..b9c6e4b 100644
--- a/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersCommonParametricTest.java
+++ b/commons-rng-simple/src/test/java/org/apache/commons/rng/simple/ProvidersCommonParametricTest.java
@@ -20,6 +20,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.Callable;
+import java.util.function.LongSupplier;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.ObjectOutputStream;
@@ -382,17 +383,12 @@ class ProvidersCommonParametricTest {
* @param sampleSize Number of random values generated.
* @param generator Random generator.
*/
- private void checkNextIntegerInRange(final UniformRandomProvider rng,
- final int max,
- int sampleSize) {
- final Callable<Integer> nextMethod = new Callable<Integer>() {
- @Override
- public Integer call() throws Exception {
- return rng.nextInt(max);
- }
- };
+ private static void checkNextIntegerInRange(final UniformRandomProvider rng,
+ final int max,
+ int sampleSize) {
+ final LongSupplier nextMethod = () -> rng.nextInt(max);
- checkNextInRange(max, sampleSize, nextMethod, rng);
+ checkNextInRange(rng, max, sampleSize, nextMethod);
}
/**
@@ -403,22 +399,21 @@ class ProvidersCommonParametricTest {
* Repeat tests are performed at the 1% level and the total number of failed
* tests is tested at the 0.5% significance level.
*
- * @param max Upper bound.
+ * @param n Upper bound.
* @param nextMethod method to call.
* @param sampleSize Number of random values generated.
* @param generator Random generator.
*/
- private static <T extends Number> void checkNextInRange(T max,
- int sampleSize,
- Callable<T> nextMethod,
- UniformRandomProvider generator) {
+ private static void checkNextInRange(UniformRandomProvider generator,
+ long n,
+ int sampleSize,
+ LongSupplier nextMethod) {
final int numTests = 500;
// Do not change (statistical test assumes that dof = 9).
final int numBins = 10; // dof = numBins - 1
// Set up bins.
- final long n = max.longValue();
final long[] binUpperBounds = new long[numBins];
final double step = n / (double) numBins;
for (int k = 0; k < numBins; k++) {
@@ -450,7 +445,7 @@ class ProvidersCommonParametricTest {
for (int i = 0; i < numTests; i++) {
Arrays.fill(observed, 0);
SAMPLE: for (int j = 0; j < sampleSize; j++) {
- final long value = nextMethod.call().longValue();
+ final long value = nextMethod.getAsLong();
Assertions.assertTrue(value >= 0 && value < n, "Range");
for (int k = 0; k < lastDecileIndex; k++) {