1+ using System ;
12using System . IO ;
23using System . Linq ;
4+ using DotNetConfig ;
35using Palmmedia . ReportGenerator . Core . Logging ;
46using Xunit ;
57
@@ -10,17 +12,22 @@ namespace Palmmedia.ReportGenerator.Core.Test
1012 /// to contain all ReportConfigurationBuilder Unit Tests
1113 /// </summary>
1214 [ Collection ( "FileManager" ) ]
13- public class ReportConfigurationBuilderTest
15+ public class ReportConfigurationBuilderTest : IDisposable
1416 {
1517 private static readonly string ReportPath = Path . Combine ( FileManager . GetCSharpReportDirectory ( ) , "OpenCover.xml" ) ;
1618
1719 private ReportConfigurationBuilder reportConfigurationBuilder ;
1820
21+ private string currentDir ;
22+
1923 public ReportConfigurationBuilderTest ( )
2024 {
2125 this . reportConfigurationBuilder = new ReportConfigurationBuilder ( ) ;
26+ this . currentDir = Directory . GetCurrentDirectory ( ) ;
2227 }
2328
29+ public void Dispose ( ) => Directory . SetCurrentDirectory ( this . currentDir ) ;
30+
2431 [ Fact ]
2532 public void InitWithNamedArguments_OldFilters_AllPropertiesApplied ( )
2633 {
@@ -70,5 +77,92 @@ public void InitWithNamedArguments_NewFilters_AllPropertiesApplied()
7077 Assert . NotNull ( configuration . AssemblyFilters ) ;
7178 Assert . NotNull ( configuration . ClassFilters ) ;
7279 }
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+ }
73167 }
74168}
0 commit comments