Ejemplo n.º 1
0
 public override bool Evaluate(Order order) {
     foreach (var rule in _rules) {
         if (rule.Evaluate(order)) {
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 2
0
        public void OrRule_Tests() {
            var order1 = new Order(id: "123-456-111", value: 10, state: State.Closed, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);
            var order2 = new Order(id: "123-456-222", value: 10, state: State.Open, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);

            Rule rule1 = new GreaterThanRule() { Value = 30 };
            Rule rule2 = new OrderClosedRule();

            var rules = new[] { rule1, rule2 };

            var orRule = new OrRule();
            orRule.AddRules(rules);

            Assert.AreEqual(orRule.Evaluate(order1), true);
            Assert.AreEqual(orRule.Evaluate(order2), false);
        }
Ejemplo n.º 3
0
        public void GreaterThanRule_And_OrderClosedRule_Tests() {
            var order = new Order(id: "123-456-111", value: 50, state: State.Closed, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);

            Rule rule1 = new GreaterThanRule() { Value = 30 };
            Rule rule2 = new OrderClosedRule();

            Assert.AreEqual(rule1.Evaluate(order), true);
            Assert.AreEqual(rule2.Evaluate(order), true);

            order.State = State.Open;
            order.Value = 1;

            Assert.AreEqual(rule1.Evaluate(order), false);
            Assert.AreEqual(rule2.Evaluate(order), false);
        }
Ejemplo n.º 4
0
        public void CriticalMassRule_Tests() {
            var order1 = new Order(id: "123-456-111", value: 50, state: State.Closed, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);
            var order2 = new Order(id: "123-456-222", value: 10, state: State.Closed, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);
            var order3 = new Order(id: "123-456-333", value: 10, state: State.Open, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);

            Rule rule1 = new GreaterThanRule() { Value = 30 };
            Rule rule2 = new OrderClosedRule();

            var rules = new[] { rule1, rule2 };

            var massRules = new CriticalMassRule(minimunRulesCount: 1);
            massRules.AddRules(rules);

            Assert.AreEqual(massRules.Evaluate(order1), true);
            Assert.AreEqual(massRules.Evaluate(order2), true);
            Assert.AreEqual(massRules.Evaluate(order3), false);

            massRules = new CriticalMassRule(minimunRulesCount: 2);
            massRules.AddRules(rules);

            Assert.AreEqual(massRules.Evaluate(order1), true);
            Assert.AreEqual(massRules.Evaluate(order2), false);
            Assert.AreEqual(massRules.Evaluate(order3), false);
        }
Ejemplo n.º 5
0
 public override bool Evaluate(Order order) {
     return !String.IsNullOrWhiteSpace(order.CardNumber)
         && order.CardNumber.All(Char.IsDigit)
         && order.CardNumber.Length == 16;
 }
Ejemplo n.º 6
0
 public override bool Evaluate(Order order) {
     return (order.State == State.Closed);
 }
Ejemplo n.º 7
0
 public override bool Evaluate(Order order) {
     return (order.Value > Value);
 }
Ejemplo n.º 8
0
 public override bool Evaluate(Order order) {
     return _rules.Where(r => r.Evaluate(order)).Count() >= _minimunRulesCount;
 }
Ejemplo n.º 9
0
 public abstract bool Evaluate(Order order);
Ejemplo n.º 10
0
        public void CardNumberValidRule_Tests() {
            var order = new Order(id: "123-456-111", value: 50, state: State.Closed, total: 100.0m, paymentMethod: PaymentMethod.CreditCard);

            Rule rule = new CardNumberValidRule();

            Assert.AreEqual(rule.Evaluate(order), false);

            order.CardNumber = "1234";
            Assert.AreEqual(rule.Evaluate(order), false);

            order.CardNumber = "abcd1234efgh5678";
            Assert.AreEqual(rule.Evaluate(order), false);

            order.CardNumber = "1234567890123456";
            Assert.AreEqual(rule.Evaluate(order), true);
        }