1
// ****************************************************************
2
// Copyright 2009, Charlie Poole
3
// This is free software licensed under the NUnit license. You may
4
// obtain a copy of the license at http://nunit.org
5
// ****************************************************************
10
using NUnit.Core.Filters;
12
namespace NUnit.Util.Tests
15
public class CategoryParseTests
18
public void EmptyStringReturnsEmptyFilter()
20
CategoryExpression expr = new CategoryExpression( "" );
21
Assert.That( expr.Filter.IsEmpty );
25
public void CanParseSimpleCategory()
27
CategoryExpression expr = new CategoryExpression( "Data" );
28
CategoryFilter filter = (CategoryFilter)expr.Filter;
29
Assert.That( filter.Categories, Is.EqualTo( new string[] { "Data" } ) );
33
public void CanParseCompoundCategory()
35
CategoryExpression expr = new CategoryExpression( "One , Two; Three,Four" );
36
CategoryFilter filter = (CategoryFilter)expr.Filter;
37
Assert.That( filter.Categories, Is.EqualTo( new string[] { "One", "Two", "Three", "Four" } ) );
41
public void CanParseExcludedCategories()
43
CategoryExpression expr = new CategoryExpression( "-One,Two,Three" );
44
NotFilter notFilter = (NotFilter)expr.Filter;
45
CategoryFilter catFilter = (CategoryFilter)notFilter.BaseFilter;
46
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One", "Two", "Three" } ) );
50
public void CanParseMultipleCategoriesWithAnd()
52
CategoryExpression expr = new CategoryExpression( "One + Two+Three" );
53
AndFilter andFilter = (AndFilter)expr.Filter;
54
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
55
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
56
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One" } ) );
57
catFilter = (CategoryFilter)andFilter.Filters[1];
58
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Two" } ) );
59
catFilter = (CategoryFilter)andFilter.Filters[2];
60
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Three" } ) );
64
public void CanParseMultipleAlternatives()
66
CategoryExpression expr = new CategoryExpression( "One|Two|Three" );
67
OrFilter orFilter = (OrFilter)expr.Filter;
68
Assert.That( orFilter.Filters.Length, Is.EqualTo( 3 ) );
69
CategoryFilter catFilter = (CategoryFilter)orFilter.Filters[0];
70
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One" } ) );
71
catFilter = (CategoryFilter)orFilter.Filters[1];
72
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Two" } ) );
73
catFilter = (CategoryFilter)orFilter.Filters[2];
74
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Three" } ) );
78
public void PrecedenceTest()
80
CategoryExpression expr = new CategoryExpression( "A + B | C + -D,E,F" );
81
OrFilter orFilter = (OrFilter)expr.Filter;
83
AndFilter andFilter = (AndFilter)orFilter.Filters[0];
84
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
85
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "A" } ) );
86
catFilter = (CategoryFilter)andFilter.Filters[1];
87
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "B" } ) );
89
andFilter = (AndFilter)orFilter.Filters[1];
90
catFilter = (CategoryFilter)andFilter.Filters[0];
91
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "C" } ) );
92
NotFilter notFilter = (NotFilter)andFilter.Filters[1];
93
catFilter = (CategoryFilter)notFilter.BaseFilter;
94
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "D", "E", "F" } ) );
98
public void PrecedenceTestWithParentheses()
100
CategoryExpression expr = new CategoryExpression( "A + (B | C) - D,E,F" );
101
AndFilter andFilter = (AndFilter)expr.Filter;
102
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
104
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
105
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "A" } ) );
107
OrFilter orFilter = (OrFilter)andFilter.Filters[1];
108
catFilter = (CategoryFilter)orFilter.Filters[0];
109
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "B" } ) );
110
catFilter = (CategoryFilter)orFilter.Filters[1];
111
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "C" } ) );
113
NotFilter notFilter = (NotFilter)andFilter.Filters[2];
114
catFilter = (CategoryFilter)notFilter.BaseFilter;
115
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "D", "E", "F" } ) );
119
public void OrAndMinusCombined()
121
CategoryExpression expr = new CategoryExpression( "A|B-C-D|E" );
122
OrFilter orFilter = (OrFilter)expr.Filter;
123
Assert.That( orFilter.Filters.Length, Is.EqualTo( 3 ) );
124
AndFilter andFilter = (AndFilter)orFilter.Filters[1];
125
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
126
Assert.That( andFilter.Filters[0], Is.TypeOf( typeof( CategoryFilter) ) );
127
Assert.That( andFilter.Filters[1], Is.TypeOf( typeof( NotFilter) ) );
128
Assert.That( andFilter.Filters[2], Is.TypeOf( typeof( NotFilter) ) );
132
public void PlusAndMinusCombined()
134
CategoryExpression expr = new CategoryExpression( "A+B-C-D+E" );
135
AndFilter andFilter = (AndFilter)expr.Filter;
136
Assert.That( andFilter.Filters.Length, Is.EqualTo( 5 ) );
137
Assert.That( andFilter.Filters[0], Is.TypeOf( typeof( CategoryFilter) ) );
138
Assert.That( andFilter.Filters[1], Is.TypeOf( typeof( CategoryFilter) ) );
139
Assert.That( andFilter.Filters[2], Is.TypeOf( typeof( NotFilter) ) );
140
Assert.That( andFilter.Filters[3], Is.TypeOf( typeof( NotFilter) ) );
141
Assert.That( andFilter.Filters[4], Is.TypeOf( typeof( CategoryFilter) ) );
1
// ****************************************************************
2
// Copyright 2009, Charlie Poole
3
// This is free software licensed under the NUnit license. You may
4
// obtain a copy of the license at http://nunit.org
5
// ****************************************************************
10
using NUnit.Core.Filters;
12
namespace NUnit.Util.Tests
15
public class CategoryParseTests
18
public void EmptyStringReturnsEmptyFilter()
20
CategoryExpression expr = new CategoryExpression( "" );
21
Assert.That( expr.Filter.IsEmpty );
25
public void CanParseSimpleCategory()
27
CategoryExpression expr = new CategoryExpression( "Data" );
28
CategoryFilter filter = (CategoryFilter)expr.Filter;
29
Assert.That( filter.Categories, Is.EqualTo( new string[] { "Data" } ) );
33
public void CanParseCompoundCategory()
35
CategoryExpression expr = new CategoryExpression( "One , Two; Three,Four" );
36
CategoryFilter filter = (CategoryFilter)expr.Filter;
37
Assert.That( filter.Categories, Is.EqualTo( new string[] { "One", "Two", "Three", "Four" } ) );
41
public void CanParseExcludedCategories()
43
CategoryExpression expr = new CategoryExpression( "-One,Two,Three" );
44
NotFilter notFilter = (NotFilter)expr.Filter;
45
CategoryFilter catFilter = (CategoryFilter)notFilter.BaseFilter;
46
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One", "Two", "Three" } ) );
50
public void CanParseMultipleCategoriesWithAnd()
52
CategoryExpression expr = new CategoryExpression( "One + Two+Three" );
53
AndFilter andFilter = (AndFilter)expr.Filter;
54
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
55
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
56
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One" } ) );
57
catFilter = (CategoryFilter)andFilter.Filters[1];
58
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Two" } ) );
59
catFilter = (CategoryFilter)andFilter.Filters[2];
60
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Three" } ) );
64
public void CanParseMultipleAlternatives()
66
CategoryExpression expr = new CategoryExpression( "One|Two|Three" );
67
OrFilter orFilter = (OrFilter)expr.Filter;
68
Assert.That( orFilter.Filters.Length, Is.EqualTo( 3 ) );
69
CategoryFilter catFilter = (CategoryFilter)orFilter.Filters[0];
70
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "One" } ) );
71
catFilter = (CategoryFilter)orFilter.Filters[1];
72
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Two" } ) );
73
catFilter = (CategoryFilter)orFilter.Filters[2];
74
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "Three" } ) );
78
public void PrecedenceTest()
80
CategoryExpression expr = new CategoryExpression( "A + B | C + -D,E,F" );
81
OrFilter orFilter = (OrFilter)expr.Filter;
83
AndFilter andFilter = (AndFilter)orFilter.Filters[0];
84
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
85
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "A" } ) );
86
catFilter = (CategoryFilter)andFilter.Filters[1];
87
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "B" } ) );
89
andFilter = (AndFilter)orFilter.Filters[1];
90
catFilter = (CategoryFilter)andFilter.Filters[0];
91
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "C" } ) );
92
NotFilter notFilter = (NotFilter)andFilter.Filters[1];
93
catFilter = (CategoryFilter)notFilter.BaseFilter;
94
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "D", "E", "F" } ) );
98
public void PrecedenceTestWithParentheses()
100
CategoryExpression expr = new CategoryExpression( "A + (B | C) - D,E,F" );
101
AndFilter andFilter = (AndFilter)expr.Filter;
102
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
104
CategoryFilter catFilter = (CategoryFilter)andFilter.Filters[0];
105
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "A" } ) );
107
OrFilter orFilter = (OrFilter)andFilter.Filters[1];
108
catFilter = (CategoryFilter)orFilter.Filters[0];
109
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "B" } ) );
110
catFilter = (CategoryFilter)orFilter.Filters[1];
111
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "C" } ) );
113
NotFilter notFilter = (NotFilter)andFilter.Filters[2];
114
catFilter = (CategoryFilter)notFilter.BaseFilter;
115
Assert.That( catFilter.Categories, Is.EqualTo( new string[] { "D", "E", "F" } ) );
119
public void OrAndMinusCombined()
121
CategoryExpression expr = new CategoryExpression( "A|B-C-D|E" );
122
OrFilter orFilter = (OrFilter)expr.Filter;
123
Assert.That( orFilter.Filters.Length, Is.EqualTo( 3 ) );
124
AndFilter andFilter = (AndFilter)orFilter.Filters[1];
125
Assert.That( andFilter.Filters.Length, Is.EqualTo( 3 ) );
126
Assert.That( andFilter.Filters[0], Is.TypeOf( typeof( CategoryFilter) ) );
127
Assert.That( andFilter.Filters[1], Is.TypeOf( typeof( NotFilter) ) );
128
Assert.That( andFilter.Filters[2], Is.TypeOf( typeof( NotFilter) ) );
132
public void PlusAndMinusCombined()
134
CategoryExpression expr = new CategoryExpression( "A+B-C-D+E" );
135
AndFilter andFilter = (AndFilter)expr.Filter;
136
Assert.That( andFilter.Filters.Length, Is.EqualTo( 5 ) );
137
Assert.That( andFilter.Filters[0], Is.TypeOf( typeof( CategoryFilter) ) );
138
Assert.That( andFilter.Filters[1], Is.TypeOf( typeof( CategoryFilter) ) );
139
Assert.That( andFilter.Filters[2], Is.TypeOf( typeof( NotFilter) ) );
140
Assert.That( andFilter.Filters[3], Is.TypeOf( typeof( NotFilter) ) );
141
Assert.That( andFilter.Filters[4], Is.TypeOf( typeof( CategoryFilter) ) );