Bert.RateLimiters.Tests.FixedTokenBucketTests.ShouldThrottle_WhenCalledWithCumulativeNGreaterThanMaxSleepCumulativeNLessThanMax C# (CSharp) Method

ShouldThrottle_WhenCalledWithCumulativeNGreaterThanMaxSleepCumulativeNLessThanMax() private method

        public void ShouldThrottle_WhenCalledWithCumulativeNGreaterThanMaxSleepCumulativeNLessThanMax()
        {
            SystemTime.SetCurrentTimeUtc = () => new DateTime(2014, 2, 27, 0, 0, 0, DateTimeKind.Utc);
            var virtualNow = SystemTime.UtcNow;

            for (int i = 0; i < 3*CUMULATIVE; i++)
                bucket.ShouldThrottle(N_LESS_THAN_MAX);

            var before = bucket.ShouldThrottle(N_LESS_THAN_MAX);
            var tokensBefore = bucket.CurrentTokenCount;

            Assert.That(before, Is.True);
            Assert.That(tokensBefore, Is.LessThan(N_LESS_THAN_MAX));

            SystemTime.SetCurrentTimeUtc = () => virtualNow.AddSeconds(REFILL_INTERVAL);

            long sum = 0;
            for (int i = 0; i < CUMULATIVE; i++)
            {
                Assert.That(bucket.ShouldThrottle(N_LESS_THAN_MAX), Is.False);
                sum += N_LESS_THAN_MAX;
            }

            var tokensAfter = bucket.CurrentTokenCount;
            Assert.That(tokensAfter, Is.EqualTo(MAX_TOKENS - sum));
        }