RNG-55: Forbid negative dimension.
Project: http://git-wip-us.apache.org/repos/asf/commons-rng/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-rng/commit/74c2b58d Tree: http://git-wip-us.apache.org/repos/asf/commons-rng/tree/74c2b58d Diff: http://git-wip-us.apache.org/repos/asf/commons-rng/diff/74c2b58d Branch: refs/heads/master Commit: 74c2b58d321f1cd08e3a9b8f1911bada8008a319 Parents: 8539ccb Author: Gilles <er...@apache.org> Authored: Thu Aug 16 14:52:00 2018 +0200 Committer: Gilles <er...@apache.org> Committed: Thu Aug 16 14:52:00 2018 +0200 ---------------------------------------------------------------------- .../java/org/apache/commons/rng/sampling/UnitSphereSampler.java | 4 ++++ .../org/apache/commons/rng/sampling/UnitSphereSamplerTest.java | 5 +++++ src/changes/changes.xml | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-rng/blob/74c2b58d/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/UnitSphereSampler.java ---------------------------------------------------------------------- diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/UnitSphereSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/UnitSphereSampler.java index 46dd474..cbb3785 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/UnitSphereSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/UnitSphereSampler.java @@ -40,6 +40,10 @@ public class UnitSphereSampler { */ public UnitSphereSampler(int dimension, UniformRandomProvider rng) { + if (dimension <= 0) { + throw new IllegalArgumentException("Dimension must be strictly positive"); + } + this.dimension = dimension; sampler = new ZigguratNormalizedGaussianSampler(rng); } http://git-wip-us.apache.org/repos/asf/commons-rng/blob/74c2b58d/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/UnitSphereSamplerTest.java ---------------------------------------------------------------------- diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/UnitSphereSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/UnitSphereSamplerTest.java index 2b7ff47..fb4ac08 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/UnitSphereSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/UnitSphereSamplerTest.java @@ -25,6 +25,11 @@ import org.apache.commons.rng.UniformRandomProvider; * Test for {@link UnitSphereSampler}. */ public class UnitSphereSamplerTest { + @Test(expected = IllegalArgumentException.class) + public void testPrecondition() { + new UnitSphereSampler(0, null); + } + /** * Test the distribution of points in two dimensions. */ http://git-wip-us.apache.org/repos/asf/commons-rng/blob/74c2b58d/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 2bd1a44..bbb9893 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -68,7 +68,8 @@ It is however not part of the official API and no compatibility should be expected in subsequent releases. "> <action dev="erans" type="fix" issue="RNG-55" due-to="Alex D. Herbert"> - "UnitSphereSampler": Prevent returning NaN components. + "UnitSphereSampler": Prevent returning NaN components and forbid + negative dimension. </action> </release>