public void Do_CallsTheAsyncFunc() { var throttler = new MultipleGroupThrottler<int>(); var asyncFuncCalled = false; throttler.Do(async () => { asyncFuncCalled = true; await Task.FromResult(0); }, 1).Wait(); asyncFuncCalled.ShouldBeTrue(); }
public void Do_WaitsForThrottlersForSameGroupingsAndDoesNotWaitForDifferentGroupings() { var throttler = new MultipleGroupThrottler<int>(); throttler.AddConcurrencyLimiter(e => e % 2, 1); var task1 = throttler.Do(async () => await Task.Delay(300), 0); var task2 = throttler.Do(async () => await Task.Delay(200), 1); var task3 = throttler.Do(async () => await Task.Delay(200), 1); task1.Wait(); task2.IsCompleted.ShouldBeTrue(); task3.IsCompleted.ShouldBeFalse(); }
public void Do_WaitsOnThrottlersForTheSameGrouping() { var throttler = new MultipleGroupThrottler<int>(); throttler.AddConcurrencyLimiter(e => 1, 1); var task1 = throttler.Do(async () => await Task.Delay(400), 1); var task2 = throttler.Do(async () => await Task.Delay(200), 1); var task3 = throttler.Do(async () => await Task.Delay(100), 1); task1.Wait(); task2.IsCompleted.ShouldBeFalse(); task2.Wait(); task3.IsCompleted.ShouldBeFalse(); }