public async Task Holds_Until_Oldest_Passed_Window_If_Max_Reached(int windowSeconds, int max, int millStep) { var startDate = new DateTime(2020, 01, 01); var window = TimeSpan.FromSeconds(windowSeconds); var nowProvider = new TestNowProvider(startDate); var limiter = new RollingWindowRateLimiter(window, max, nowProvider); for (var i = 0; i < max; i++) { nowProvider.Update(startDate.AddMilliseconds(i * millStep)); await limiter.HoldIfRequired(new Uri("http://domain.com/" + i)); } }