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 2021/09/20 17:08:01 UTC

[commons-statistics] 13/13: Use @ParameterizedTest for precondition test

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-statistics.git

commit 3e7d19bac3cf5a9719f2f57e3941ca1ae2661bc9
Author: aherbert <ah...@apache.org>
AuthorDate: Mon Sep 20 17:41:08 2021 +0100

    Use @ParameterizedTest for precondition test
---
 .../distribution/BinomialDistributionTest.java     | 46 +++++++--------
 .../distribution/CauchyDistributionTest.java       |  2 +-
 .../distribution/ChiSquaredDistributionTest.java   | 23 ++++----
 .../distribution/ExponentialDistributionTest.java  | 33 ++++-------
 .../statistics/distribution/FDistributionTest.java | 34 ++++++-----
 .../distribution/GammaDistributionTest.java        | 34 ++++++-----
 .../distribution/GeometricDistributionTest.java    | 25 ++++----
 .../distribution/GumbelDistributionTest.java       | 26 ++++++---
 .../HypergeometricDistributionTest.java            | 49 ++++++++--------
 .../distribution/LaplaceDistributionTest.java      | 27 ++++++---
 .../distribution/LogNormalDistributionTest.java    | 27 ++++++---
 .../distribution/LogisticDistributionTest.java     | 12 +++-
 .../distribution/NakagamiDistributionTest.java     | 30 +++++++---
 .../distribution/NormalDistributionTest.java       | 27 ++++++---
 .../distribution/ParetoDistributionTest.java       | 38 +++++++-----
 .../distribution/PascalDistributionTest.java       | 42 ++++++-------
 .../distribution/PoissonDistributionTest.java      | 33 ++++-------
 .../statistics/distribution/TDistributionTest.java | 18 +++---
 .../distribution/TriangularDistributionTest.java   | 68 +++++++++-------------
 .../UniformContinuousDistributionTest.java         | 19 +++---
 .../UniformDiscreteDistributionTest.java           | 16 +++--
 .../distribution/WeibullDistributionTest.java      | 37 +++++++-----
 .../distribution/ZipfDistributionTest.java         | 33 ++++++-----
 23 files changed, 382 insertions(+), 317 deletions(-)

diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BinomialDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BinomialDistributionTest.java
index 9aa2b7b..685691b 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BinomialDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BinomialDistributionTest.java
@@ -19,6 +19,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for BinomialDistribution. Extends DiscreteDistributionAbstractTest.
@@ -167,30 +169,26 @@ class BinomialDistributionTest extends DiscreteDistributionAbstractTest {
         Assertions.assertEquals(0, dist.getSupportUpperBound());
     }
 
-    @Test
-    void testParameterAccessors() {
-        for (final int n : new int[] {11, 42, 999}) {
-            for (final double p : new double[] {0.1, 0.456, 0.999}) {
-                final BinomialDistribution dist = new BinomialDistribution(n, p);
-                Assertions.assertEquals(n, dist.getNumberOfTrials());
-                Assertions.assertEquals(p, dist.getProbabilityOfSuccess());
-            }
-        }
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new BinomialDistribution(-1, 0.1));
-    }
-
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new BinomialDistribution(10, -0.1));
-    }
-
-    @Test
-    void testConstructorPrecondition3() {
-        Assertions.assertThrows(DistributionException.class, () -> new BinomialDistribution(10, 1.1));
+    @ParameterizedTest
+    @CsvSource({
+        "11, 0.1",
+        "42, 0.456",
+        "999, 0.999",
+    })
+    void testParameterAccessors(int trials, double p) {
+        final BinomialDistribution dist = new BinomialDistribution(trials, p);
+        Assertions.assertEquals(trials, dist.getNumberOfTrials());
+        Assertions.assertEquals(p, dist.getProbabilityOfSuccess());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "-1, 0.1",
+        "10, -0.1",
+        "10, 1.1",
+    })
+    void testConstructorPreconditions(int trials, double p) {
+        Assertions.assertThrows(DistributionException.class, () -> new BinomialDistribution(trials, p));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
index cc0e47a..1981f89 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
@@ -112,7 +112,7 @@ class CauchyDistributionTest extends ContinuousDistributionAbstractTest {
     @ParameterizedTest
     @CsvSource({
         "0, 0",
-        "0, -1",
+        "0, -0.1",
     })
     void testConstructorPreconditions(double location, double scale) {
         Assertions.assertThrows(DistributionException.class, () -> new CauchyDistribution(location, scale));
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ChiSquaredDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ChiSquaredDistributionTest.java
index 082a9ea..ff4c961 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ChiSquaredDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ChiSquaredDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Test cases for {@link ChiSquaredDistribution}.
@@ -112,20 +114,17 @@ class ChiSquaredDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final ChiSquaredDistribution dist = makeDistribution();
-        Assertions.assertEquals(5d, dist.getDegreesOfFreedom());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new ChiSquaredDistribution(0));
+    @ParameterizedTest
+    @ValueSource(doubles = {0.5, 1, 2})
+    void testParameterAccessors(double df) {
+        final ChiSquaredDistribution dist = new ChiSquaredDistribution(df);
+        Assertions.assertEquals(df, dist.getDegreesOfFreedom());
     }
 
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new ChiSquaredDistribution(-1));
+    @ParameterizedTest
+    @ValueSource(doubles = {0, -0.1})
+    void testConstructorPrecondition(double df) {
+        Assertions.assertThrows(DistributionException.class, () -> new ChiSquaredDistribution(df));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ExponentialDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ExponentialDistributionTest.java
index 6903108..9deca16 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ExponentialDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ExponentialDistributionTest.java
@@ -20,6 +20,8 @@ import org.apache.commons.numbers.core.Precision;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Test cases for ExponentialDistribution.
@@ -126,28 +128,17 @@ class ExponentialDistributionTest extends ContinuousDistributionAbstractTest {
         Assertions.assertEquals(0.1711390397, d2.density(2.0), 1e-8);
     }
 
-    @Test
-    void testMeanAccessors() {
-        final ExponentialDistribution dist = makeDistribution();
-        Assertions.assertEquals(5d, dist.getMean());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new ExponentialDistribution(0));
+    @ParameterizedTest
+    @ValueSource(doubles = {0, -0.1})
+    void testConstructorPrecondition(double mean) {
+        Assertions.assertThrows(DistributionException.class, () -> new ExponentialDistribution(mean));
     }
 
-    @Test
-    void testMoments() {
-        final double tol = 1e-9;
-        ExponentialDistribution dist;
-
-        dist = new ExponentialDistribution(11d);
-        Assertions.assertEquals(11d, dist.getMean(), tol);
-        Assertions.assertEquals(11d * 11d, dist.getVariance(), tol);
-
-        dist = new ExponentialDistribution(10.5d);
-        Assertions.assertEquals(10.5d, dist.getMean(), tol);
-        Assertions.assertEquals(10.5d * 10.5d, dist.getVariance(), tol);
+    @ParameterizedTest
+    @ValueSource(doubles = {11, 10.5})
+    void testMoments(double mean) {
+        final ExponentialDistribution dist = new ExponentialDistribution(mean);
+        Assertions.assertEquals(mean, dist.getMean());
+        Assertions.assertEquals(mean * mean, dist.getVariance());
     }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/FDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/FDistributionTest.java
index ea19de0..ef68dea 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/FDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/FDistributionTest.java
@@ -19,6 +19,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for FDistribution.
@@ -99,20 +101,24 @@ class FDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final FDistribution dist = makeDistribution();
-        Assertions.assertEquals(5d, dist.getNumeratorDegreesOfFreedom());
-        Assertions.assertEquals(6d, dist.getDenominatorDegreesOfFreedom());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new FDistribution(0, 1));
-    }
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new FDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "11, 12",
+        "101, 400",
+    })
+    void testParameterAccessors(double df1, double df2) {
+        final FDistribution dist = new FDistribution(df1, df2);
+        Assertions.assertEquals(df1, dist.getNumeratorDegreesOfFreedom());
+        Assertions.assertEquals(df2, dist.getDenominatorDegreesOfFreedom());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "0, 1",
+        "1, 0",
+    })
+    void testConstructorPreconditions(double df1, double df2) {
+        Assertions.assertThrows(DistributionException.class, () -> new FDistribution(df1, df2));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java
index 9d89eea..cd27c41 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java
@@ -27,6 +27,8 @@ import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for GammaDistribution.
@@ -100,20 +102,24 @@ class GammaDistributionTest extends ContinuousDistributionAbstractTest {
         Assertions.assertEquals(0.0, dist.density(Double.POSITIVE_INFINITY));
     }
 
-    @Test
-    void testParameterAccessors() {
-        final GammaDistribution dist = makeDistribution();
-        Assertions.assertEquals(4d, dist.getShape());
-        Assertions.assertEquals(2d, dist.getScale());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new GammaDistribution(0, 1));
-    }
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new GammaDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "4, 2",
+        "3.4, 1.2",
+    })
+    void testParameterAccessors(double shape, double scale) {
+        final GammaDistribution dist = new GammaDistribution(shape, scale);
+        Assertions.assertEquals(shape, dist.getShape());
+        Assertions.assertEquals(scale, dist.getScale());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "0, 1",
+        "1, 0",
+    })
+    void testConstructorPreconditions(double shape, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new GammaDistribution(shape, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
index d4f1b39..ff55aec 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
@@ -21,6 +21,8 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Test cases for GeometricDistribution.
@@ -188,22 +190,17 @@ class GeometricDistributionTest extends DiscreteDistributionAbstractTest {
         }
     }
 
-    @Test
-    void testParameterAccessors() {
-        for (final double x : new double[] {0.1, 0.456, 0.999}) {
-            final GeometricDistribution dist = new GeometricDistribution(x);
-            Assertions.assertEquals(x, dist.getProbabilityOfSuccess());
-        }
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new GeometricDistribution(-0.1));
+    @ParameterizedTest
+    @ValueSource(doubles = {0.1, 0.456, 0.999})
+    void testParameterAccessors(double p) {
+        final GeometricDistribution dist = new GeometricDistribution(p);
+        Assertions.assertEquals(p, dist.getProbabilityOfSuccess());
     }
 
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new GeometricDistribution(1.1));
+    @ParameterizedTest
+    @ValueSource(doubles = {-0.1, 0.0, 1.1})
+    void testConstructorPrecondition(double p) {
+        Assertions.assertThrows(DistributionException.class, () -> new GeometricDistribution(p));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
index 71275ad..4bd7ab8 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
@@ -18,6 +18,8 @@ package org.apache.commons.statistics.distribution;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for GumbelDistribution.
@@ -86,16 +88,24 @@ class GumbelDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final GumbelDistribution dist = makeDistribution();
-        Assertions.assertEquals(0.5, dist.getLocation());
-        Assertions.assertEquals(2, dist.getScale());
+    @ParameterizedTest
+    @CsvSource({
+        "0.5, 2",
+        "1.3, 0.1",
+    })
+    void testParameterAccessors(double location, double scale) {
+        final GumbelDistribution dist = new GumbelDistribution(location, scale);
+        Assertions.assertEquals(location, dist.getLocation());
+        Assertions.assertEquals(scale, dist.getScale());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new GumbelDistribution(10, -0.1));
+    @ParameterizedTest
+    @CsvSource({
+        "10, 0.0",
+        "10, -0.1",
+    })
+    void testConstructorPreconditions(double location, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new GumbelDistribution(location, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
index 8b29ffd..3b799e2 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
@@ -22,6 +22,8 @@ import org.apache.commons.rng.simple.RandomSource;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for HyperGeometriclDistribution.
@@ -152,33 +154,30 @@ class HypergeometricDistributionTest extends DiscreteDistributionAbstractTest {
         Assertions.assertEquals(3, dist.getSupportUpperBound());
     }
 
-    @Test
-    void testParameterAccessors() {
-        final HypergeometricDistribution dist = new HypergeometricDistribution(5, 3, 4);
-        Assertions.assertEquals(5, dist.getPopulationSize());
-        Assertions.assertEquals(3, dist.getNumberOfSuccesses());
-        Assertions.assertEquals(4, dist.getSampleSize());
+    @ParameterizedTest
+    @CsvSource({
+        "5, 3, 4",
+        "10, 9, 1",
+    })
+    void testParameterAccessors(int populationSize, int numberOfSuccesses, int sampleSize) {
+        final HypergeometricDistribution dist = new HypergeometricDistribution(populationSize, numberOfSuccesses, sampleSize);
+        Assertions.assertEquals(populationSize, dist.getPopulationSize());
+        Assertions.assertEquals(numberOfSuccesses, dist.getNumberOfSuccesses());
+        Assertions.assertEquals(sampleSize, dist.getSampleSize());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new HypergeometricDistribution(0, 3, 5));
-    }
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new HypergeometricDistribution(5, -1, 5));
-    }
-    @Test
-    void testConstructorPrecondition3() {
-        Assertions.assertThrows(DistributionException.class, () -> new HypergeometricDistribution(5, 3, -1));
-    }
-    @Test
-    void testConstructorPrecondition4() {
-        Assertions.assertThrows(DistributionException.class, () -> new HypergeometricDistribution(5, 6, 5));
-    }
-    @Test
-    void testConstructorPrecondition5() {
-        Assertions.assertThrows(DistributionException.class, () -> new HypergeometricDistribution(5, 3, 6));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 3, 5",
+        "-1, 3, 5",
+        "5, -1, 5",
+        "5, 3, -1",
+        "5, 6, 5",
+        "5, 3, 6",
+    })
+    void testConstructorPreconditions(int populationSize, int numberOfSuccesses, int sampleSize) {
+        Assertions.assertThrows(DistributionException.class,
+            () -> new HypergeometricDistribution(populationSize, numberOfSuccesses, sampleSize));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
index 0af06cf..f34ffde 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
@@ -18,6 +18,8 @@ package org.apache.commons.statistics.distribution;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for LaplaceDistribution.
@@ -88,16 +90,25 @@ class LaplaceDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final LaplaceDistribution dist = makeDistribution();
-        Assertions.assertEquals(0, dist.getLocation());
-        Assertions.assertEquals(1, dist.getScale());
+    @ParameterizedTest
+    @CsvSource({
+        "1.2, 2.1",
+        "0, 1",
+        "-3, 2",
+    })
+    void testParameterAccessors(double location, double scale) {
+        final LaplaceDistribution dist = new LaplaceDistribution(location, scale);
+        Assertions.assertEquals(location, dist.getLocation());
+        Assertions.assertEquals(scale, dist.getScale());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new LaplaceDistribution(0, -0.1));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0",
+        "0, -0.1",
+    })
+    void testConstructorPreconditions(double location, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new LaplaceDistribution(location, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
index c2d24d3..609640d 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for {@link LogNormalDistribution}. Extends
@@ -189,16 +191,25 @@ class LogNormalDistributionTest extends ContinuousDistributionAbstractTest {
         verifySurvivalProbability();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final LogNormalDistribution distribution = makeDistribution();
-        Assertions.assertEquals(2.1, distribution.getMu());
-        Assertions.assertEquals(1.4, distribution.getSigma());
+    @ParameterizedTest
+    @CsvSource({
+        "1.2, 2.1",
+        "0, 1",
+        "-3, 2",
+    })
+    void testParameterAccessors(double mu, double sigma) {
+        final LogNormalDistribution dist = new LogNormalDistribution(mu, sigma);
+        Assertions.assertEquals(mu, dist.getMu());
+        Assertions.assertEquals(sigma, dist.getSigma());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new LogNormalDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0",
+        "0, -0.1",
+    })
+    void testConstructorPreconditions(double mu, double sigma) {
+        Assertions.assertThrows(DistributionException.class, () -> new LogNormalDistribution(mu, sigma));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
index 40d9c30..0b9084d 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
@@ -18,6 +18,8 @@ package org.apache.commons.statistics.distribution;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for LogisticsDistribution.
@@ -103,9 +105,13 @@ class LogisticDistributionTest extends ContinuousDistributionAbstractTest {
         Assertions.assertEquals(5, dist.getScale());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new LogisticDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "1, 0",
+        "1, -0.1",
+    })
+    void testConstructorPreconditions(double location, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new LogisticDistribution(location, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
index 4ff0bba..3acd437 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
@@ -18,6 +18,8 @@ package org.apache.commons.statistics.distribution;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for NakagamiDistribution.
@@ -87,21 +89,31 @@ class NakagamiDistributionTest extends ContinuousDistributionAbstractTest {
         Assertions.assertEquals(-1250.22579, dist.logDensity(x), 1e-4);
     }
 
+    @ParameterizedTest
+    @CsvSource({
+        "1.2, 2.1",
+        "0.5, 1",
+    })
+    void testParameterAccessors(double shape, double scale) {
+        final NakagamiDistribution dist = new NakagamiDistribution(shape, scale);
+        Assertions.assertEquals(shape, dist.getShape());
+        Assertions.assertEquals(scale, dist.getScale());
+    }
+
     @Test
     void testParameterAccessors() {
         final NakagamiDistribution dist = makeDistribution();
-        Assertions.assertEquals(0.5, dist.getShape());
         Assertions.assertEquals(1, dist.getScale());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new NakagamiDistribution(0.4999, 1.0));
-    }
-
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new NakagamiDistribution(0.5, 0.0));
+    @ParameterizedTest
+    @CsvSource({
+        "0.4999, 1.0",
+        "0.5, 0.0",
+        "0.5, -0.1",
+    })
+    void testConstructorPreconditions(double shape, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new NakagamiDistribution(shape, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NormalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NormalDistributionTest.java
index c6cc57a..57afd43 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NormalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NormalDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for {@link NormalDistribution}. Extends
@@ -142,16 +144,25 @@ class NormalDistributionTest extends ContinuousDistributionAbstractTest {
         Assertions.assertEquals(1, v / expected, 1e-5);
     }
 
-    @Test
-    void testParameterAccessors() {
-        final NormalDistribution distribution = makeDistribution();
-        Assertions.assertEquals(2.1, distribution.getMean());
-        Assertions.assertEquals(1.4, distribution.getStandardDeviation());
+    @ParameterizedTest
+    @CsvSource({
+        "1.2, 2.1",
+        "0, 1",
+        "-3, 2",
+    })
+    void testParameterAccessors(double mu, double sigma) {
+        final NormalDistribution dist = new NormalDistribution(mu, sigma);
+        Assertions.assertEquals(mu, dist.getMean());
+        Assertions.assertEquals(sigma, dist.getStandardDeviation());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new NormalDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0",
+        "0, -0.1",
+    })
+    void testConstructorPreconditions(double mu, double sigma) {
+        Assertions.assertThrows(DistributionException.class, () -> new NormalDistribution(mu, sigma));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
index 12ecc6b..0fde16a 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for {@link ParetoDistribution}.
@@ -144,21 +146,27 @@ class ParetoDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final ParetoDistribution distribution = makeDistribution();
-        Assertions.assertEquals(2.1, distribution.getScale());
-        Assertions.assertEquals(1.4, distribution.getShape());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new ParetoDistribution(1, 0));
-    }
-
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new ParetoDistribution(0, 1));
+    @ParameterizedTest
+    @CsvSource({
+        "1.2, 2.1",
+        "10, 1",
+        "3, 2",
+    })
+    void testParameterAccessors(double scale, double shape) {
+        final ParetoDistribution dist = new ParetoDistribution(scale, shape);
+        Assertions.assertEquals(scale, dist.getScale());
+        Assertions.assertEquals(shape, dist.getShape());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "1, 0",
+        "1, -0.1",
+        "0, 1",
+        "-0.1, 1",
+    })
+    void testConstructorPreconditions(double scale, double shape) {
+        Assertions.assertThrows(DistributionException.class, () -> new ParetoDistribution(scale, shape));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
index ecac3e8..6df69ee 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
@@ -19,6 +19,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for PascalDistribution.
@@ -127,26 +129,26 @@ class PascalDistributionTest extends DiscreteDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final PascalDistribution dist = makeDistribution();
-        Assertions.assertEquals(10, dist.getNumberOfSuccesses());
-        Assertions.assertEquals(0.7, dist.getProbabilityOfSuccess());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new PascalDistribution(0, 0.5));
-    }
-
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new PascalDistribution(3, -0.1));
-    }
-
-    @Test
-    void testConstructorPrecondition3() {
-        Assertions.assertThrows(DistributionException.class, () -> new PascalDistribution(3, 1.1));
+    @ParameterizedTest
+    @CsvSource({
+        "10, 0.7",
+        "12, 0.5",
+    })
+    void testParameterAccessors(int r, double p) {
+        final PascalDistribution dist = new PascalDistribution(r, p);
+        Assertions.assertEquals(r, dist.getNumberOfSuccesses());
+        Assertions.assertEquals(p, dist.getProbabilityOfSuccess());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0.5",
+        "-1, 0.5",
+        "3, -0.1",
+        "3, 1.1",
+    })
+    void testConstructorPreconditions(int r, double p) {
+        Assertions.assertThrows(DistributionException.class, () -> new PascalDistribution(r, p));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PoissonDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PoissonDistributionTest.java
index 7257887..76df0e6 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PoissonDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PoissonDistributionTest.java
@@ -19,6 +19,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * <code>PoissonDistributionTest</code>
@@ -118,29 +120,18 @@ class PoissonDistributionTest extends DiscreteDistributionAbstractTest {
         Assertions.assertEquals(0, dist.inverseCumulativeProbability(0d));
     }
 
-    @Test
-    void testParameterAccessors() {
-        final PoissonDistribution dist = new PoissonDistribution(10.0);
-        Assertions.assertEquals(10.0, dist.getMean());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new PoissonDistribution(-1));
+    @ParameterizedTest
+    @ValueSource(doubles = {0, -0.1})
+    void testConstructorPrecondition(double mean) {
+        Assertions.assertThrows(DistributionException.class, () -> new PoissonDistribution(mean));
     }
 
-    @Test
-    void testMoments() {
-        final double tol = 1e-9;
-        PoissonDistribution dist;
-
-        dist = new PoissonDistribution(1);
-        Assertions.assertEquals(1, dist.getMean(), tol);
-        Assertions.assertEquals(1, dist.getVariance(), tol);
-
-        dist = new PoissonDistribution(11.23);
-        Assertions.assertEquals(11.23, dist.getMean(), tol);
-        Assertions.assertEquals(11.23, dist.getVariance(), tol);
+    @ParameterizedTest
+    @ValueSource(doubles = {1.2, 15})
+    void testMoments(double mean) {
+        PoissonDistribution dist = new PoissonDistribution(mean);
+        Assertions.assertEquals(mean, dist.getMean());
+        Assertions.assertEquals(mean, dist.getVariance());
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TDistributionTest.java
index 93ecdc8..011c29f 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TDistributionTest.java
@@ -19,6 +19,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 /**
  * Test cases for TDistribution.
  * Extends ContinuousDistributionAbstractTest.  See class javadoc for
@@ -136,15 +138,17 @@ class TDistributionTest extends ContinuousDistributionAbstractTest {
         }
     }
 
-    @Test
-    void testParameterAccessors() {
-        final TDistribution dist = makeDistribution();
-        Assertions.assertEquals(5d, dist.getDegreesOfFreedom());
+    @ParameterizedTest
+    @ValueSource(doubles = {1, 12.3})
+    void testParameterAccessors(double df) {
+        final TDistribution dist = new TDistribution(df);
+        Assertions.assertEquals(df, dist.getDegreesOfFreedom());
     }
 
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new TDistribution(0));
+    @ParameterizedTest
+    @ValueSource(doubles = {0, -0.1})
+    void testConstructorPrecondition(double df) {
+        Assertions.assertThrows(DistributionException.class, () -> new TDistribution(df));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
index 32664b4..6791766 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for {@link TriangularDistribution}. See class javadoc for
@@ -113,50 +115,32 @@ class TriangularDistributionTest extends ContinuousDistributionAbstractTest {
 
     //-------------------- Additional test cases -------------------------------
 
-    /** Test lower bound getter. */
-    @Test
-    void testGetLowerBound() {
-        final TriangularDistribution dist = makeDistribution();
-        Assertions.assertEquals(-3.0, dist.getSupportLowerBound());
+    @ParameterizedTest
+    @CsvSource({
+        "1, 2, 3",
+        "0.12, 3.45, 12.56",
+    })
+    void testParameterAccessors(double lower, double mode, double upper) {
+        final TriangularDistribution dist = new TriangularDistribution(lower, mode, upper);
+        Assertions.assertEquals(lower, dist.getSupportLowerBound());
+        Assertions.assertEquals(mode, dist.getMode());
+        Assertions.assertEquals(upper, dist.getSupportUpperBound());
     }
 
-    /** Test upper bound getter. */
-    @Test
-    void testGetUpperBound() {
-        final TriangularDistribution dist = makeDistribution();
-        Assertions.assertEquals(12.0, dist.getSupportUpperBound());
-    }
-
-    @Test
-    void testParameterAccessors() {
-        for (final double x : new double[] {0.1, 0.2, 0.45}) {
-            final TriangularDistribution dist = new TriangularDistribution(0, x, 1.0);
-            Assertions.assertEquals(x, dist.getMode());
-        }
-    }
-
-    /** Test pre-condition for equal lower/upper limit. */
-    @Test
-    void testConstructorPreconditions1() {
-        Assertions.assertThrows(DistributionException.class, () -> new TriangularDistribution(0, 0, 0));
-    }
-
-    /** Test pre-condition for lower limit larger than upper limit. */
-    @Test
-    void testConstructorPreconditions2() {
-        Assertions.assertThrows(DistributionException.class, () -> new TriangularDistribution(1, 1, 0));
-    }
-
-    /** Test pre-condition for mode larger than upper limit. */
-    @Test
-    void testConstructorPreconditions3() {
-        Assertions.assertThrows(DistributionException.class, () -> new TriangularDistribution(0, 2, 1));
-    }
-
-    /** Test pre-condition for mode smaller than lower limit. */
-    @Test
-    void testConstructorPreconditions4() {
-        Assertions.assertThrows(DistributionException.class, () -> new TriangularDistribution(2, 1, 3));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0, 0",
+        // 1, 2, 3 is OK - move points to incorrect locations
+        "4, 2, 3",
+        "3, 2, 3",
+        "2.5, 2, 3",
+        "1, 0, 3",
+        "1, 4, 3",
+        "1, 2, -1",
+        "1, 2, 1.5",
+    })
+    void testConstructorPreconditions(double lower, double mode, double upper) {
+        Assertions.assertThrows(DistributionException.class, () -> new TriangularDistribution(lower, mode, upper));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
index 5e5c541..a0b0a17 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for UniformContinuousDistribution. See class javadoc for
@@ -76,16 +78,13 @@ class UniformContinuousDistributionTest extends ContinuousDistributionAbstractTe
         Assertions.assertEquals(1.25, dist.getSupportUpperBound());
     }
 
-    /** Test pre-condition for equal lower/upper bound. */
-    @Test
-    void testConstructorPreconditions1() {
-        Assertions.assertThrows(DistributionException.class, () -> new UniformContinuousDistribution(0, 0));
-    }
-
-    /** Test pre-condition for lower bound larger than upper bound. */
-    @Test
-    void testConstructorPreconditions2() {
-        Assertions.assertThrows(DistributionException.class, () -> new UniformContinuousDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0",
+        "1, 0",
+    })
+    void testConstructorPreconditions(double lower, double upper) {
+        Assertions.assertThrows(DistributionException.class, () -> new UniformContinuousDistribution(lower, upper));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
index 0e29262..c510f2f 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
@@ -20,6 +20,8 @@ package org.apache.commons.statistics.distribution;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 import org.apache.commons.numbers.core.Precision;
 
 /**
@@ -91,15 +93,19 @@ class UniformDiscreteDistributionTest extends DiscreteDistributionAbstractTest {
         Assertions.assertEquals(3 / 12.0, dist.getVariance());
     }
 
-    // MATH-1141
-    @Test
-    void testPreconditionUpperBoundInclusive1() {
-        Assertions.assertThrows(DistributionException.class, () -> new UniformDiscreteDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+         // MATH-1141
+        "1, 0",
+        "3, 2",
+    })
+    void testConstructorPreconditions(int lower, int upper) {
+        Assertions.assertThrows(DistributionException.class, () -> new UniformDiscreteDistribution(lower, upper));
     }
 
     // MATH-1141
     @Test
-    void testPreconditionUpperBoundInclusive2() {
+    void testPreconditionUpperBoundInclusive() {
         // Degenerate case is allowed.
         Assertions.assertDoesNotThrow(() -> new UniformDiscreteDistribution(0, 0));
     }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
index 6b1e28e..748d7eb 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
@@ -21,6 +21,8 @@ import org.apache.commons.numbers.gamma.LogGamma;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for WeibullDistribution.
@@ -108,21 +110,26 @@ class WeibullDistributionTest extends ContinuousDistributionAbstractTest {
         verifyInverseCumulativeProbabilities();
     }
 
-    @Test
-    void testParameterAccessors() {
-        final WeibullDistribution dist = new WeibullDistribution(1, 2);
-        Assertions.assertEquals(1, dist.getShape());
-        Assertions.assertEquals(2, dist.getScale());
-    }
-
-    @Test
-    void testConstructorPrecondition1() {
-        Assertions.assertThrows(DistributionException.class, () -> new WeibullDistribution(0, 2));
-    }
-
-    @Test
-    void testConstructorPrecondition2() {
-        Assertions.assertThrows(DistributionException.class, () -> new WeibullDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "1, 2",
+        "0.1, 2.34",
+    })
+    void testParameterAccessors(double shape, double scale) {
+        final WeibullDistribution dist = new WeibullDistribution(shape, scale);
+        Assertions.assertEquals(shape, dist.getShape());
+        Assertions.assertEquals(scale, dist.getScale());
+    }
+
+    @ParameterizedTest
+    @CsvSource({
+        "0, 2",
+        "-0.1, 2",
+        "1, 0",
+        "1, -0.1",
+    })
+    void testConstructorPreconditions(double shape, double scale) {
+        Assertions.assertThrows(DistributionException.class, () -> new WeibullDistribution(shape, scale));
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
index 5325803..63db21b 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
@@ -21,6 +21,8 @@ import org.apache.commons.rng.simple.RandomSource;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 
 /**
  * Test cases for {@link ZipfDistribution}.
@@ -88,21 +90,26 @@ class ZipfDistributionTest extends DiscreteDistributionAbstractTest {
 
     //-------------------- Additional test cases -------------------------------
 
-    @Test
-    void testParameterAccessors() {
-        final ZipfDistribution dist = makeDistribution();
-        Assertions.assertEquals(10, dist.getNumberOfElements());
-        Assertions.assertEquals(1.0, dist.getExponent());
+    @ParameterizedTest
+    @CsvSource({
+        "10, 1",
+        "3, 0.5",
+    })
+    void testParameterAccessors(int n, double e) {
+        final ZipfDistribution dist = new ZipfDistribution(n, e);
+        Assertions.assertEquals(n, dist.getNumberOfElements());
+        Assertions.assertEquals(e, dist.getExponent());
     }
 
-    @Test
-    void testConstructorPreconditions1() {
-        Assertions.assertThrows(DistributionException.class, () -> new ZipfDistribution(0, 1));
-    }
-
-    @Test
-    void testConstructorPreconditions2() {
-        Assertions.assertThrows(DistributionException.class, () -> new ZipfDistribution(1, 0));
+    @ParameterizedTest
+    @CsvSource({
+        "0, 1",
+        "-1, 1",
+        "1, 0",
+        "1, -0.1",
+    })
+    void testConstructorPreconditions(int n, double e) {
+        Assertions.assertThrows(DistributionException.class, () -> new ZipfDistribution(n, e));
     }
 
     @Test