Increase BetaDistribution coverage.
This requires fixing the arguments to the
DistributionException.TOO_SMALL message.
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
index 123e368..54e9cf3 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
@@ -79,13 +79,13 @@
} else if (x == 0) {
if (alpha < 1) {
throw new DistributionException(DistributionException.TOO_SMALL,
- alpha, 1);
+ alpha, 1.0);
}
return Double.NEGATIVE_INFINITY;
} else if (x == 1) {
if (beta < 1) {
throw new DistributionException(DistributionException.TOO_SMALL,
- beta, 1);
+ beta, 1.0);
}
return Double.NEGATIVE_INFINITY;
} else {
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 33ed834..714ef93 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
@@ -301,6 +301,30 @@
}
@Test
+ public void testDensityExtremes() {
+ final BetaDistribution d = new BetaDistribution(2, 3);
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, d.logDensity(-0.1));
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, d.logDensity(1.1));
+ Assertions.assertEquals(0.0, d.density(-0.1));
+ Assertions.assertEquals(0.0, d.density(1.1));
+
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, d.logDensity(0.0));
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, d.logDensity(1.0));
+ }
+
+ @Test
+ public void testLogDensityPrecondition1() {
+ final BetaDistribution d = new BetaDistribution(0.5, 3);
+ Assertions.assertThrows(DistributionException.class, () -> d.logDensity(0.0));
+ }
+
+ @Test
+ public void testLogDensityPrecondition2() {
+ final BetaDistribution d = new BetaDistribution(2, 0.5);
+ Assertions.assertThrows(DistributionException.class, () -> d.logDensity(1.0));
+ }
+
+ @Test
public void testMoments() {
final double tol = 1e-9;
BetaDistribution dist;