2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mcs / nunit20 / core / TestSuiteResult.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         ///             TestSuiteResult
37         /// </summary>
38         /// 
39         [Serializable]
40         public class TestSuiteResult : TestResult
41         {
42                 private ArrayList results = new ArrayList();
43                 
44                 public TestSuiteResult(ITest test, string name) : base(test, name)
45                 {
46                         Executed = false;
47                 }
48
49                 public void AddResult(TestResult result) 
50                 {
51                         results.Add(result);
52                 }
53
54                 public override bool IsSuccess
55                 {
56                         get 
57                         {
58                                 bool result = true;
59                                 foreach(TestResult testResult in results)
60                                         result &= testResult.IsSuccess;
61                                 return result;
62                         }
63                 }
64
65                 /// <summary>
66                 /// A suite is considered as failing if it is marked as a failure - usually
67                 /// because TestFixtureSetUp or TestFixtureTearDown failed - or if one of the
68                 /// tests it contains failed. 
69                 /// </summary>
70                 public override bool IsFailure
71                 {
72                         get 
73                         {
74                                 if ( base.IsFailure )
75                                         return true;
76
77                                 foreach(TestResult testResult in results)
78                                         if ( testResult.IsFailure )
79                                                 return true;
80
81                                 return false;
82                         }
83                 }
84
85                 public override bool AllTestsExecuted
86                 {
87                         get
88                         {
89                                 if (!this.Executed)
90                                         return false;
91
92                                 foreach( TestResult testResult in results )
93                                 {
94                                         if ( !testResult.AllTestsExecuted )
95                                                 return false;
96                                 }
97                                 return true;
98                         }
99                 }
100
101                 public IList Results
102                 {
103                         get { return results; }
104                 }
105
106                 public override void Accept(ResultVisitor visitor) 
107                 {
108                         visitor.Visit(this);
109                 }
110         }
111 }