public void Evaluate_Always_ConsidersRulesInOrder(FilterSetResult expectedResult, FilterRuleType[] ruleTypes, bool[] states) { FilterRule<object>[] filterRules = new FilterRule<object>[ruleTypes.Length]; for (int i = 0; i < ruleTypes.Length; i++) filterRules[i] = new FilterRule<object>(ruleTypes[i], states[i] ? (Filter<object>)new AnyFilter<object>() : new NoneFilter<object>()); FilterSet<object> filterSet = new FilterSet<object>(filterRules); Assert.AreEqual(expectedResult, filterSet.Evaluate(null)); }
public void Evaluate_Always_ConsidersRulesInOrder(FilterSetResult expectedResult, FilterRuleType[] ruleTypes, bool[] states) { FilterRule <object>[] filterRules = new FilterRule <object> [ruleTypes.Length]; for (int i = 0; i < ruleTypes.Length; i++) { filterRules[i] = new FilterRule <object>(ruleTypes[i], states[i] ? (Filter <object>) new AnyFilter <object>() : new NoneFilter <object>()); } FilterSet <object> filterSet = new FilterSet <object>(filterRules); Assert.AreEqual(expectedResult, filterSet.Evaluate(null)); }
private ManagedTestCommand CreateFilteredClosure(Dictionary <Test, ManagedTestCommand> commands, Test test, FilterSet <ITestDescriptor> filterSet, bool exactFilter, bool hasExplicitAncestor, ITestContextManager contextManager) { FilterSetResult filterSetResult = filterSet.Evaluate(test); if (filterSetResult == FilterSetResult.Exclude) { return(null); } bool isMatch = filterSetResult == FilterSetResult.Include; bool isExplicit = isMatch && !hasExplicitAncestor; bool hasExplicitChild = false; var children = new List <ManagedTestCommand>(test.Children.Count); foreach (Test child in test.Children) { ManagedTestCommand childMonitor = CreateFilteredClosure(commands, child, filterSet, exactFilter, hasExplicitAncestor || isExplicit, contextManager); if (childMonitor != null) { children.Add(childMonitor); if (childMonitor.IsExplicit) { hasExplicitChild = true; } } } if (isMatch || children.Count != 0 || (!exactFilter && hasExplicitAncestor)) { return(CreateCommand(commands, test, children, isExplicit || hasExplicitChild, contextManager)); } return(null); }