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))