mbunit2 2.4.2.355.20100801

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. data/docs/ASL - Apache Software Foundation License.txt +57 -0
  2. data/docs/MbUnit License.txt +14 -0
  3. data/docs/MbUnit.chm +0 -0
  4. data/docs/Release Notes.txt +7 -0
  5. data/docs/extras/CCNet/How to use MbUnit v2 with CruiseControl.Net.txt +88 -0
  6. data/docs/extras/CCNet/images/Category.png +0 -0
  7. data/docs/extras/CCNet/images/Fixture.png +0 -0
  8. data/docs/extras/CCNet/images/Populator.png +0 -0
  9. data/docs/extras/CCNet/images/Test.png +0 -0
  10. data/docs/extras/CCNet/xsl/MBUnitDetails.xsl +592 -0
  11. data/docs/extras/CCNet/xsl/MBUnitSummary.xsl +266 -0
  12. data/docs/extras/Snippets/AdjacencyGraph.cst +1703 -0
  13. data/docs/extras/Snippets/AssertWrapper.cst +181 -0
  14. data/docs/extras/Snippets/CrudPopulator.cst +377 -0
  15. data/docs/extras/Snippets/DatabasePopulator.cst +386 -0
  16. data/docs/extras/Snippets/DatabasePopulatorCrudTest.cst +177 -0
  17. data/docs/extras/Snippets/Exception.cst +94 -0
  18. data/docs/extras/Snippets/GrammarPopulator.cst +258 -0
  19. data/docs/extras/Snippets/MockObject.cst +296 -0
  20. data/docs/extras/Snippets/RapTierCrudPopulator.cst +444 -0
  21. data/docs/extras/Snippets/SimpleFixture.cst +91 -0
  22. data/docs/extras/Snippets/SqlppCrudPopulator.cst +443 -0
  23. data/docs/extras/Snippets/TestFixture.cst +469 -0
  24. data/docs/extras/Snippets/autorunner.snippet +45 -0
  25. data/docs/extras/Snippets/combinatorialtest.snippet +54 -0
  26. data/docs/extras/Snippets/datafixture.snippet +61 -0
  27. data/docs/extras/Snippets/model.snippet +95 -0
  28. data/docs/extras/Snippets/msbuild.snippet +40 -0
  29. data/docs/extras/Snippets/nant.snippet +34 -0
  30. data/docs/extras/Snippets/perfcounterassert.cst +173 -0
  31. data/docs/extras/Snippets/processtestfixture.snippet +75 -0
  32. data/docs/extras/Snippets/rowtest.snippet +113 -0
  33. data/docs/extras/Snippets/state.snippet +27 -0
  34. data/docs/extras/Snippets/submodel.snippet +32 -0
  35. data/docs/extras/Snippets/test.snippet +28 -0
  36. data/docs/extras/Snippets/testexpectedexception.snippet +32 -0
  37. data/docs/extras/Snippets/testfixture.snippet +68 -0
  38. data/docs/extras/Snippets/testsuitefixture.snippet +48 -0
  39. data/docs/extras/Snippets/typefixture.snippet +74 -0
  40. data/docs/extras/Snippets/typefixturewithproviderfactory.snippet +77 -0
  41. data/docs/extras/Snippets/usingmbunit.snippet +19 -0
  42. data/docs/extras/Templates/VS2005/ItemTemplates/CSharp/Test/MbUnit2.TestFixtureTemplate.CSharp.zip +0 -0
  43. data/docs/extras/Templates/VS2005/ItemTemplates/VisualBasic/Test/MbUnit2.TestFixtureTemplate.VisualBasic.zip +0 -0
  44. data/docs/extras/Templates/VS2005/ProjectTemplates/CSharp/Test/MbUnit2.TestProjectTemplate.CSharp.zip +0 -0
  45. data/docs/extras/Templates/VS2005/ProjectTemplates/VisualBasic/Test/MbUnit2.TestProjectTemplate.VisualBasic.zip +0 -0
  46. data/docs/extras/Templates/VS2008/ItemTemplates/CSharp/Test/MbUnit2.TestFixtureTemplate.CSharp.zip +0 -0
  47. data/docs/extras/Templates/VS2008/ItemTemplates/VisualBasic/Test/MbUnit2.TestFixtureTemplate.VisualBasic.zip +0 -0
  48. data/docs/extras/Templates/VS2008/ProjectTemplates/CSharp/Test/MbUnit2.MvcWebApplicationTestProjectTemplate.CSharp.zip +0 -0
  49. data/docs/extras/Templates/VS2008/ProjectTemplates/CSharp/Test/MbUnit2.TestProjectTemplate.CSharp.zip +0 -0
  50. data/docs/extras/Templates/VS2008/ProjectTemplates/VisualBasic/Test/MbUnit2.MvcWebApplicationTestProjectTemplate.VisualBasic.zip +0 -0
  51. data/docs/extras/Templates/VS2008/ProjectTemplates/VisualBasic/Test/MbUnit2.TestProjectTemplate.VisualBasic.zip +0 -0
  52. data/lib/MbUnit License.txt +14 -0
  53. data/lib/MbUnit.AddIn.dll +0 -0
  54. data/lib/MbUnit.Cons.exe +0 -0
  55. data/lib/MbUnit.Cons.exe.config +12 -0
  56. data/lib/MbUnit.Framework.2.0.dll +0 -0
  57. data/lib/MbUnit.Framework.2.0.pdb +0 -0
  58. data/lib/MbUnit.Framework.2.0.xml +278 -0
  59. data/lib/MbUnit.Framework.dll +0 -0
  60. data/lib/MbUnit.Framework.pdb +0 -0
  61. data/lib/MbUnit.Framework.xml +6929 -0
  62. data/lib/MbUnit.GUI.exe +0 -0
  63. data/lib/MbUnit.GUI.exe.config +14 -0
  64. data/lib/MbUnit.MSBuild.Tasks.dll +0 -0
  65. data/lib/MbUnit.Tasks.dll +0 -0
  66. data/lib/NGraphviz.Helpers.dll +0 -0
  67. data/lib/NGraphviz.Layout.dll +0 -0
  68. data/lib/NGraphviz.dll +0 -0
  69. data/lib/QuickGraph.Algorithms.Graphviz.dll +0 -0
  70. data/lib/QuickGraph.Algorithms.dll +0 -0
  71. data/lib/QuickGraph.Algorithms.pdb +0 -0
  72. data/lib/QuickGraph.Algorithms.xml +2818 -0
  73. data/lib/QuickGraph.dll +0 -0
  74. data/lib/QuickGraph.pdb +0 -0
  75. data/lib/QuickGraph.xml +3126 -0
  76. data/lib/Refly.dll +0 -0
  77. data/lib/Refly.pdb +0 -0
  78. data/lib/Refly.xml +1327 -0
  79. data/lib/TestFu.dll +0 -0
  80. data/lib/TestFu.pdb +0 -0
  81. data/lib/TestFu.xml +1932 -0
  82. data/lib/XsdTidy.exe +0 -0
  83. metadata +163 -0
@@ -0,0 +1,444 @@
1
+ <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="TestFu DatabasePopulator Crud Harness" %>
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="DalNamespace" Type="System.String"
11
+ Default="Northwind"
12
+ Category="Output"
13
+ Description="Namespace of the Dal" %>
14
+ <%@ Property Name="DalFormatName" Type="System.String"
15
+ Default="{0}"
16
+ Category="Output"
17
+ Description="Format string to create the Dal 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="DatabasePopulatorNameFormat" Type="System.String"
23
+ Default="{0}DatabasePopulator"
24
+ Category="Output"
25
+ Description="Format string to create the DatabasePopulator class name." %>
26
+ <%@ Property Name="TableNamePrefix" Type="System.String"
27
+ Default=""
28
+ Category="Output"
29
+ Optional="true"
30
+ Description="Prefix to be removed." %>
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 CRUD populator for the <%= DatabaseName %>
55
+ //
56
+ // This file was generated by CodeSmith. Do not edit it! Modify
57
+ // the template if you need to tweak it for you.
58
+ //
59
+ //////////////////////////////////////////////////////////////////
60
+
61
+ using System;
62
+ using System.Data;
63
+ using System.Data.SqlClient;
64
+ using System.Data.SqlTypes;
65
+
66
+ using MbUnit.Core.Framework;
67
+ using MbUnit.Framework;
68
+
69
+ using TestFu.Data;
70
+ using TestFu.Data.SqlClient;
71
+ using TestFu.Data.Graph;
72
+
73
+ using <%= DalNamespace %>;
74
+
75
+ namespace <%= Namespace %>
76
+ {
77
+ /// <summary>
78
+ /// A CRUD harness for the <%= DatabaseName %> database.
79
+ /// </summary>
80
+ /// <remarks>
81
+ /// <para><b>Note to implementors:</b></para>
82
+ /// <para>
83
+ /// Implementors should modify the CodeSmith template that generated
84
+ /// this class to inject their Create,Update,Read and Delete methods.
85
+ /// Each generated method contains a <see cref="NotImplementedException"/>
86
+ /// that should be replaced with the proper DAL code.
87
+ /// </para>
88
+ /// <para>
89
+ /// The <c>Create*</c> methods create a new row and verify that it is
90
+ /// present in the database using the <c>Read*</c> methods.
91
+ /// The <c>Update*</c> methods apply an update between two rows and
92
+ /// verify that the update was succesful using <c>Read*</c> methods.
93
+ /// The <c>Delete*</c> remove a row from the tables and verify
94
+ /// that it has been removed using <c>Read*</c> methods.
95
+ /// </para>
96
+ /// <remarks>
97
+ public class <%= CrudPopulatorName %> : <%= DatabasePopulatorName %>
98
+ {
99
+ #region Fields
100
+ private <%= DalNamespace %>.<%= Format(DalFormatName, DatabaseName) %> dal = new <%= DalNamespace %>.<%= Format(DalFormatName, DatabaseName) %>();
101
+ #endregion
102
+ #region Constructors
103
+ /// <summary>
104
+ /// Initializes a new <see cref="<%= CrudPopulatorName %>"/> with the
105
+ /// connection string of the database.
106
+ /// </summary>
107
+ /// <param name="connectionString">
108
+ /// A valid conneciton string to the target database.
109
+ /// </param>
110
+ /// <exception type="ArgumentNullException">
111
+ /// The <paramref name="connectionString"/> is a
112
+ /// null reference (Nothing in Visual Basic).
113
+ /// </exception>
114
+ /// <exception type="ArgumentException">
115
+ /// The <paramref name="connectionString"/> is empty.
116
+ /// </exception>
117
+ public <%= CrudPopulatorName %>(string connectionString)
118
+ :this(new <%= DataSetName %>(), connectionString)
119
+ {}
120
+
121
+ /// <summary>
122
+ /// Initializes a new <see cref="<%= CrudPopulatorName %>"/> with the
123
+ /// connection string of the database.
124
+ /// </summary>
125
+ /// <param name="dataSet">
126
+ /// A <see cref="DataSet"/> representing the structure of the
127
+ /// <em><%= DatabaseName %></em> database.
128
+ /// </param>
129
+ /// <param name="connectionString">
130
+ /// A valid conneciton string to the target database.
131
+ /// </param>
132
+ /// <exception type="ArgumentNullException">
133
+ /// The <paramref name="dataSet"/> or the <paramref name="connectionString"/> is a
134
+ /// null reference (Nothing in Visual Basic).
135
+ /// </exception>
136
+ /// <exception type="ArgumentException">
137
+ /// The <paramref name="connectionString"/> is empty.
138
+ /// </exception>
139
+ public <%= CrudPopulatorName %>(
140
+ DataSet dataSet,
141
+ string connectionString
142
+ )
143
+ :base(dataSet,connectionString)
144
+ {}
145
+ #endregion
146
+
147
+ <% foreach(TableSchema table in this.Database.Tables) {%>
148
+ #region <%= table.Name %>
149
+ /// <summary>
150
+ /// Creates a new <see cref="DataRow"/> in the
151
+ /// <em><%= table.Name %> table.
152
+ /// </summary>
153
+ /// <returns>
154
+ /// The created <see cref="DataRow"/> instance
155
+ /// </returns>
156
+ public virtual DataRow Create<%= Format(table.Name) %>()
157
+ {
158
+ // generate row
159
+ DataRow row = this.<%=GetTablePopulatorPropertyName(table)%>.Generate();
160
+
161
+ // Add the row to the <%= table.Name %> table here
162
+ <%= TableRow(table) %> irow = new <%= TableRow(table) %>();
163
+ <% foreach(ColumnSchema column in table.Columns) {%>
164
+ <% if (column.AllowDBNull) {%>
165
+ if (row["<%= column.Name%>"] is DBNull)
166
+ <% if (column.SystemType.IsValueType) {%>
167
+ irow.Is<%= Format(column.Name) %>Null = true;
168
+ <% } else { %>
169
+ irow.<%= Format(column.Name) %> = null;
170
+ <%}%>
171
+ else
172
+ irow.<%= Format(column.Name) %> = (<%= column.SystemType %>)row["<%= column.Name %>"];
173
+ <% } else {%>
174
+ irow.<%= Format(column.Name) %> = (<%= column.SystemType %>)row["<%= column.Name %>"];
175
+ <% } %>
176
+ <% } // foreach(ColumnSchema column in table.Columns) %>
177
+
178
+ try
179
+ {
180
+ this.dal.<%= TableCollection(table) %>.Insert(irow);
181
+ }
182
+ catch(Exception ex)
183
+ {
184
+ Console.WriteLine("Inserted row:");
185
+ DisplayRow(row);
186
+ throw new ApplicationException("Insertion in <%= table.Name %> failed",ex);
187
+ }
188
+
189
+
190
+ // RapTier does not return the new identity when the primary key is
191
+ // identity. Hence, we cannot verify anything!
192
+
193
+ return row;
194
+ }
195
+
196
+ <% if (table.PrimaryKey.MemberColumns.Count != table.Columns.Count) {%>
197
+ /// <summary>
198
+ /// Updates a row (chosen randomly) with a new generated row in the
199
+ /// <em><%= table.Name %> table.
200
+ /// </summary>
201
+ /// <returns>
202
+ /// The update <see cref="DataRow"/> instance
203
+ /// </returns>
204
+ public virtual DataRow Update<%= Format(table.Name) %>()
205
+ {
206
+ // generate row
207
+ DataRow row = this.<%=GetTablePopulatorPropertyName(table)%>.GetRandomRow();
208
+ // update random
209
+ return Update<%= Format(table.Name) %>(row);
210
+ }
211
+
212
+ /// <summary>
213
+ /// Updates <paramref name="row"/> with <paramref name="rowToUpdate"/> in the
214
+ /// <em><%= table.Name %> table.
215
+ /// </summary>
216
+ /// <returns>
217
+ /// The update <see cref="DataRow"/> instance
218
+ /// </returns>
219
+ public virtual DataRow Update<%= Format(table.Name) %>(DataRow row)
220
+ {
221
+ if (row==null)
222
+ throw new ArgumentNullException("row");
223
+
224
+ // changes values
225
+ this.<%= GetTablePopulatorPropertyName(table)%>.ChangeRowValues(row);
226
+
227
+ // Update the rowToUpdate with row in the <%= table.Name %> table
228
+ <%= TableRow(table) %> urow = new <%= TableRow(table) %>();
229
+ <% foreach(ColumnSchema column in table.Columns) {%>
230
+ <% if (column.AllowDBNull) {%>
231
+ if (row["<%= column.Name%>"] is DBNull)
232
+ <% if (column.SystemType.IsValueType) {%>
233
+ urow.Is<%= Format(column.Name) %>Null = true;
234
+ <% } else { %>
235
+ urow.<%= Format(column.Name) %> = null;
236
+ <%}%>
237
+ else
238
+ urow.<%= Format(column.Name) %> = (<%= column.SystemType %>)row["<%= column.Name %>"];
239
+ <% } else {%>
240
+ urow.<%= Format(column.Name) %> = (<%= column.SystemType %>)row["<%= column.Name %>"];
241
+ <% } %>
242
+ <% } // foreach(ColumnSchema column in table.Columns) %>
243
+ try
244
+ {
245
+ this.dal.<%= TableCollection(table) %>.Update(urow);
246
+ }
247
+ catch(Exception ex)
248
+ {
249
+ Console.WriteLine("Updated row:");
250
+ DisplayRow(row);
251
+ throw new ApplicationException("Update in <%= table.Name %> failed",ex);
252
+ }
253
+
254
+ return row;
255
+ }
256
+ <%}// if (table.PrimaryKey.MemberColumns.Count != table.Columns.COunt) {%>
257
+
258
+ /// <summary>
259
+ /// Deletes a random row
260
+ /// from the <em><%= table.Name %></em> table.
261
+ /// </summary>
262
+ public virtual void Delete<%= Format(table.Name) %>()
263
+ {
264
+ // choose a row
265
+ DataRow row = this.<%=GetTablePopulatorPropertyName(table)%>.GetRandomRow();
266
+
267
+ // delete
268
+ this.Delete<%= Format(table.Name) %>(row);
269
+ }
270
+
271
+ /// <summary>
272
+ /// Deletes the row
273
+ /// from the <em><%= table.Name %></em> table.
274
+ /// </summary>
275
+ public virtual void Delete<%= Format(table.Name) %>(DataRow row)
276
+ {
277
+ if (row==null)
278
+ throw new ArgumentNullException("row");
279
+
280
+ // Delete the row from the <%= table.Name %> table
281
+ try
282
+ {
283
+ this.dal.<%= TableCollection(table) %>.DeleteByPrimaryKey(
284
+ <% for(int i = 0;i<table.PrimaryKey.MemberColumns.Count;++i){
285
+ ColumnSchema column =table.PrimaryKey.MemberColumns[i];%>
286
+ <%= (i!=0) ? "," : "" %>(<%= column.SystemType %>)row["<%= column.Name %>"]
287
+ <% } // foreach(ColumnSchema column in table.Columns) %>
288
+ );
289
+ }
290
+ catch(Exception ex)
291
+ {
292
+ Console.WriteLine("Deleted row:");
293
+ DisplayRow(row);
294
+ throw new ApplicationException("Delete in <%= table.Name %> failed",ex);
295
+ }
296
+
297
+
298
+ // check it is not in the table
299
+ DataRow readRow = Read<%= Format(table.Name) %>(row);
300
+ if (readRow!=null)
301
+ {
302
+ Console.WriteLine("Row to delete");
303
+ DisplayRow(row);
304
+ Console.WriteLine("Not deleted row");
305
+ DisplayRow(readRow);
306
+ Assert.Fail("Row delete failed");
307
+ }
308
+ }
309
+
310
+ /// <summary>
311
+ /// Reads the <em><%= table.Name %></em> table for a row matching <paramref name="row"/>
312
+ /// and returns it.
313
+ /// </summary>
314
+ /// <returns>
315
+ /// Read <see cref="DataRow"/> row if foud; otherwize
316
+ /// a null reference.
317
+ /// </returns>
318
+ public virtual DataRow Read<%= Format(table.Name) %>(DataRow row)
319
+ {
320
+ if (row==null)
321
+ throw new ArgumentNullException("row");
322
+
323
+ <%= TableRow(table) %> readRow = null;
324
+ try
325
+ {
326
+ readRow = this.dal.<%= TableCollection(table) %>.GetByPrimaryKey(
327
+ <% for(int i = 0;i<table.PrimaryKey.MemberColumns.Count;++i){
328
+ ColumnSchema column =table.PrimaryKey.MemberColumns[i];%>
329
+ <%= (i!=0) ? "," : "" %>(<%= column.SystemType %>)row["<%= column.Name %>"]
330
+ <% } // foreach(ColumnSchema column in table.Columns) %>
331
+ );
332
+ }
333
+ catch(Exception ex)
334
+ {
335
+ Console.WriteLine("Read row:");
336
+ DisplayRow(row);
337
+ throw new ApplicationException("Read in <%= table.Name %> failed",ex);
338
+ }
339
+
340
+ if (readRow==null)
341
+ return null;
342
+
343
+ DataRow rrow = row.Table.NewRow();
344
+ <% foreach(ColumnSchema column in table.Columns) {%>
345
+ <% if (column.SystemType.IsValueType && column.AllowDBNull) {%>
346
+ if (readRow.Is<%= Format(column.Name) %>Null)
347
+ rrow["<%=column.Name %>"] = DBNull.Value;
348
+ else
349
+ rrow["<%=column.Name %>"] = readRow.<%= Format(column.Name) %>;
350
+ <%} else { %>
351
+ rrow["<%=column.Name %>"] = readRow.<%= Format(column.Name) %>;
352
+ <%}%>
353
+ <% } // foreach(ColumnSchema column in table.Columns) %>
354
+
355
+ return rrow;
356
+ }
357
+ #endregion
358
+
359
+ <%} // foreach(TableSchema table in this.Database.Tables) %>
360
+
361
+ #region Misc
362
+ protected virtual void DisplayRow(DataRow row)
363
+ {
364
+ if (row==null)
365
+ throw new ArgumentNullException("row");
366
+ foreach(DataColumn column in row.Table.Columns)
367
+ {
368
+ Console.WriteLine("\t{0}: {1}",
369
+ column.ColumnName,
370
+ row[column].ToString());
371
+ }
372
+ }
373
+ #endregion
374
+ }
375
+ }
376
+ <script runat="template">
377
+ #region Properties
378
+ public string DatabaseName
379
+ {
380
+ get
381
+ {
382
+ return this.Database.Name;
383
+ }
384
+ }
385
+ public string TableRow(TableSchema table)
386
+ {
387
+ return Format("{0}Row",table.Name);
388
+ }
389
+ public string TableCollection(TableSchema table)
390
+ {
391
+ return Format("{0}Collection",table.Name);
392
+ }
393
+ public string DataSetName
394
+ {
395
+ get{ return Format(this.DataSetNameFormat, this.DatabaseName);}
396
+ }
397
+ public string CrudPopulatorName
398
+ {
399
+ get{ return Format(this.CrudPopulatorNameFormat,this.DatabaseName);}
400
+ }
401
+ public string DatabasePopulatorName
402
+ {
403
+ get{ return Format(this.DatabasePopulatorNameFormat,this.DatabaseName);}
404
+ }
405
+ public string GetTablePopulatorName(TableSchema table)
406
+ {
407
+ return Format(this.TablePopulatorNameFormat, table.Name);
408
+ }
409
+ public string GetTablePopulatorPropertyName(TableSchema table)
410
+ {
411
+ return Format(table.Name);
412
+ }
413
+ public string GetColumnDataGeneratorName(ColumnSchema column)
414
+ {
415
+ return Format(ColumnDataGeneratorNameFormat, column.Name);
416
+ }
417
+ public string GetUniqueValidatorName(TableKeySchema unique)
418
+ {
419
+ return Format(UniqueValidatorNameFormat, unique.Name);
420
+ }
421
+ public string GetForeignKeyProviderName(TableKeySchema unique)
422
+ {
423
+ return Format(ForeignKeyProviderNameFormat, unique.Name);
424
+ }
425
+ protected string FormatLower(string format, params object[] args)
426
+ {
427
+ string s= Format(format,args);
428
+ return Char.ToLower(s[0]) + s.Substring(1);
429
+ }
430
+ protected string Format(string format, params Object[] args)
431
+ {
432
+ string result = string.Format(format,args);
433
+ if (this.TableNamePrefix!=null && this.TableNamePrefix.Length > 0)
434
+ {
435
+ if (result.StartsWith(this.TableNamePrefix))
436
+ result = result.Substring(this.TableNamePrefix.Length);
437
+ }
438
+
439
+ result = result.Replace(" ","").Replace("_","").Replace(".","");
440
+ return result;
441
+ }
442
+
443
+ #endregion
444
+ </script>
@@ -0,0 +1,91 @@
1
+ <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="A simple TestFixture generator" %>
2
+ <%@ Property Name="Class" Type="System.String" Category="Appearance" Description="Tested class name." %>
3
+ <%@ Property Name="Namespace" Type="System.String" Category="Appearance" Description="Tested class namespace." %>
4
+ <%@ Property Name="TestNamespace" Type="System.String" Category="Appearance" Description="Test namespace." %>
5
+ <%@ Property Name="Fixture" Type="FixtureType" Category="Options" Appearance="Fixture has setup" %>
6
+ <%@ Property Name="SetUp" Type="System.Boolean" Category="Options" Default="false" Description="Fixture has setup" %>
7
+ <%@ Property Name="TearDown" Type="System.Boolean" Category="Options" Default="false" Description="Fixture has setup" %>
8
+ <%@ Property Name="TestClassFormat" Type="System.String" Category="Options" Default="{0}Test" Description="Format string for creating TestClass" %>
9
+
10
+ #region Includes
11
+ using System;
12
+ using System.Collections;
13
+ using System.IO;
14
+ using MbUnit.Core.Framework;
15
+ using MbUnit.Framework;
16
+ #endregion
17
+
18
+ using <%= Namespace %>;
19
+
20
+ namespace <%= TestNamespace %>
21
+ {
22
+ /// <summary>
23
+ /// <see cref="<%= Fixture %>"/> for the <see cref="<%= Class %>"/> class.
24
+ /// </summary>
25
+ [<%= FixtureAttribute %>]
26
+ public class <%= TestClass %>
27
+ {
28
+ <% if (this.SetUpOrTearDown) {%>
29
+ #region SetUp and TearDown
30
+ <% if (this.SetUp) {%>
31
+ [SetUp]
32
+ public void SetUp()
33
+ {
34
+ throw new NotImplemented();
35
+ }
36
+ <%}%>
37
+ <% if (this.TearDown) {%>
38
+ [TearDown]
39
+ public void TearDown()
40
+ {
41
+ throw new NotImplemented();
42
+ }
43
+ <%}%>
44
+ #endregion
45
+ <%}%>
46
+
47
+ #region Tests
48
+ #endregion
49
+ }
50
+ }
51
+
52
+ <script runat="template">
53
+ public enum FixtureType
54
+ {
55
+ TestFixture,
56
+ TypeFixture,
57
+ DataFixture,
58
+ ProcessTestFixture,
59
+ TestSuiteFixture,
60
+ CollectionIndexingFixture,
61
+ CollectionOrderFixture,
62
+ EnumerationFixture
63
+ }
64
+
65
+ public bool SetUpOrTearDown
66
+ {
67
+ get
68
+ {
69
+ return this.SetUp || this.TearDown;
70
+ }
71
+ }
72
+
73
+ public string FixtureAttribute
74
+ {
75
+ get
76
+ {
77
+ if(this.Fixture == FixtureType.TypeFixture)
78
+ return "TypeFixture(typeof(PutTestedTypeHere))";
79
+
80
+ return this.Fixture.ToString();
81
+ }
82
+ }
83
+
84
+ public string TestClass
85
+ {
86
+ get
87
+ {
88
+ return String.Format(this.TestClassFormat, this.Class);
89
+ }
90
+ }
91
+ </script>