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/06/08 20:53:37 UTC

[commons-numbers] 03/03: Sonar fix: combine similar Erf tests as a parameterized 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-numbers.git

commit 97d269e4dfebf6c46f75bfc6cfb03a96b6a712c9
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Tue Jun 8 21:53:29 2021 +0100

    Sonar fix: combine similar Erf tests as a parameterized test
---
 .../org/apache/commons/numbers/gamma/ErfTest.java  | 76 +++++++---------------
 1 file changed, 23 insertions(+), 53 deletions(-)

diff --git a/commons-numbers-gamma/src/test/java/org/apache/commons/numbers/gamma/ErfTest.java b/commons-numbers-gamma/src/test/java/org/apache/commons/numbers/gamma/ErfTest.java
index 049ca25..fd7ba71 100644
--- a/commons-numbers-gamma/src/test/java/org/apache/commons/numbers/gamma/ErfTest.java
+++ b/commons-numbers-gamma/src/test/java/org/apache/commons/numbers/gamma/ErfTest.java
@@ -18,66 +18,36 @@ package org.apache.commons.numbers.gamma;
 
 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;
 
 /**
  * Tests for {@link Erf}.
  */
 class ErfTest {
-    @Test
-    void testErf0() {
-        double actual = Erf.value(0);
-        double expected = 0;
-        Assertions.assertEquals(expected, actual, 1e-15);
-        Assertions.assertEquals(1 - expected, Erfc.value(0), 1e-15);
-    }
-
-    @Test
-    void testErf1960() {
-        double x = 1.960 / Math.sqrt(2);
-        double actual = Erf.value(x);
-        double expected = 0.95;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(x), 1e-15);
-
-        actual = Erf.value(-x);
-        expected = -expected;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(-x), 1e-15);
-    }
-
-    @Test
-    void testErf2576() {
-        double x = 2.576 / Math.sqrt(2);
-        double actual = Erf.value(x);
-        double expected = 0.99;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(x), 1e-15);
-
-        actual = Erf.value(-x);
-        expected = -expected;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(-x), 1e-15);
-    }
-
-    @Test
-    void testErf2807() {
-        double x = 2.807 / Math.sqrt(2);
-        double actual = Erf.value(x);
-        double expected = 0.995;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(x), 1e-15);
-
-        actual = Erf.value(-x);
-        expected = -expected;
-        Assertions.assertEquals(expected, actual, 1e-5);
-        Assertions.assertEquals(1 - actual, Erfc.value(-x), 1e-15);
-    }
+    /**
+     * Test standard values of the error function.
+     *
+     * <p>The expected values are the probabilities that a Gaussian distribution with mean 0
+     * and standard deviation 1 contains a value Y in the range [-x, x].
+     * This is equivalent to erf(x / root(2)).
+     *
+     * @param x the value multiplied by root(2)
+     * @param expected the expected error function
+     */
+    @ParameterizedTest
+    @CsvSource({
+        "0, 0",
+        "1.960, 0.95",
+        "2.576, 0.99",
+        "2.807, 0.995",
+        "3.291, 0.999",
+    })
+    void testErf(double x, double expected) {
+        // Input must be divided by root(2)
+        x /= Math.sqrt(2);
 
-    @Test
-    void testErf3291() {
-        double x = 3.291 / Math.sqrt(2);
         double actual = Erf.value(x);
-        double expected = 0.999;
         Assertions.assertEquals(expected, actual, 1e-5);
         Assertions.assertEquals(1 - expected, Erfc.value(x), 1e-5);