Пример #1
0
        public void WorkAsExpected()
        {
            var rateLimiter = new RateLimitService(10, 10, 5);

            // 10 requests received at 0
            IList <ushort> inputs = new List <ushort>(new ushort[10]);

            foreach (var i in inputs)
            {
                Assert.True(rateLimiter.IsAllowed(i));
            }

            // 11 request should fail
            Assert.False(rateLimiter.IsAllowed(0));

            //===========================
            rateLimiter = new RateLimitService(10, 10, 5);

            // 10 requests received at 0
            inputs = new List <ushort>()
            {
                9, 9, 9, 9, 9, 9, 9, 9, 9, 9
            };

            foreach (var i in inputs)
            {
                Assert.True(rateLimiter.IsAllowed(i));
            }

            // 11 request should fail
            Assert.False(rateLimiter.IsAllowed(9));

            //===========================
            rateLimiter = new RateLimitService(10, 10, 5);

            // 10 requests received at 0
            inputs = new List <ushort>()
            {
                9, 9, 9, 9, 9, 9, 9, 9, 9, 9
            };

            foreach (var i in inputs)
            {
                Assert.True(rateLimiter.IsAllowed(i));
            }

            // 11 request should fail
            Assert.False(rateLimiter.IsAllowed(0));

            //===========================
            rateLimiter = new RateLimitService(10, 10, 5);

            // 10 requests received at 0
            inputs = new List <ushort>()
            {
                9, 9, 9, 9, 9, 9, 9, 9, 9, 9
            };

            foreach (var i in inputs)
            {
                Assert.True(rateLimiter.IsAllowed(i));
            }

            // 11 request should fail
            Assert.False(rateLimiter.IsAllowed(5));
        }