From 3fefdccdf2d91cddb5f7e7b0776d2ab324b896da Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 7 Nov 2020 12:40:50 +0100 Subject: [PATCH] Added tests for cancelling operations --- FastRngTests/Double/MultiThreadedRngTests.cs | 27 ++++++++++++++++++++ FastRngTests/Float/MultiThreadedRngTests.cs | 27 ++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/FastRngTests/Double/MultiThreadedRngTests.cs b/FastRngTests/Double/MultiThreadedRngTests.cs index 77f024e..a0f54f2 100644 --- a/FastRngTests/Double/MultiThreadedRngTests.cs +++ b/FastRngTests/Double/MultiThreadedRngTests.cs @@ -284,5 +284,32 @@ namespace FastRngTests.Double Assert.That(rng1Sample, Is.Not.EquivalentTo(rng3Sample)); Assert.That(rng2Sample, Is.Not.EquivalentTo(rng3Sample)); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestCancellation01() + { + var tokenSource = new CancellationTokenSource(); + var token = tokenSource.Token; + tokenSource.Cancel(); + + using var rng2 = new MultiThreadedRng(); + var dist = new Uniform(); + Assert.That(await rng2.NextNumber(1, 100_000, dist, token), Is.EqualTo(0)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestCancellation02() + { + var tokenSource = new CancellationTokenSource(); + var token = tokenSource.Token; + tokenSource.Cancel(); + + using var rng2 = new MultiThreadedRng(); + Assert.That(await rng2.GetUniform(token), Is.NaN); + } } } \ No newline at end of file diff --git a/FastRngTests/Float/MultiThreadedRngTests.cs b/FastRngTests/Float/MultiThreadedRngTests.cs index e666135..be7e65b 100644 --- a/FastRngTests/Float/MultiThreadedRngTests.cs +++ b/FastRngTests/Float/MultiThreadedRngTests.cs @@ -284,5 +284,32 @@ namespace FastRngTests.Float Assert.That(rng1Sample, Is.Not.EquivalentTo(rng3Sample)); Assert.That(rng2Sample, Is.Not.EquivalentTo(rng3Sample)); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestCancellation01() + { + var tokenSource = new CancellationTokenSource(); + var token = tokenSource.Token; + tokenSource.Cancel(); + + using var rng2 = new MultiThreadedRng(); + var dist = new Uniform(); + Assert.That(await rng2.NextNumber(1, 100_000, dist, token), Is.EqualTo(0)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestCancellation02() + { + var tokenSource = new CancellationTokenSource(); + var token = tokenSource.Token; + tokenSource.Cancel(); + + using var rng2 = new MultiThreadedRng(); + Assert.That(await rng2.GetUniform(token), Is.NaN); + } } } \ No newline at end of file