mbunit2 2.4.2.355.20100801
Sign up to get free protection for your applications and to get access to all the features.
- data/docs/ASL - Apache Software Foundation License.txt +57 -0
- data/docs/MbUnit License.txt +14 -0
- data/docs/MbUnit.chm +0 -0
- data/docs/Release Notes.txt +7 -0
- data/docs/extras/CCNet/How to use MbUnit v2 with CruiseControl.Net.txt +88 -0
- data/docs/extras/CCNet/images/Category.png +0 -0
- data/docs/extras/CCNet/images/Fixture.png +0 -0
- data/docs/extras/CCNet/images/Populator.png +0 -0
- data/docs/extras/CCNet/images/Test.png +0 -0
- data/docs/extras/CCNet/xsl/MBUnitDetails.xsl +592 -0
- data/docs/extras/CCNet/xsl/MBUnitSummary.xsl +266 -0
- data/docs/extras/Snippets/AdjacencyGraph.cst +1703 -0
- data/docs/extras/Snippets/AssertWrapper.cst +181 -0
- data/docs/extras/Snippets/CrudPopulator.cst +377 -0
- data/docs/extras/Snippets/DatabasePopulator.cst +386 -0
- data/docs/extras/Snippets/DatabasePopulatorCrudTest.cst +177 -0
- data/docs/extras/Snippets/Exception.cst +94 -0
- data/docs/extras/Snippets/GrammarPopulator.cst +258 -0
- data/docs/extras/Snippets/MockObject.cst +296 -0
- data/docs/extras/Snippets/RapTierCrudPopulator.cst +444 -0
- data/docs/extras/Snippets/SimpleFixture.cst +91 -0
- data/docs/extras/Snippets/SqlppCrudPopulator.cst +443 -0
- data/docs/extras/Snippets/TestFixture.cst +469 -0
- data/docs/extras/Snippets/autorunner.snippet +45 -0
- data/docs/extras/Snippets/combinatorialtest.snippet +54 -0
- data/docs/extras/Snippets/datafixture.snippet +61 -0
- data/docs/extras/Snippets/model.snippet +95 -0
- data/docs/extras/Snippets/msbuild.snippet +40 -0
- data/docs/extras/Snippets/nant.snippet +34 -0
- data/docs/extras/Snippets/perfcounterassert.cst +173 -0
- data/docs/extras/Snippets/processtestfixture.snippet +75 -0
- data/docs/extras/Snippets/rowtest.snippet +113 -0
- data/docs/extras/Snippets/state.snippet +27 -0
- data/docs/extras/Snippets/submodel.snippet +32 -0
- data/docs/extras/Snippets/test.snippet +28 -0
- data/docs/extras/Snippets/testexpectedexception.snippet +32 -0
- data/docs/extras/Snippets/testfixture.snippet +68 -0
- data/docs/extras/Snippets/testsuitefixture.snippet +48 -0
- data/docs/extras/Snippets/typefixture.snippet +74 -0
- data/docs/extras/Snippets/typefixturewithproviderfactory.snippet +77 -0
- data/docs/extras/Snippets/usingmbunit.snippet +19 -0
- data/docs/extras/Templates/VS2005/ItemTemplates/CSharp/Test/MbUnit2.TestFixtureTemplate.CSharp.zip +0 -0
- data/docs/extras/Templates/VS2005/ItemTemplates/VisualBasic/Test/MbUnit2.TestFixtureTemplate.VisualBasic.zip +0 -0
- data/docs/extras/Templates/VS2005/ProjectTemplates/CSharp/Test/MbUnit2.TestProjectTemplate.CSharp.zip +0 -0
- data/docs/extras/Templates/VS2005/ProjectTemplates/VisualBasic/Test/MbUnit2.TestProjectTemplate.VisualBasic.zip +0 -0
- data/docs/extras/Templates/VS2008/ItemTemplates/CSharp/Test/MbUnit2.TestFixtureTemplate.CSharp.zip +0 -0
- data/docs/extras/Templates/VS2008/ItemTemplates/VisualBasic/Test/MbUnit2.TestFixtureTemplate.VisualBasic.zip +0 -0
- data/docs/extras/Templates/VS2008/ProjectTemplates/CSharp/Test/MbUnit2.MvcWebApplicationTestProjectTemplate.CSharp.zip +0 -0
- data/docs/extras/Templates/VS2008/ProjectTemplates/CSharp/Test/MbUnit2.TestProjectTemplate.CSharp.zip +0 -0
- data/docs/extras/Templates/VS2008/ProjectTemplates/VisualBasic/Test/MbUnit2.MvcWebApplicationTestProjectTemplate.VisualBasic.zip +0 -0
- data/docs/extras/Templates/VS2008/ProjectTemplates/VisualBasic/Test/MbUnit2.TestProjectTemplate.VisualBasic.zip +0 -0
- data/lib/MbUnit License.txt +14 -0
- data/lib/MbUnit.AddIn.dll +0 -0
- data/lib/MbUnit.Cons.exe +0 -0
- data/lib/MbUnit.Cons.exe.config +12 -0
- data/lib/MbUnit.Framework.2.0.dll +0 -0
- data/lib/MbUnit.Framework.2.0.pdb +0 -0
- data/lib/MbUnit.Framework.2.0.xml +278 -0
- data/lib/MbUnit.Framework.dll +0 -0
- data/lib/MbUnit.Framework.pdb +0 -0
- data/lib/MbUnit.Framework.xml +6929 -0
- data/lib/MbUnit.GUI.exe +0 -0
- data/lib/MbUnit.GUI.exe.config +14 -0
- data/lib/MbUnit.MSBuild.Tasks.dll +0 -0
- data/lib/MbUnit.Tasks.dll +0 -0
- data/lib/NGraphviz.Helpers.dll +0 -0
- data/lib/NGraphviz.Layout.dll +0 -0
- data/lib/NGraphviz.dll +0 -0
- data/lib/QuickGraph.Algorithms.Graphviz.dll +0 -0
- data/lib/QuickGraph.Algorithms.dll +0 -0
- data/lib/QuickGraph.Algorithms.pdb +0 -0
- data/lib/QuickGraph.Algorithms.xml +2818 -0
- data/lib/QuickGraph.dll +0 -0
- data/lib/QuickGraph.pdb +0 -0
- data/lib/QuickGraph.xml +3126 -0
- data/lib/Refly.dll +0 -0
- data/lib/Refly.pdb +0 -0
- data/lib/Refly.xml +1327 -0
- data/lib/TestFu.dll +0 -0
- data/lib/TestFu.pdb +0 -0
- data/lib/TestFu.xml +1932 -0
- data/lib/XsdTidy.exe +0 -0
- metadata +163 -0
@@ -0,0 +1,386 @@
|
|
1
|
+
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="TestFu DatabasePopulator Template" %>
|
2
|
+
<%@ Property Name="Namespace" Type="System.String"
|
3
|
+
Default="Populators"
|
4
|
+
Category="Output"
|
5
|
+
Description="Namespace of the populator." %>
|
6
|
+
<%@ Property Name="DataSetNameFormat" Type="System.String"
|
7
|
+
Default="{0}DataSet"
|
8
|
+
Category="Output"
|
9
|
+
Description="Format string to create the DatabaseSet class name." %>
|
10
|
+
<%@ Property Name="DatabasePopulatorNameFormat" Type="System.String"
|
11
|
+
Default="{0}DatabasePopulator"
|
12
|
+
Category="Output"
|
13
|
+
Description="Format string to create the DatabasePopulator class name." %>
|
14
|
+
<%@ Property Name="TableNamePrefix" Type="System.String"
|
15
|
+
Default=""
|
16
|
+
Category="Output"
|
17
|
+
Optional="true"
|
18
|
+
Description="Prefix to be removed." %>
|
19
|
+
<%@ Property Name="TablePopulatorNameFormat" Type="System.String"
|
20
|
+
Default="{0}TablePopulator"
|
21
|
+
Category="Output"
|
22
|
+
Description="Format string to create the TablePopulator class names." %>
|
23
|
+
<%@ Property Name="ColumnDataGeneratorNameFormat" Type="System.String"
|
24
|
+
Default="{0}DataGenerator"
|
25
|
+
Category="Output"
|
26
|
+
Description="Format string to create the ColumnGenenerator properties." %>
|
27
|
+
<%@ Property Name="UniqueValidatorNameFormat" Type="System.String"
|
28
|
+
Default="{0}Validator"
|
29
|
+
Category="Output"
|
30
|
+
Description="Format string to create the UniqueValidator properties." %>
|
31
|
+
<%@ Property Name="ForeignKeyProviderNameFormat" Type="System.String"
|
32
|
+
Default="{0}Provider"
|
33
|
+
Category="Output"
|
34
|
+
Description="Format string to create the ForeignKeyProviderNameFormat properties." %>
|
35
|
+
<%@ Property Name="Database" Type="SchemaExplorer.DatabaseSchema"
|
36
|
+
Category="Context"
|
37
|
+
Description="Target database for the IDatabasePopulator." %>
|
38
|
+
<%@ Assembly Name="SchemaExplorer" %>
|
39
|
+
<%@ Import Namespace="SchemaExplorer" %>
|
40
|
+
//////////////////////////////////////////////////////////////////
|
41
|
+
//
|
42
|
+
// Strongly typed populator for the <%= DatabaseName %>
|
43
|
+
//
|
44
|
+
//////////////////////////////////////////////////////////////////
|
45
|
+
|
46
|
+
using System;
|
47
|
+
using System.Data;
|
48
|
+
using System.Data.SqlClient;
|
49
|
+
|
50
|
+
using TestFu.Data;
|
51
|
+
using TestFu.Data.Populators;
|
52
|
+
using TestFu.Data.SqlClient;
|
53
|
+
using TestFu.Data.Generators;
|
54
|
+
|
55
|
+
namespace <%= Namespace %>
|
56
|
+
{
|
57
|
+
/// <summary>
|
58
|
+
/// A strongly typed <see cref="IDatabasePopulator"/> implementation for the
|
59
|
+
/// <%= DatabaseName %> database.
|
60
|
+
/// </summary>
|
61
|
+
/// <remarks>
|
62
|
+
/// <para>
|
63
|
+
/// This class can be used to generate <see cref="DataRow" /> instances that are compatible with
|
64
|
+
/// the constraint of the tables.
|
65
|
+
/// </para>
|
66
|
+
/// </remarks>
|
67
|
+
public class <%= DatabasePopulatorName %> : SqlDatabasePopulator
|
68
|
+
{
|
69
|
+
#region Constructors
|
70
|
+
/// <summary>
|
71
|
+
/// Initializes a new <see cref="<%= DatabasePopulatorName %>"/> with the
|
72
|
+
/// connection string of the database.
|
73
|
+
/// </summary>
|
74
|
+
/// <param name="connectionString">
|
75
|
+
/// A valid conneciton string to the target database.
|
76
|
+
/// </param>
|
77
|
+
/// <exception type="ArgumentNullException">
|
78
|
+
/// The <paramref name="connectionString"/> is a
|
79
|
+
/// null reference (Nothing in Visual Basic).
|
80
|
+
/// </exception>
|
81
|
+
/// <exception type="ArgumentException">
|
82
|
+
/// The <paramref name="connectionString"/> is empty.
|
83
|
+
/// </exception>
|
84
|
+
public <%= DatabasePopulatorName %>(string connectionString)
|
85
|
+
:this(new <%= DataSetName %>(), connectionString)
|
86
|
+
{}
|
87
|
+
|
88
|
+
/// <summary>
|
89
|
+
/// Initializes a new <see cref="<%= DatabasePopulatorName %>"/> with the
|
90
|
+
/// connection string of the database.
|
91
|
+
/// </summary>
|
92
|
+
/// <param name="dataSet">
|
93
|
+
/// A <see cref="DataSet"/> representing the structure of the
|
94
|
+
/// <em><%= DatabaseName %></em> database.
|
95
|
+
/// </param>
|
96
|
+
/// <param name="connectionString">
|
97
|
+
/// A valid conneciton string to the target database.
|
98
|
+
/// </param>
|
99
|
+
/// <exception type="ArgumentNullException">
|
100
|
+
/// The <paramref name="dataSet"/> or the <paramref name="connectionString"/> is a
|
101
|
+
/// null reference (Nothing in Visual Basic).
|
102
|
+
/// </exception>
|
103
|
+
/// <exception type="ArgumentException">
|
104
|
+
/// The <paramref name="connectionString"/> is empty.
|
105
|
+
/// </exception>
|
106
|
+
public <%= DatabasePopulatorName %>(
|
107
|
+
DataSet dataSet,
|
108
|
+
string connectionString
|
109
|
+
)
|
110
|
+
:base(connectionString)
|
111
|
+
{
|
112
|
+
// populate
|
113
|
+
this.Populate(dataSet);
|
114
|
+
}
|
115
|
+
|
116
|
+
protected override void PopulateTables()
|
117
|
+
{
|
118
|
+
// replace each ITablePopulator by a strongly-typed version
|
119
|
+
<% foreach(TableSchema table in this.Database.Tables) {%>
|
120
|
+
this.Tables.Add(new <%= GetTablePopulatorName(table)%>(this));
|
121
|
+
<%} // foreach(TableSchema table in this.Database.Tables) %>
|
122
|
+
}
|
123
|
+
#endregion
|
124
|
+
|
125
|
+
#region Tables
|
126
|
+
<% foreach(TableSchema table in this.Database.Tables) {%>
|
127
|
+
/// <summary>
|
128
|
+
/// Gets the <see cref="GetTablePopulatorName(table)"/> that populates the
|
129
|
+
/// <em><%= table.Name %></em> table.
|
130
|
+
/// </summary>
|
131
|
+
/// <value>
|
132
|
+
/// A strongly typed implementation of <see cref="ITablePopulator"/> that targets
|
133
|
+
/// the <em><%= table.Name %></em> table.
|
134
|
+
/// </value>
|
135
|
+
public <%= GetTablePopulatorName(table) %> <%= GetTablePopulatorPropertyName(table) %>
|
136
|
+
{
|
137
|
+
get
|
138
|
+
{
|
139
|
+
DataTable table = this.DataSet.Tables["<%= table.Name %>"];
|
140
|
+
if (table==null)
|
141
|
+
throw new InvalidOperationException("The table <%= table.Name %> was not found in the DataSet");
|
142
|
+
<%= GetTablePopulatorName(table) %> tablePopulator = this.Tables[table] as <%= GetTablePopulatorName(table) %>;
|
143
|
+
if (tablePopulator==null)
|
144
|
+
throw new InvalidOperationException("The table populator for the <%= table.FullName %> was not found");
|
145
|
+
return tablePopulator;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
<%} // foreach(TableSchema table in this.Database.Tables) %>
|
149
|
+
#endregion
|
150
|
+
#region Table Classes
|
151
|
+
<% foreach(TableSchema table in this.Database.Tables) {%>
|
152
|
+
|
153
|
+
#region <%= GetTablePopulatorName(table) %>
|
154
|
+
/// <summary>
|
155
|
+
/// A strongly typed implementation of <see cref="ITablePopulator"/> that targets
|
156
|
+
/// the <%= table.Name %> table.
|
157
|
+
/// </summary>
|
158
|
+
public class <%= GetTablePopulatorName(table) %> : TablePopulator
|
159
|
+
{
|
160
|
+
public <%= GetTablePopulatorName(table) %>(<%= DatabasePopulatorName %> databasePopulator)
|
161
|
+
:base(databasePopulator,databasePopulator.DataSet.Tables["<%= table.Name %>"])
|
162
|
+
{}
|
163
|
+
|
164
|
+
public new <%= DatabasePopulatorName %> Database
|
165
|
+
{
|
166
|
+
get
|
167
|
+
{
|
168
|
+
return base.Database as <%= DatabasePopulatorName %>;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
public DataRow GetRandomRow()
|
173
|
+
{
|
174
|
+
return this.Database.GetRandomRow(this.Table);
|
175
|
+
}
|
176
|
+
|
177
|
+
protected override void PopulateDataGenerators()
|
178
|
+
{
|
179
|
+
base.PopulateDataGenerators();
|
180
|
+
|
181
|
+
// Fix fields length
|
182
|
+
<% foreach(ColumnSchema column in table.Columns){
|
183
|
+
if (column.SystemType.IsValueType)
|
184
|
+
continue;
|
185
|
+
if (column.NativeType.ToLower() == "ntext" || column.NativeType.ToLower() == "text")
|
186
|
+
continue;
|
187
|
+
%>
|
188
|
+
this.FixLength(this.Columns["<%= column.Name %>"],<%= column.Size %>, <%= (table.PrimaryKey.MemberColumns.Contains(column)) ? "false" : "true" %>);
|
189
|
+
<%}%>
|
190
|
+
}
|
191
|
+
|
192
|
+
private void FixLength(IDataGenerator gen, int size, bool updateMaxLengthOnly)
|
193
|
+
{
|
194
|
+
StringGeneratorBase stringGenerator = gen as StringGeneratorBase;
|
195
|
+
if(stringGenerator!=null)
|
196
|
+
{
|
197
|
+
if (!updateMaxLengthOnly)
|
198
|
+
stringGenerator.MinLength = size;
|
199
|
+
stringGenerator.MaxLength = size;
|
200
|
+
return;
|
201
|
+
}
|
202
|
+
|
203
|
+
BinaryGenerator binaryGenerator = gen as BinaryGenerator;
|
204
|
+
if (binaryGenerator!=null)
|
205
|
+
{
|
206
|
+
if (!updateMaxLengthOnly)
|
207
|
+
binaryGenerator.MinLength = size;
|
208
|
+
binaryGenerator.MaxLength = 16;
|
209
|
+
return;
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
#region Columns Data Generators
|
214
|
+
<% foreach(ColumnSchema column in table.Columns){ %>
|
215
|
+
/// <summary>
|
216
|
+
/// Gets or sets the <see cref="IDataGenerator"/> that generates data for
|
217
|
+
/// the <em><%= GetColumnDataGeneratorName(column) %></em> column.
|
218
|
+
/// </summary>
|
219
|
+
/// <value>
|
220
|
+
/// A <see cref="IDataGenerator"/> instance that generates the data
|
221
|
+
/// for the <em><%= GetColumnDataGeneratorName(column) %></em> column.
|
222
|
+
/// </value>
|
223
|
+
/// <exception type="ArgumentNullException">
|
224
|
+
/// set property, the value is a null reference.
|
225
|
+
/// </exception>
|
226
|
+
public IDataGenerator <%= GetColumnDataGeneratorName(column) %>
|
227
|
+
{
|
228
|
+
get
|
229
|
+
{
|
230
|
+
DataColumn column = this.Table.Columns["<%= column.Name %>"];
|
231
|
+
if (column==null)
|
232
|
+
throw new InvalidOperationException("Column <%= column.Name %> not found");
|
233
|
+
IDataGenerator dataGenerator = this.Columns[column];
|
234
|
+
if (dataGenerator==null)
|
235
|
+
throw new InvalidOperationException("IDataGenerator not found for <%= column.Name %>");
|
236
|
+
return dataGenerator;
|
237
|
+
}
|
238
|
+
set
|
239
|
+
{
|
240
|
+
if (value==null)
|
241
|
+
throw new ArgumentNullException("IDataGenerator cannot be null");
|
242
|
+
this.Columns.Remove("<%= column.Name %>");
|
243
|
+
this.Columns.Add(value);
|
244
|
+
}
|
245
|
+
}
|
246
|
+
<%} // foreach(ColumnSchema column in table.Columns) %>
|
247
|
+
#endregion
|
248
|
+
|
249
|
+
#region UniqueValidators
|
250
|
+
<% foreach(TableKeySchema unique in table.PrimaryKeys){ %>
|
251
|
+
/// <summary>
|
252
|
+
/// Gets or sets the <see cref="IUniqueValidator"/> that validates data
|
253
|
+
/// the <em><%= GetUniqueValidatorName(unique) %></em> unique constraint.
|
254
|
+
/// </summary>
|
255
|
+
/// <value>
|
256
|
+
/// A <see cref="IUniqueValidator"/> instance that validates data
|
257
|
+
/// the <em><%= GetUniqueValidatorName(unique) %></em> unique constraint.
|
258
|
+
/// </value>
|
259
|
+
/// <exception type="ArgumentNullException">
|
260
|
+
/// set property, the value is a null reference.
|
261
|
+
/// </exception>
|
262
|
+
public IUniqueValidator <%= GetUniqueValidatorName(unique)%>
|
263
|
+
{
|
264
|
+
get
|
265
|
+
{
|
266
|
+
UniqueConstraint unique = this.Table.Constraints["<%= unique.Name %>"] as UniqueConstraint;
|
267
|
+
if (unique==null)
|
268
|
+
throw new InvalidOperationException("Could not find UniqueConstraint <%= unique.Name %>");
|
269
|
+
IUniqueValidator validator = this.Uniques[unique];
|
270
|
+
if (validator==null)
|
271
|
+
throw new InvalidOperationException("Could not find validator for UniqueConstraint <%= unique.Name %>");
|
272
|
+
return validator;
|
273
|
+
}
|
274
|
+
set
|
275
|
+
{
|
276
|
+
if (value==null)
|
277
|
+
throw new ArgumentNullException("IUniqueValidator cannot be null");
|
278
|
+
UniqueConstraint unique = this.Table.Constraints["<%= unique.Name %>"] as UniqueConstraint;
|
279
|
+
if (unique==null)
|
280
|
+
throw new InvalidOperationException("Could not find UniqueConstraint <%= unique.Name %>");
|
281
|
+
this.Uniques[unique] = value;
|
282
|
+
}
|
283
|
+
}
|
284
|
+
<%} // foreach(TableKeySchema unique in table.TableKeySchemas) %>
|
285
|
+
#endregion
|
286
|
+
|
287
|
+
#region ForeignKeyProviders
|
288
|
+
<% foreach(TableKeySchema foreignKey in table.ForeignKeys){ %>
|
289
|
+
/// <summary>
|
290
|
+
/// Gets or sets the <see cref="IForeignKeyProvider"/> that fetches valid
|
291
|
+
/// foreign key columns values for
|
292
|
+
/// the <em><%= GetForeignKeyProviderName(foreignKey) %></em> foreign key constraint.
|
293
|
+
/// </summary>
|
294
|
+
/// <value>
|
295
|
+
/// A <see cref="IForeignKeyProvider"/> that fetches valid
|
296
|
+
/// foreign key columns values for
|
297
|
+
/// the <em><%= GetForeignKeyProviderName(foreignKey) %></em> foreign key constraint.
|
298
|
+
/// </value>
|
299
|
+
/// <exception type="ArgumentNullException">
|
300
|
+
/// set property, the value is a null reference.
|
301
|
+
/// </exception>
|
302
|
+
public IForeignKeyProvider <%= GetForeignKeyProviderName(foreignKey)%>
|
303
|
+
{
|
304
|
+
get
|
305
|
+
{
|
306
|
+
ForeignKeyConstraint foreignKey = this.Table.Constraints["<%= foreignKey.Name %>"] as ForeignKeyConstraint;
|
307
|
+
if (foreignKey==null)
|
308
|
+
throw new InvalidOperationException("Could not find ForeignKeyConstraint <%= foreignKey.Name %>");
|
309
|
+
IForeignKeyProvider provider = this.ForeignKeys[foreignKey];
|
310
|
+
if (provider==null)
|
311
|
+
throw new InvalidOperationException("Could not find provider for UniqueConstraint <%= foreignKey.Name %>");
|
312
|
+
return provider;
|
313
|
+
}
|
314
|
+
set
|
315
|
+
{
|
316
|
+
if (value==null)
|
317
|
+
throw new ArgumentNullException("IForeignKeyProvider cannot be null");
|
318
|
+
ForeignKeyConstraint foreignKey = this.Table.Constraints["<%= foreignKey.Name %>"] as ForeignKeyConstraint;
|
319
|
+
if (foreignKey==null)
|
320
|
+
throw new InvalidOperationException("Could not find ForeignKeyConstraint <%= foreignKey.Name %>");
|
321
|
+
this.ForeignKeys[foreignKey] = value;
|
322
|
+
}
|
323
|
+
}
|
324
|
+
<%} // foreach(TableKeySchema foreignKey in table.ForeignKeys) %>
|
325
|
+
#endregion
|
326
|
+
}
|
327
|
+
#endregion
|
328
|
+
<%} // foreach(TableSchema table in this.Database.Tables) %>
|
329
|
+
#endregion
|
330
|
+
|
331
|
+
}
|
332
|
+
}
|
333
|
+
<script runat="template">
|
334
|
+
#region Properties
|
335
|
+
public string DatabaseName
|
336
|
+
{
|
337
|
+
get
|
338
|
+
{
|
339
|
+
return this.Database.Name;
|
340
|
+
}
|
341
|
+
}
|
342
|
+
|
343
|
+
public string DataSetName
|
344
|
+
{
|
345
|
+
get{ return Format(this.DataSetNameFormat, this.DatabaseName);}
|
346
|
+
}
|
347
|
+
|
348
|
+
public string DatabasePopulatorName
|
349
|
+
{
|
350
|
+
get{ return Format(this.DatabasePopulatorNameFormat,this.DatabaseName);}
|
351
|
+
}
|
352
|
+
public string GetTablePopulatorName(TableSchema table)
|
353
|
+
{
|
354
|
+
return Format(this.TablePopulatorNameFormat, table.Name);
|
355
|
+
}
|
356
|
+
public string GetTablePopulatorPropertyName(TableSchema table)
|
357
|
+
{
|
358
|
+
return Format(table.Name);
|
359
|
+
}
|
360
|
+
public string GetColumnDataGeneratorName(ColumnSchema column)
|
361
|
+
{
|
362
|
+
return Format(ColumnDataGeneratorNameFormat, column.Name);
|
363
|
+
}
|
364
|
+
public string GetUniqueValidatorName(TableKeySchema unique)
|
365
|
+
{
|
366
|
+
return Format(UniqueValidatorNameFormat, unique.Name);
|
367
|
+
}
|
368
|
+
public string GetForeignKeyProviderName(TableKeySchema unique)
|
369
|
+
{
|
370
|
+
return Format(ForeignKeyProviderNameFormat, unique.Name);
|
371
|
+
}
|
372
|
+
|
373
|
+
protected string Format(string format, params Object[] args)
|
374
|
+
{
|
375
|
+
string result = string.Format(format,args);
|
376
|
+
if (this.TableNamePrefix!=null && this.TableNamePrefix.Length > 0)
|
377
|
+
{
|
378
|
+
if (result.StartsWith(this.TableNamePrefix))
|
379
|
+
result = result.Substring(this.TableNamePrefix.Length);
|
380
|
+
}
|
381
|
+
|
382
|
+
result = result.Replace(" ","").Replace("_","").Replace(".","");
|
383
|
+
return result;
|
384
|
+
}
|
385
|
+
#endregion
|
386
|
+
</script>
|
@@ -0,0 +1,177 @@
|
|
1
|
+
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="TestFu DatabasePopulator Template" %>
|
2
|
+
<%@ Property Name="Namespace" Type="System.String"
|
3
|
+
Default="Populators"
|
4
|
+
Category="Output"
|
5
|
+
Description="Namespace of the populator." %>
|
6
|
+
<%@ Property Name="TestFixtureFormatName" Type="System.String"
|
7
|
+
Default="{0}CrudTest"
|
8
|
+
Category="Output"
|
9
|
+
Description="Format string of the fixture" %>
|
10
|
+
<%@ Property Name="DataSetNameFormat" Type="System.String"
|
11
|
+
Default="{0}DataSet"
|
12
|
+
Category="Output"
|
13
|
+
Description="Format string to create the DatabaseSet class name." %>
|
14
|
+
<%@ Property Name="DatabasePopulatorNameFormat" Type="System.String"
|
15
|
+
Default="{0}DatabasePopulator"
|
16
|
+
Category="Output"
|
17
|
+
Description="Format string to create the DatabasePopulator class name." %>
|
18
|
+
<%@ Property Name="CrudPopulatorNameFormat" Type="System.String"
|
19
|
+
Default="{0}CrudPopulator"
|
20
|
+
Category="Output"
|
21
|
+
Description="Format string to create the CrudPopulator class name." %>
|
22
|
+
<%@ Property Name="TableNamePrefix" Type="System.String"
|
23
|
+
Default=""
|
24
|
+
Category="Output"
|
25
|
+
Optional="true"
|
26
|
+
Description="Prefix to be removed." %>
|
27
|
+
<%@ Property Name="RollBack" Type="System.Boolean"
|
28
|
+
Default="false"
|
29
|
+
Category="Output"
|
30
|
+
Description="True if Rollback attribute is used." %>
|
31
|
+
<%@ Property Name="TablePopulatorNameFormat" Type="System.String"
|
32
|
+
Default="{0}TablePopulator"
|
33
|
+
Category="Output"
|
34
|
+
Description="Format string to create the TablePopulator class names." %>
|
35
|
+
<%@ Property Name="ColumnDataGeneratorNameFormat" Type="System.String"
|
36
|
+
Default="{0}DataGenerator"
|
37
|
+
Category="Output"
|
38
|
+
Description="Format string to create the ColumnGenenerator properties." %>
|
39
|
+
<%@ Property Name="UniqueValidatorNameFormat" Type="System.String"
|
40
|
+
Default="{0}Validator"
|
41
|
+
Category="Output"
|
42
|
+
Description="Format string to create the UniqueValidator properties." %>
|
43
|
+
<%@ Property Name="ForeignKeyProviderNameFormat" Type="System.String"
|
44
|
+
Default="{0}Provider"
|
45
|
+
Category="Output"
|
46
|
+
Description="Format string to create the ForeignKeyProviderNameFormat properties." %>
|
47
|
+
<%@ Property Name="Database" Type="SchemaExplorer.DatabaseSchema"
|
48
|
+
Category="Context"
|
49
|
+
Description="Target database for the IDatabasePopulator." %>
|
50
|
+
<%@ Assembly Name="SchemaExplorer" %>
|
51
|
+
<%@ Import Namespace="SchemaExplorer" %>
|
52
|
+
//////////////////////////////////////////////////////////////////
|
53
|
+
//
|
54
|
+
// Strongly typed populator for the <%= DatabaseName %>
|
55
|
+
//
|
56
|
+
//////////////////////////////////////////////////////////////////
|
57
|
+
|
58
|
+
using System;
|
59
|
+
using System.Data;
|
60
|
+
using System.Data.SqlClient;
|
61
|
+
using System.Configuration;
|
62
|
+
|
63
|
+
using MbUnit.Core.Framework;
|
64
|
+
using MbUnit.Framework;
|
65
|
+
|
66
|
+
using TestFu.Data;
|
67
|
+
using TestFu.Data.Populators;
|
68
|
+
using TestFu.Data.SqlClient;
|
69
|
+
|
70
|
+
namespace <%= Namespace %>
|
71
|
+
{
|
72
|
+
[TestFixture]
|
73
|
+
public class <%= String.Format(this.TestFixtureFormatName, Format(DatabaseName)) %>
|
74
|
+
{
|
75
|
+
private string connectionString;
|
76
|
+
private <%= CrudPopulatorName %> populator;
|
77
|
+
|
78
|
+
[TestFixtureSetUp]
|
79
|
+
public void TestFixtureSetUp()
|
80
|
+
{
|
81
|
+
this.connectionString = ConfigurationSettings.AppSettings["connString"];
|
82
|
+
this.populator = new <%= CrudPopulatorName %>(connectionString);
|
83
|
+
}
|
84
|
+
|
85
|
+
<% foreach(TableSchema table in this.Database.Tables) {%>
|
86
|
+
[Test<%= AddRollBack() %>]
|
87
|
+
public void Create<%= Format(table.Name) %>()
|
88
|
+
{
|
89
|
+
this.populator.Create<%= Format(table.Name) %>();
|
90
|
+
}
|
91
|
+
[Test<%= AddRollBack() %>]
|
92
|
+
public void CreateAndDelete<%= Format(table.Name) %>()
|
93
|
+
{
|
94
|
+
DataRow row = this.populator.Create<%= Format(table.Name) %>();
|
95
|
+
this.populator.Delete<%= Format(table.Name) %>(row);
|
96
|
+
}
|
97
|
+
<% if (table.PrimaryKey.MemberColumns.Count != table.Columns.Count ) {%>
|
98
|
+
[Test<%= AddRollBack() %>]
|
99
|
+
public void CreateAndUpdate<%= Format(table.Name) %>()
|
100
|
+
{
|
101
|
+
DataRow row = this.populator.Create<%= Format(table.Name) %>();
|
102
|
+
this.populator.Update<%= Format(table.Name) %>();
|
103
|
+
}
|
104
|
+
<% } %>
|
105
|
+
<%} // foreach(TableSchema table in this.Database.Tables) %>
|
106
|
+
}
|
107
|
+
}
|
108
|
+
<script runat="template">
|
109
|
+
#region Properties
|
110
|
+
public string CrudPopulatorName
|
111
|
+
{
|
112
|
+
get{ return Format(this.CrudPopulatorNameFormat,this.DatabaseName);}
|
113
|
+
}
|
114
|
+
public string DatabaseName
|
115
|
+
{
|
116
|
+
get
|
117
|
+
{
|
118
|
+
return this.Database.Name;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
public string DataSetName
|
123
|
+
{
|
124
|
+
get{ return Format(this.DataSetNameFormat, this.DatabaseName);}
|
125
|
+
}
|
126
|
+
public string AddRollBack()
|
127
|
+
{
|
128
|
+
if (this.RollBack)
|
129
|
+
return ",RollBack";
|
130
|
+
else
|
131
|
+
return "";
|
132
|
+
}
|
133
|
+
|
134
|
+
public string DatabasePopulatorName
|
135
|
+
{
|
136
|
+
get{ return Format(this.DatabasePopulatorNameFormat,this.DatabaseName);}
|
137
|
+
}
|
138
|
+
public string GetTablePopulatorName(TableSchema table)
|
139
|
+
{
|
140
|
+
return Format(this.TablePopulatorNameFormat, table.Name);
|
141
|
+
}
|
142
|
+
public string GetTablePopulatorPropertyName(TableSchema table)
|
143
|
+
{
|
144
|
+
return Format(table.Name);
|
145
|
+
}
|
146
|
+
public string GetColumnDataGeneratorName(ColumnSchema column)
|
147
|
+
{
|
148
|
+
return Format(ColumnDataGeneratorNameFormat, column.Name);
|
149
|
+
}
|
150
|
+
public string GetUniqueValidatorName(TableKeySchema unique)
|
151
|
+
{
|
152
|
+
return Format(UniqueValidatorNameFormat, unique.Name);
|
153
|
+
}
|
154
|
+
public string GetForeignKeyProviderName(TableKeySchema unique)
|
155
|
+
{
|
156
|
+
return Format(ForeignKeyProviderNameFormat, unique.Name);
|
157
|
+
}
|
158
|
+
protected string FormatLower(string format, params object[] args)
|
159
|
+
{
|
160
|
+
string s= Format(format,args);
|
161
|
+
return Char.ToLower(s[0]) + s.Substring(1);
|
162
|
+
}
|
163
|
+
protected string Format(string format, params Object[] args)
|
164
|
+
{
|
165
|
+
string result = string.Format(format,args);
|
166
|
+
if (this.TableNamePrefix!=null && this.TableNamePrefix.Length > 0)
|
167
|
+
{
|
168
|
+
if (result.StartsWith(this.TableNamePrefix))
|
169
|
+
result = result.Substring(this.TableNamePrefix.Length);
|
170
|
+
}
|
171
|
+
|
172
|
+
result = result.Replace(" ","").Replace("_","").Replace(".","");
|
173
|
+
return result;
|
174
|
+
}
|
175
|
+
|
176
|
+
#endregion
|
177
|
+
</script>
|