2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mcs / nunit20 / core / ITest.cs
1 #region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig
2 /************************************************************************************
3 '
4 ' Copyright © 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
5 ' Copyright © 2000-2003 Philip A. Craig
6 '
7 ' This software is provided 'as-is', without any express or implied warranty. In no 
8 ' event will the authors be held liable for any damages arising from the use of this 
9 ' software.
10
11 ' Permission is granted to anyone to use this software for any purpose, including 
12 ' commercial applications, and to alter it and redistribute it freely, subject to the 
13 ' following restrictions:
14 '
15 ' 1. The origin of this software must not be misrepresented; you must not claim that 
16 ' you wrote the original software. If you use this software in a product, an 
17 ' acknowledgment (see the following) in the product documentation is required.
18 '
19 ' Portions Copyright © 2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
20 ' or Copyright © 2000-2003 Philip A. Craig
21 '
22 ' 2. Altered source versions must be plainly marked as such, and must not be 
23 ' misrepresented as being the original software.
24 '
25 ' 3. This notice may not be removed or altered from any source distribution.
26 '
27 '***********************************************************************************/
28 #endregion
29
30 namespace NUnit.Core
31 {
32         using System;
33         using System.Collections;
34
35         /// <summary>
36         /// Common interface supported by all representations
37         /// of a test. Only includes informational fields.
38         /// The Run method is specifically excluded to allow
39         /// for data-only representations of a test.
40         /// </summary>
41         public interface ITest
42         {
43                 /// <summary>
44                 /// Name of the test
45                 /// </summary>
46                 string Name     { get; }
47                 
48                 /// <summary>
49                 /// Full Name of the test
50                 /// </summary>
51                 string FullName { get; }
52
53                 /// <summary>
54                 /// Last part of the full name
55                 /// </summary>
56                 string ShortName { get; }
57
58                 /// <summary>
59                 /// Int used to distinguish suites of the same
60                 /// name across multiple assemblies.
61                 /// </summary>
62                 int AssemblyKey { get; set; }
63
64                 /// <summary>
65                 /// Key used to look up a test in a hash table
66                 /// </summary>
67                 string UniqueName { get; }
68
69                 /// <summary>
70                 /// Whether or not the test should be run
71                 /// </summary>
72                 bool ShouldRun { get; set; }
73
74                 /// <summary>
75                 /// Reason for not running the test, if applicable
76                 /// </summary>
77                 string IgnoreReason { get; set; }
78                 
79                 /// <summary>
80                 /// Count of the test cases ( 1 if this is a test case )
81                 /// </summary>
82                 int CountTestCases();
83
84                 /// <summary>
85                 /// For a test suite, the child tests or suites
86                 /// Null if this is not a test suite
87                 /// </summary>
88                 ArrayList Tests { get; }
89
90                 /// <summary>
91                 /// Categories available for this test
92                 /// </summary>
93                 IList Categories { get; }
94
95                 bool HasCategory( string name );
96
97                 bool HasCategory( IList names );
98
99                 /// <summary>
100                 /// True if this is a suite
101                 /// </summary>
102                 bool IsSuite { get; }
103
104                 /// <summary>
105                 /// True if this is a TestFixture
106                 /// </summary>
107                 bool IsFixture { get; }
108
109                 /// <summary>
110                 /// True if this is a TestCase
111                 /// </summary>
112                 bool IsTestCase { get; }
113
114                 /// <summary>
115                 /// Return the description field. 
116                 /// </summary>
117                 string Description { get; set; }
118
119                 /// <summary>
120                 /// True if this should only be run explicitly - that is
121                 /// if it was marked with the ExplicitAttribute.
122                 /// </summary>
123                 bool IsExplicit { get; set; }
124         }
125 }
126