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()); }
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); }
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); }