public void ValidateUnitTest()
        {
            MinIncomeRule rule = new MinIncomeRule(12001);

            rule.income = 12000;
            Assert.IsFalse(rule.Validate());
            rule.income = 12001;
            Assert.IsTrue(rule.Validate());
            rule.income = 12002;
            Assert.IsTrue(rule.Validate());
        }
Ejemplo n.º 2
0
        private IRule LoadRule(XElement element)
        {
            IRule rule = null;

            switch (element.Name.LocalName)
            {
            case MIN_AGE_RULE_KEY:
                rule = new MinAgeRule(int.Parse(element.Value));
                break;

            case MAX_AGE_RULE_KEY:
                rule = new MaxAgeRule(int.Parse(element.Value));
                break;

            case MIN_INCOME_RULE_KEY:
                rule = new MinIncomeRule(int.Parse(element.Value));
                break;

            case STUDENT_RULE_KEY:
                rule = new StudentRule();
                break;

            case INCLUDE_ONE_OF_PRODUCTS_RULE_KEY:
                List <string>          productsList = new List <string>();
                IEnumerator <XElement> productIDs   = element.Elements().GetEnumerator();
                while (productIDs.MoveNext())
                {
                    if (productIDs.Current.Name.LocalName == PRODUCT_ID_KEY)
                    {
                        productsList.Add(productIDs.Current.Value);
                    }
                }
                rule = new IncludeOneOfProductsRule(productsList);
                break;

            default:
                break;
            }
            return(rule);
        }
Ejemplo n.º 3
0
        public static bool Validate(List <IRule> rules, int age, bool isStudent, int income, List <string> products)
        {
            bool isEligibleBundle = true;

            for (int i = 0; i < rules.Count && isEligibleBundle; ++i)
            {
                switch (rules[i].Type)
                {
                case RuleType.MaxAge:
                    MaxAgeRule maxAgeRule = (MaxAgeRule)rules[i];
                    maxAgeRule.age = age;
                    break;

                case RuleType.MinAge:
                    MinAgeRule minAgeRule = (MinAgeRule)rules[i];
                    minAgeRule.age = age;
                    break;

                case RuleType.MinIncome:
                    MinIncomeRule minIncomeRule = (MinIncomeRule)rules[i];
                    minIncomeRule.income = income;
                    break;

                case RuleType.Student:
                    ((StudentRule)rules[i]).isStudent = isStudent;
                    break;

                case RuleType.IncludeOneOfProducts:
                    ((IncludeOneOfProductsRule)rules[i]).products = products;
                    break;

                default:
                    break;
                }
                isEligibleBundle &= rules[i].Validate();
            }
            return(isEligibleBundle);
        }