public async Task SettingCancellationTokenCancelsTimer()
{
// Arrange
Mock<IAsynchronousDelay> delay = new Mock<IAsynchronousDelay>();
AsynchronousIntervalTimer timer = new AsynchronousIntervalTimer(delay.Object, TimeSpan.FromMilliseconds(PretendDelayInMilliseconds), false);
CancellationTokenSource source = new CancellationTokenSource();
int repeatCount = 0;
// Act
await timer.ExecuteAsync(ct =>
{
source.Cancel(true);
repeatCount++;
return Task.FromResult(true);
}, source.Token);
// Assert
Assert.AreEqual(1, repeatCount);
source.Dispose();
}