2 using System.Collections;
7 /// Summary description for CategoryFilter.
11 public class CategoryFilter : Filter
15 public CategoryFilter() : this( false ) { }
17 public CategoryFilter( bool exclude ) : base( exclude )
19 categories = new ArrayList();
22 public CategoryFilter( string name ) : this( name, false ) { }
24 public CategoryFilter( string name, bool exclude ) : base( exclude )
26 categories = new ArrayList();
27 categories.Add( name );
30 public CategoryFilter( string[] names ) : this( names, false ) { }
32 public CategoryFilter( string[] names, bool exclude ) : base( exclude )
34 categories = new ArrayList();
35 categories.AddRange( names );
38 public void AddCategory(string name)
40 categories.Add( name );
43 #region IFilter Members
45 public override bool Pass(TestSuite suite)
47 // return CheckCategories( suite ) ? !Exclude : Exclude;
49 if ( categories.Count == 0 ) return true;
53 if (CheckCategories(suite))
56 foreach (Test test in suite.Tests)
58 if ( test.Filter(this) == !Exclude )
68 public override bool Pass(TestCase test)
70 if ( categories.Count == 0 )
72 return CheckCategories( test ) ? !Exclude : Exclude ;
74 // if (CheckCategories(test.Parent))
77 // return CheckCategories(test);
83 /// Method returns true if the test has a particular
84 /// category or if an ancestor test does. We don't
85 /// worry about whether this is an include or an
86 /// exclude filter at this point because only positive
87 /// categories are inherited, not their absence.
89 private bool CheckCategories(Test test)
91 return test.HasCategory( categories )
92 || test.Parent != null
93 && test.Parent.HasCategory( categories );
95 // if (test.Categories != null)
97 // foreach (string name in categories)
99 // if (test.Categories.Contains(name))