public void CreateNext_HandlesExceptionsFromPreviousTokenRegistration() { using var series = new CancellationSeries(); var token1 = series.CreateNext(); var exception = new Exception(); token1.Register(() => throw exception); var aggregateException = Assert.Throws <AggregateException>(() => series.CreateNext()); Assert.Same(exception, aggregateException.InnerExceptions.Single()); Assert.True(token1.IsCancellationRequested); }
public void CreateNext_ThrowsIfDisposed() { var series = new CancellationSeries(); series.Dispose(); Assert.Throws <ObjectDisposedException>(() => series.CreateNext()); }
public void CreateNext_CancelsPreviousToken() { using var series = new CancellationSeries(); var token1 = series.CreateNext(); Assert.False(token1.IsCancellationRequested); var token2 = series.CreateNext(); Assert.True(token1.IsCancellationRequested); Assert.False(token2.IsCancellationRequested); var token3 = series.CreateNext(); Assert.True(token2.IsCancellationRequested); Assert.False(token3.IsCancellationRequested); }
public void CreateNext_ReturnsNonCancelledToken() { using var series = new CancellationSeries(); var token = series.CreateNext(); Assert.False(token.IsCancellationRequested); Assert.True(token.CanBeCanceled); }
public void CreateNext_ReturnsCancelledTokenIfInputTokenAlreadyCancelled() { var cts = new CancellationTokenSource(); using var series = new CancellationSeries(); cts.Cancel(); var token = series.CreateNext(cts.Token); Assert.True(token.IsCancellationRequested); }
public void CancellingSuperTokenCancelsIssuedToken() { var cts = new CancellationTokenSource(); using var series = new CancellationSeries(cts.Token); var token = series.CreateNext(); Assert.False(token.IsCancellationRequested); cts.Cancel(); Assert.True(token.IsCancellationRequested); }