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