public async Task CollectionQueueChannel_NewerReturns() { // Arrange var channel = new CollectionTestQueueChannel(new [] { "a", "b" }, TimeSpan.FromSeconds(3)); var ct = new CancellationTokenSource(); ct.CancelAfter(TimeSpan.FromSeconds(5)); await channel.Start(ct.Token); // Act var item = await channel.GetNextItem(TimeSpan.FromSeconds(1)); ct.Cancel(); // Assert Assert.Null(item); }
public async Task CollectionQueueChannel_AfterWindow_TakenMostPrioritized() { // Arrange var channel = new CollectionTestQueueChannel(new [] { "a", "b" }, TimeSpan.FromSeconds(3)); channel .AddItemWithDelay("a", TimeSpan.FromSeconds(3), "a_123") .AddItemWithDelay("b", TimeSpan.FromSeconds(1), "b_123"); var ct = new CancellationTokenSource(); ct.CancelAfter(TimeSpan.FromSeconds(6)); await channel.Start(ct.Token); // Act var item = await channel.GetNextItem(TimeSpan.FromSeconds(2)); // Assert Assert.Equal("b_123", item.Value); }
public async Task CollectionQueueChannel_WithOneItem_AfterInterval_ReturnsWithDelay() { // Arrange var channel = new CollectionTestQueueChannel(new [] { "a", "b" }, TimeSpan.FromSeconds(3)); channel .AddItemWithDelay("a", TimeSpan.FromSeconds(5), "a_123") .AddEmptyResult("b"); var ct = new CancellationTokenSource(); ct.CancelAfter(TimeSpan.FromSeconds(6)); await channel.Start(ct.Token); // Act var item = await channel.GetNextItem(TimeSpan.FromSeconds(1)); ct.Cancel(); // Assert Assert.Equal("a_123", item.Value); Assert.Equal(2, channel.GetLongPolls("a")); }