public void ShouldThrottle_WhenCalledTwiceinSameSecondAndAllows1PerSecond_WillReturnTrue()
{
SystemTime.SetCurrentTimeUtc = () => referenceTime;
var virtualNow = SystemTime.UtcNow;
var throttler = new RollingWindowThrottler(1, TimeSpan.FromSeconds(1));
long waitTimeMillis;
var shouldThrottle = throttler.ShouldThrottle(1, out waitTimeMillis);
shouldThrottle.ShouldBeFalse();
SystemTime.SetCurrentTimeUtc = () => virtualNow.AddSeconds(0.5);
shouldThrottle = throttler.ShouldThrottle(1, out waitTimeMillis);
shouldThrottle.ShouldBeTrue();
waitTimeMillis.ShouldEqual(500);
SystemTime.SetCurrentTimeUtc = () => virtualNow.AddSeconds(0.8);
shouldThrottle = throttler.ShouldThrottle(1, out waitTimeMillis);
shouldThrottle.ShouldBeTrue();
waitTimeMillis.ShouldEqual(200);
}