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. ");