Exemplo n.º 1
0
        public void Eval_OneRuleTest()
        {
            var rule = new RuleEval();

            rule.Eval(new Rule2_False());
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsFalse(rslt);
        }
Exemplo n.º 2
0
        public void Exceptions_Pathing()
        {
            var rule = new RuleEval();

            rule.Eval(new Rule2_False());
            //back to back evals cannot be called..
            Assert.Throws <RateLimiterException>(() => rule.Eval(new Rule2_False()));

            var rule2 = new RuleEval();

            // evaluate a rule without inputs
            Assert.Throws <RateLimiterException>(() => rule2.Evaluate(null));

            var rule3 = new RuleEval();

            // evaluate a rule without any rules inputted
            Assert.Throws <RateLimiterException>(() => rule3.Evaluate(new RequestInfo()));
        }
Exemplo n.º 3
0
        public void AndRule_FalseAndFalse()
        {
            var rule = new RuleEval();

            rule.Eval(new Rule2_False());
            rule.AndRule(new Rule2_False());
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsFalse(rslt);
        }
Exemplo n.º 4
0
        public void AndRule_TrueAndTrue()
        {
            var rule = new RuleEval();

            rule.Eval(new Rule1_True());
            rule.AndRule(new Rule1_True());
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsTrue(rslt);
        }
Exemplo n.º 5
0
        public void OrRule_TrueAndFalse()
        {
            var rule = new RuleEval();

            rule.Eval(new Rule1_True());
            rule.OrRule(new Rule2_False());
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsTrue(rslt);
        }
Exemplo n.º 6
0
        public void Chaining_And()
        {
            var orChain = ChainHelper.OrChain(new Rule1_True(), new Rule2_False());
            var rule    = new RuleEval();

            rule.Eval(new Rule2_False());
            rule.OrChain(orChain);
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsTrue(rslt);
        }
Exemplo n.º 7
0
        public void Chaining_Or()
        {
            var andChain = ChainHelper.AndChain(new Rule1_True(), new Rule2_False());
            var rule     = new RuleEval();

            rule.Eval(new Rule2_False());
            rule.AndChain(andChain);
            var rslt = rule.Evaluate(new RequestInfo());

            Assert.IsFalse(rslt);
        }
Exemplo n.º 8
0
        public void X_Request_Per_Timespan_First_Request()
        {
            var access_token = Guid.NewGuid().ToString();
            var req          = new RequestInfo {
                Access_Token = access_token
            };
            var rule = new RuleEval();

            rule.Eval(new RequestPerElapsedTime(_ruleState, TimeSpan.FromSeconds(10), 3));

            var rslt = rule.Evaluate(req);

            Assert.IsFalse(rslt);
        }
Exemplo n.º 9
0
        public void Combine_Rule_Country_US_And_X_Request_Per_Timespan_GreaterThanCnt_1_UK_Request()
        {
            var access_token = Guid.NewGuid().ToString();
            var req          = new RequestInfo {
                Access_Token = access_token, Country = "UK"
            };
            var rule = new RuleEval();

            rule.Eval(new RequestFromCountry("US"));
            rule.AndRule(new RequestPerElapsedTime(_ruleState, TimeSpan.FromSeconds(10), 1));

            var rslt = rule.Evaluate(req);

            Assert.IsFalse(rslt);

            rslt = rule.Evaluate(req);

            Assert.IsFalse(rslt);
        }