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/09/19 18:20:44 UTC
[commons-statistics] branch master updated: Add test for
probability of success 1.0
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
The following commit(s) were added to refs/heads/master by this push:
new adb847a Add test for probability of success 1.0
adb847a is described below
commit adb847a9f279b16f285cade710f6acc7d7b2848e
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Sun Sep 19 19:20:42 2021 +0100
Add test for probability of success 1.0
This test is disabled as it fails; the geometric distribution does not
have special handling for this edge case.
---
.../distribution/GeometricDistributionTest.java | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
index f338d71..2c1f573 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
@@ -16,8 +16,10 @@
*/
package org.apache.commons.statistics.distribution;
+import org.apache.commons.rng.simple.RandomSource;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/**
@@ -152,6 +154,39 @@ class GeometricDistributionTest extends DiscreteDistributionAbstractTest {
//-------------------- Additional test cases -------------------------------
@Test
+ @Disabled("Requires special handling at x=0 when p=1.0")
+ void testProbabilityOfSuccessOne() {
+ final GeometricDistribution dist = new GeometricDistribution(1.0);
+ Assertions.assertEquals(1.0, dist.getProbabilityOfSuccess());
+ Assertions.assertEquals(0.0, dist.getMean());
+ Assertions.assertEquals(0.0, dist.getVariance());
+ // XXX: Fails (returns NaN)
+ Assertions.assertEquals(1.0, dist.probability(0));
+ Assertions.assertEquals(0.0, dist.probability(1));
+ Assertions.assertEquals(0.0, dist.probability(2));
+ // XXX: Fails (returns NaN)
+ Assertions.assertEquals(0.0, dist.logProbability(0));
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, dist.logProbability(1));
+ Assertions.assertEquals(Double.NEGATIVE_INFINITY, dist.logProbability(2));
+ Assertions.assertEquals(1.0, dist.cumulativeProbability(0));
+ Assertions.assertEquals(1.0, dist.cumulativeProbability(1));
+ Assertions.assertEquals(0.0, dist.survivalProbability(0));
+ Assertions.assertEquals(0.0, dist.survivalProbability(1));
+ Assertions.assertEquals(0, dist.inverseCumulativeProbability(0.0));
+ Assertions.assertEquals(0, dist.inverseCumulativeProbability(0.5));
+ // XXX: Fails (returns Integer.MAX_VALUE)
+ Assertions.assertEquals(0, dist.inverseCumulativeProbability(1.0));
+ Assertions.assertEquals(0, dist.getSupportLowerBound());
+ // XXX: Fails (returns Integer.MAX_VALUE)
+ Assertions.assertEquals(0, dist.getSupportUpperBound());
+
+ final DiscreteDistribution.Sampler s = dist.createSampler(RandomSource.SPLIT_MIX_64.create());
+ for (int i = 0; i < 5; i++) {
+ Assertions.assertEquals(0, s.sample());
+ }
+ }
+
+ @Test
void testParameterAccessors() {
for (final double x : new double[] {0.1, 0.456, 0.999}) {
final GeometricDistribution dist = new GeometricDistribution(x);