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