* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / nunit20 / core / TestCase.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         using System.Reflection;
35
36         /// <summary>
37         /// Summary description for TestCase.
38         /// </summary>
39         public abstract class TestCase : Test
40         {
41                 public TestCase( string path, string name ) : base( path, name ) { }
42
43                 public override int CountTestCases() 
44                 {
45                         return 1;
46                 }
47
48                 public override int CountTestCases(IFilter filter) 
49                 {
50                         if (Filter(filter))
51                                 return 1;
52
53                         return 0;
54                 }
55
56                 public override TestResult Run(EventListener listener, IFilter filter)
57                 {
58                         return Run( listener ); // Ignore filter for now
59                 }
60
61                 public override TestResult Run( EventListener listener )
62                 {
63                         TestCaseResult testResult = new TestCaseResult(this);
64
65                         listener.TestStarted(this);
66                         long startTime = DateTime.Now.Ticks;
67
68                         Run( testResult );
69
70                         testResult.AssertCount = NUnit.Framework.Assert.Counter;
71
72                         long stopTime = DateTime.Now.Ticks;
73                         double time = ((double)(stopTime - startTime)) / (double)TimeSpan.TicksPerSecond;
74                         testResult.Time = time;
75
76                         listener.TestFinished(testResult);
77                         return testResult;
78                 }
79
80                 public override bool IsSuite
81                 {
82                         get { return false; }
83                 }
84
85                 public override bool IsFixture
86                 {
87                         get { return false; }
88                 }
89
90                 public override bool IsTestCase
91                 {
92                         get { return true; }
93                 }
94
95                 public override ArrayList Tests
96                 {
97                         get { return null; }
98                 }
99
100                 public override bool Filter(IFilter filter) 
101                 {
102                         return filter.Pass(this);
103                 }
104
105                 public abstract void Run(TestCaseResult result);
106         }
107 }