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/07/21 14:17:42 UTC

[commons-statistics] 02/10: Change String msg to String supplier for TestUtils methods.

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 8a4761ca387171923c224c0b18d22cf4377c81e6
Author: aherbert <ah...@apache.org>
AuthorDate: Wed Jul 21 14:16:45 2021 +0100

    Change String msg to String supplier for TestUtils methods.
---
 .../distribution/BetaDistributionTest.java         | 16 +++---
 .../ContinuousDistributionAbstractTest.java        | 57 ++++++++++++----------
 .../HypergeometricDistributionTest.java            |  6 +--
 .../commons/statistics/distribution/TestUtils.java | 17 ++++---
 4 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
index ee0aec1..6ee9e20 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
@@ -248,20 +248,20 @@ class BetaDistributionTest {
         final double tolerance = 1e-22;
         BetaDistribution d = new BetaDistribution(alpha, beta);
         TestUtils.assertEquals(
-                "cumulative probability not precise at " + value + " for a=" + alpha + " & b=" + beta,
-                d.cumulativeProbability(value),
-                expected,
-                tolerance);
+            () -> "cumulative probability not precise at " + value + " for a=" + alpha + " & b=" + beta,
+            d.cumulativeProbability(value),
+            expected,
+            tolerance);
     }
 
     private void checkSurvivalPrecision(double alpha, double beta, double value, double expected) {
         final double tolerance = 1e-22;
         BetaDistribution d = new BetaDistribution(alpha, beta);
         TestUtils.assertEquals(
-                "survival function not precise at " + value + " for a=" + alpha + " & b=" + beta,
-                d.survivalProbability(value),
-                expected,
-                tolerance);
+            () -> "survival function not precise at " + value + " for a=" + alpha + " & b=" + beta,
+            d.survivalProbability(value),
+            expected,
+            tolerance);
     }
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
index 7df534f..c1894e7 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
@@ -228,8 +228,9 @@ abstract class ContinuousDistributionAbstractTest {
     protected void verifyCumulativeProbabilities() {
         // verify cumulativeProbability(double)
         for (int i = 0; i < cumulativeTestPoints.length; i++) {
-            TestUtils.assertEquals("Incorrect cumulative probability value returned for " +
-                                   cumulativeTestPoints[i], cumulativeTestValues[i],
+            final double x = cumulativeTestPoints[i];
+            TestUtils.assertEquals(() -> "Incorrect cumulative probability value returned for " + x,
+                                   cumulativeTestValues[i],
                                    distribution.cumulativeProbability(cumulativeTestPoints[i]),
                                    getTolerance());
         }
@@ -254,19 +255,20 @@ abstract class ContinuousDistributionAbstractTest {
 
     protected void verifySurvivalProbability() {
         for (int i = 0; i < cumulativeTestPoints.length; i++) {
-            TestUtils.assertEquals("Incorrect survival probability value returned for " +
-                            cumulativeTestPoints[i], 1 - cumulativeTestValues[i],
-                    distribution.survivalProbability(cumulativeTestPoints[i]),
-                    getTolerance());
+            final double x = cumulativeTestPoints[i];
+            TestUtils.assertEquals(() -> "Incorrect survival probability value returned for " + x,
+                                   1 - cumulativeTestValues[i],
+                                   distribution.survivalProbability(cumulativeTestPoints[i]),
+                                   getTolerance());
         }
     }
 
     protected void verifySurvivalAndCumulativeProbabilityComplement() {
         for (final double x : cumulativeTestPoints) {
-            TestUtils.assertEquals("survival + cumulative probability were not close to 1.0" +
-                    x, 1.0,
-                distribution.survivalProbability(x) + distribution.cumulativeProbability(x),
-                getTolerance());
+            TestUtils.assertEquals(() -> "survival + cumulative probability were not close to 1.0" + x,
+                                   1.0,
+                                   distribution.survivalProbability(x) + distribution.cumulativeProbability(x),
+                                   getTolerance());
         }
     }
 
@@ -277,11 +279,10 @@ abstract class ContinuousDistributionAbstractTest {
     protected void verifySurvivalProbabilityPrecision() {
         for (int i = 0; i < survivalPrecisionTestPoints.length; i++) {
             final double x = survivalPrecisionTestPoints[i];
-            TestUtils.assertEquals(
-                    "survival probability is not precise for value " + x,
-                    survivalPrecisionTestValues[i],
-                    distribution.survivalProbability(x),
-                    getHighPrecisionTolerance());
+            TestUtils.assertEquals(() -> "survival probability is not precise for value " + x,
+                                   survivalPrecisionTestValues[i],
+                                   distribution.survivalProbability(x),
+                                   getHighPrecisionTolerance());
         }
     }
 
@@ -292,11 +293,10 @@ abstract class ContinuousDistributionAbstractTest {
     protected void verifyCumulativeProbabilityPrecision() {
         for (int i = 0; i < cumulativePrecisionTestPoints.length; i++) {
             final double x = cumulativePrecisionTestPoints[i];
-            TestUtils.assertEquals(
-                    "cumulative probability is not precise for value " + x,
-                    cumulativePrecisionTestValues[i],
-                    distribution.cumulativeProbability(x),
-                    getHighPrecisionTolerance());
+            TestUtils.assertEquals(() -> "cumulative probability is not precise for value " + x,
+                                   cumulativePrecisionTestValues[i],
+                                   distribution.cumulativeProbability(x),
+                                   getHighPrecisionTolerance());
         }
     }
 
@@ -306,8 +306,9 @@ abstract class ContinuousDistributionAbstractTest {
      */
     protected void verifyInverseCumulativeProbabilities() {
         for (int i = 0; i < inverseCumulativeTestPoints.length; i++) {
-            TestUtils.assertEquals("Incorrect inverse cumulative probability value returned for " +
-                                   inverseCumulativeTestPoints[i], inverseCumulativeTestValues[i],
+            final double x = inverseCumulativeTestPoints[i];
+            TestUtils.assertEquals(() -> "Incorrect inverse cumulative probability value returned for " + x,
+                                   inverseCumulativeTestValues[i],
                                    distribution.inverseCumulativeProbability(inverseCumulativeTestPoints[i]),
                                    getTolerance());
         }
@@ -318,8 +319,9 @@ abstract class ContinuousDistributionAbstractTest {
      */
     protected void verifyDensities() {
         for (int i = 0; i < cumulativeTestPoints.length; i++) {
-            TestUtils.assertEquals("Incorrect probability density value returned for " +
-                                   cumulativeTestPoints[i], densityTestValues[i],
+            final double x = cumulativeTestPoints[i];
+            TestUtils.assertEquals(() -> "Incorrect probability density value returned for " + x,
+                                   densityTestValues[i],
                                    distribution.density(cumulativeTestPoints[i]),
                                    getTolerance());
         }
@@ -330,8 +332,9 @@ abstract class ContinuousDistributionAbstractTest {
      */
     protected void verifyLogDensities() {
         for (int i = 0; i < cumulativeTestPoints.length; i++) {
-            TestUtils.assertEquals("Incorrect probability density value returned for " +
-                                   cumulativeTestPoints[i], logDensityTestValues[i],
+            final double x = cumulativeTestPoints[i];
+            TestUtils.assertEquals(() -> "Incorrect probability density value returned for " + x,
+                                   logDensityTestValues[i],
                                    distribution.logDensity(cumulativeTestPoints[i]),
                                    getTolerance());
         }
@@ -413,7 +416,7 @@ abstract class ContinuousDistributionAbstractTest {
             final double diff = distribution.cumulativeProbability(upper) -
                 distribution.cumulativeProbability(lower);
             final double direct = distribution.probability(lower, upper);
-            TestUtils.assertEquals("Inconsistent probability for (" +
+            TestUtils.assertEquals(() -> "Inconsistent probability for (" +
                                    lower + "," + upper + ")", diff, direct, tolerance);
         }
     }
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 19f692f..d2ce7ab 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
@@ -224,15 +224,15 @@ class HypergeometricDistributionTest extends DiscreteDistributionAbstractTest {
             final int x = (int)data[i][0];
             final double pmf = data[i][1];
             final double actualPmf = dist.probability(x);
-            TestUtils.assertRelativelyEquals("Expected equals for <" + x + "> pmf", pmf, actualPmf, 1.0e-9);
+            TestUtils.assertRelativelyEquals(() -> "Expected equals for <" + x + "> pmf", pmf, actualPmf, 1.0e-9);
 
             final double cdf = data[i][2];
             final double actualCdf = dist.cumulativeProbability(x);
-            TestUtils.assertRelativelyEquals("Expected equals for <" + x + "> cdf", cdf, actualCdf, 1.0e-9);
+            TestUtils.assertRelativelyEquals(() -> "Expected equals for <" + x + "> cdf", cdf, actualCdf, 1.0e-9);
 
             final double cdf1 = data[i][3];
             final double actualCdf1 = dist.upperCumulativeProbability(x);
-            TestUtils.assertRelativelyEquals("Expected equals for <" + x + "> cdf1", cdf1, actualCdf1, 1.0e-9);
+            TestUtils.assertRelativelyEquals(() -> "Expected equals for <" + x + "> cdf1", cdf1, actualCdf1, 1.0e-9);
         }
     }
 
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
index adbc375..7e93238 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
@@ -18,6 +18,7 @@
 package org.apache.commons.statistics.distribution;
 
 import java.text.DecimalFormat;
+import java.util.function.Supplier;
 import org.apache.commons.math3.stat.inference.ChiSquareTest;
 import org.apache.commons.numbers.core.Precision;
 import org.junit.jupiter.api.Assertions;
@@ -45,7 +46,7 @@ public final class TestUtils {
      * Verifies that expected and actual are within delta, or are both NaN or
      * infinities of the same sign.
      */
-    public static void assertEquals(String msg,
+    public static void assertEquals(Supplier<String> msg,
                                     double expected,
                                     double actual,
                                     double delta) {
@@ -63,7 +64,7 @@ public final class TestUtils {
     public static void assertEquals(double[] expected,
                                     double[] observed,
                                     double tolerance) {
-        assertEquals("Array comparison failure", expected, observed, tolerance);
+        assertEquals(() -> "Array comparison failure", expected, observed, tolerance);
     }
 
     /**
@@ -91,7 +92,7 @@ public final class TestUtils {
      * @param actual  observed value
      * @param relativeError  maximum allowable relative error
      */
-    public static void assertRelativelyEquals(String msg,
+    public static void assertRelativelyEquals(Supplier<String> msg,
                                               double expected,
                                               double actual,
                                               double relativeError) {
@@ -110,12 +111,12 @@ public final class TestUtils {
     }
 
     /** verifies that two arrays are close (sup norm) */
-    public static void assertEquals(String msg,
+    public static void assertEquals(Supplier<String> msg,
                                     double[] expected,
                                     double[] observed,
                                     double tolerance) {
-        final StringBuilder out = new StringBuilder(msg);
         if (expected.length != observed.length) {
+            final StringBuilder out = new StringBuilder(msg.get());
             out.append("\n Arrays not same length. \n");
             out.append("expected has length ");
             out.append(expected.length);
@@ -124,9 +125,13 @@ public final class TestUtils {
             Assertions.fail(out.toString());
         }
         boolean failure = false;
+        final StringBuilder out = new StringBuilder();
         for (int i = 0; i < expected.length; i++) {
             if (!Precision.equalsIncludingNaN(expected[i], observed[i], tolerance)) {
-                failure = true;
+                if (!failure) {
+                    out.append(msg.get());
+                    failure = true;
+                }
                 out.append("\n Elements at index ");
                 out.append(i);
                 out.append(" differ. ");