From b437aac4c818f55aa4ea0f1d4728c9243aba75ce Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 31 Oct 2020 13:20:20 +0100 Subject: [PATCH] Added missed test cases --- FastRngTests/Double/Distributions/BetaA2B5.cs | 59 +++++++++++++++++ FastRngTests/Double/Distributions/BetaA5B2.cs | 63 ++++++++++++++++++- 2 files changed, 120 insertions(+), 2 deletions(-) diff --git a/FastRngTests/Double/Distributions/BetaA2B5.cs b/FastRngTests/Double/Distributions/BetaA2B5.cs index 9df1ddd..ca95f82 100644 --- a/FastRngTests/Double/Distributions/BetaA2B5.cs +++ b/FastRngTests/Double/Distributions/BetaA2B5.cs @@ -43,5 +43,64 @@ namespace FastRngTests.Double.Distributions Assert.That(result[98], Is.EqualTo(0.00000012).Within(0.0000003)); Assert.That(result[99], Is.EqualTo(0.00000000).Within(0.0000003)); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange01() + { + var rng = new MultiThreadedRng(); + var samples = new double[1_000]; + var dist = new FastRng.Double.Distributions.BetaA2B5(); + for (var n = 0; n < samples.Length; n++) + samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange02() + { + var rng = new MultiThreadedRng(); + var samples = new double[1_000]; + var dist = new FastRng.Double.Distributions.BetaA2B5(); + for (var n = 0; n < samples.Length; n++) + samples[n] = await rng.NextNumber(0.0, 1.0, dist); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange03() + { + var rng = new MultiThreadedRng(); + var dist = new FastRng.Double.Distributions.BetaA2B5 { Random = rng }; // Test default parameters + + var samples = new double[1_000]; + for (var n = 0; n < samples.Length; n++) + samples[n] = await dist.GetDistributedValue(); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task NoRandomNumberGenerator01() + { + var dist = new FastRng.Double.Distributions.BetaA2B5(); + Assert.DoesNotThrowAsync(async () => await dist.GetDistributedValue()); + Assert.That(await dist.GetDistributedValue(), Is.NaN); + } } } \ No newline at end of file diff --git a/FastRngTests/Double/Distributions/BetaA5B2.cs b/FastRngTests/Double/Distributions/BetaA5B2.cs index a29c6d3..c6a0b2f 100644 --- a/FastRngTests/Double/Distributions/BetaA5B2.cs +++ b/FastRngTests/Double/Distributions/BetaA5B2.cs @@ -35,13 +35,72 @@ namespace FastRngTests.Double.Distributions Assert.That(result[50], Is.EqualTo(0.4044237).Within(0.2)); - Assert.That(result[75], Is.EqualTo(0.9768445).Within(0.03)); - Assert.That(result[85], Is.EqualTo(0.9552714).Within(0.05)); + Assert.That(result[75], Is.EqualTo(0.9768445).Within(0.05)); + Assert.That(result[85], Is.EqualTo(0.9552714).Within(0.07)); Assert.That(result[90], Is.EqualTo(0.8004420).Within(0.15)); Assert.That(result[97], Is.EqualTo(0.2250578).Within(0.03)); Assert.That(result[98], Is.EqualTo(0.1171927).Within(0.03)); Assert.That(result[99], Is.EqualTo(0.0000000).Within(0.00)); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange01() + { + var rng = new MultiThreadedRng(); + var samples = new double[1_000]; + var dist = new FastRng.Double.Distributions.BetaA5B2(); + for (var n = 0; n < samples.Length; n++) + samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange02() + { + var rng = new MultiThreadedRng(); + var samples = new double[1_000]; + var dist = new FastRng.Double.Distributions.BetaA5B2(); + for (var n = 0; n < samples.Length; n++) + samples[n] = await rng.NextNumber(0.0, 1.0, dist); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestBetaGeneratorWithRange03() + { + var rng = new MultiThreadedRng(); + var dist = new FastRng.Double.Distributions.BetaA5B2 { Random = rng }; // Test default parameters + + var samples = new double[1_000]; + for (var n = 0; n < samples.Length; n++) + samples[n] = await dist.GetDistributedValue(); + + rng.StopProducer(); + Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); + Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task NoRandomNumberGenerator01() + { + var dist = new FastRng.Double.Distributions.BetaA5B2(); + Assert.DoesNotThrowAsync(async () => await dist.GetDistributedValue()); + Assert.That(await dist.GetDistributedValue(), Is.NaN); + } } } \ No newline at end of file