1
+ using System ;
1
2
using System . IO ;
2
3
using System . Linq ;
4
+ using DotNetConfig ;
3
5
using Palmmedia . ReportGenerator . Core . Logging ;
4
6
using Xunit ;
5
7
@@ -10,17 +12,22 @@ namespace Palmmedia.ReportGenerator.Core.Test
10
12
/// to contain all ReportConfigurationBuilder Unit Tests
11
13
/// </summary>
12
14
[ Collection ( "FileManager" ) ]
13
- public class ReportConfigurationBuilderTest
15
+ public class ReportConfigurationBuilderTest : IDisposable
14
16
{
15
17
private static readonly string ReportPath = Path . Combine ( FileManager . GetCSharpReportDirectory ( ) , "OpenCover.xml" ) ;
16
18
17
19
private ReportConfigurationBuilder reportConfigurationBuilder ;
18
20
21
+ private string currentDir ;
22
+
19
23
public ReportConfigurationBuilderTest ( )
20
24
{
21
25
this . reportConfigurationBuilder = new ReportConfigurationBuilder ( ) ;
26
+ this . currentDir = Directory . GetCurrentDirectory ( ) ;
22
27
}
23
28
29
+ public void Dispose ( ) => Directory . SetCurrentDirectory ( this . currentDir ) ;
30
+
24
31
[ Fact ]
25
32
public void InitWithNamedArguments_OldFilters_AllPropertiesApplied ( )
26
33
{
@@ -70,5 +77,92 @@ public void InitWithNamedArguments_NewFilters_AllPropertiesApplied()
70
77
Assert . NotNull ( configuration . AssemblyFilters ) ;
71
78
Assert . NotNull ( configuration . ClassFilters ) ;
72
79
}
80
+
81
+
82
+ [ Fact ]
83
+ public void ConfigProvidesMissingArguments ( )
84
+ {
85
+ var dir = Path . Combine ( Path . GetTempPath ( ) , Guid . NewGuid ( ) . ToString ( ) ) ;
86
+ Directory . CreateDirectory ( dir ) ;
87
+ var config = Config . Build ( dir ) . GetSection ( ReportConfigurationBuilder . SectionName ) ;
88
+
89
+ config . SetString ( "reports" , ReportPath ) ;
90
+ config . SetString ( "targetdir" , "C:\\ temp" ) ;
91
+ config . SetString ( "reporttype" , "Latex" ) ;
92
+ config . SetString ( "assemblyfilters" , "+Test;-Test" ) ;
93
+ config . SetString ( "classfilters" , "+Test2;-Test2" ) ;
94
+ config . SetString ( "verbosity" , VerbosityLevel . Info . ToString ( ) ) ;
95
+
96
+ Directory . SetCurrentDirectory ( dir ) ;
97
+
98
+ string [ ] namedArguments = new string [ 0 ] ;
99
+
100
+ var configuration = this . reportConfigurationBuilder . Create ( namedArguments ) ;
101
+
102
+ Assert . True ( configuration . ReportFiles . Contains ( ReportPath ) , "ReportPath does not exist in ReportFiles." ) ;
103
+ Assert . Equal ( "C:\\ temp" , configuration . TargetDirectory ) ;
104
+ Assert . True ( configuration . ReportTypes . Contains ( "Latex" ) , "Wrong report type applied." ) ;
105
+ Assert . True ( configuration . AssemblyFilters . Contains ( "+Test" ) , "AssemblyFilters does not exist in ReportFiles." ) ;
106
+ Assert . True ( configuration . ClassFilters . Contains ( "+Test2" ) , "ClassFilters does not exist in ReportFiles." ) ;
107
+ Assert . True ( configuration . AssemblyFilters . Contains ( "-Test" ) , "AssemblyFilters does not exist in ReportFiles." ) ;
108
+ Assert . True ( configuration . ClassFilters . Contains ( "-Test2" ) , "ClassFilters does not exist in ReportFiles." ) ;
109
+ Assert . NotNull ( configuration . ReportFiles ) ;
110
+ Assert . NotNull ( configuration . AssemblyFilters ) ;
111
+ Assert . NotNull ( configuration . ClassFilters ) ;
112
+ }
113
+
114
+ [ Fact ]
115
+ public void ConfigProvidesMultiValuedSettings ( )
116
+ {
117
+ var dir = Path . Combine ( Path . GetTempPath ( ) , Guid . NewGuid ( ) . ToString ( ) ) ;
118
+ Directory . CreateDirectory ( dir ) ;
119
+ var config = Config . Build ( dir ) . GetSection ( ReportConfigurationBuilder . SectionName ) ;
120
+
121
+ config . SetString ( "reports" , ReportPath ) ;
122
+
123
+ config . AddString ( "reporttype" , "Latex" ) ;
124
+ config . AddString ( "reporttype" , "Html" ) ;
125
+
126
+ config . AddString ( "assemblyfilter" , "+Test" ) ;
127
+ config . AddString ( "assemblyfilter" , "-Test" ) ;
128
+
129
+ config . AddString ( "classfilter" , "+Test2" ) ;
130
+ config . AddString ( "classfilter" , "-Test2" ) ;
131
+
132
+ config . AddString ( "filefilter" , "+cs" ) ;
133
+ config . AddString ( "filefilter" , "-vb" ) ;
134
+
135
+ config . AddString ( "sourcedir" , "src" ) ;
136
+ config . AddString ( "sourcedir" , "test" ) ;
137
+
138
+ config . AddString ( "plugin" , "xunit" ) ;
139
+ config . AddString ( "plugin" , "moq" ) ;
140
+
141
+ Directory . SetCurrentDirectory ( dir ) ;
142
+
143
+ string [ ] namedArguments = new string [ 0 ] ;
144
+
145
+ var configuration = this . reportConfigurationBuilder . Create ( namedArguments ) ;
146
+
147
+ Assert . Contains ( ReportPath , configuration . ReportFiles ) ;
148
+
149
+ Assert . Contains ( "Latex" , configuration . ReportTypes ) ;
150
+ Assert . Contains ( "Html" , configuration . ReportTypes ) ;
151
+
152
+ Assert . Contains ( "+Test" , configuration . AssemblyFilters ) ;
153
+ Assert . Contains ( "-Test" , configuration . AssemblyFilters ) ;
154
+
155
+ Assert . Contains ( "+Test2" , configuration . ClassFilters ) ;
156
+ Assert . Contains ( "-Test2" , configuration . ClassFilters ) ;
157
+
158
+ Assert . Contains ( "+cs" , configuration . FileFilters ) ;
159
+ Assert . Contains ( "-vb" , configuration . FileFilters ) ;
160
+
161
+ Assert . Contains ( "src" , configuration . SourceDirectories ) ;
162
+ Assert . Contains ( "test" , configuration . SourceDirectories ) ;
163
+
164
+ Assert . Contains ( "xunit" , configuration . Plugins ) ;
165
+ Assert . Contains ( "moq" , configuration . Plugins ) ;
166
+ }
73
167
}
74
168
}
0 commit comments