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 <aherb...@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);