public async Task TestStoppingProducers01() { var rng2 = new MultiThreadedRng(); rng2.Dispose(); var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token; var wasCanceled = false; while (true) { var tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(3)); await rng2.GetUniform(tokenSource.Token); if (tokenSource.IsCancellationRequested) { wasCanceled = true; break; } if (masterToken.IsCancellationRequested) { break; } } Assert.That(masterToken.IsCancellationRequested, Is.False, "Master token was used to stop test"); Assert.That(wasCanceled, Is.True, "The consumer was not canceled"); var tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); await new NormalS02M05(rng2).NextNumber(tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); await new NormalS02M05(rng2).NextNumber(-1f, 1f, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); await new NormalS02M05(rng2).NextNumber(0u, 6u, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); await new NormalS02M05(rng2).NextNumber(0ul, 6ul, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); }