File: SummaryVisitor.cs

package info (click to toggle)
mono 4.6.2.7+dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 778,148 kB
  • ctags: 914,052
  • sloc: cs: 5,779,509; xml: 2,773,713; ansic: 432,645; sh: 14,749; makefile: 12,361; perl: 2,488; python: 1,434; cpp: 849; asm: 531; sql: 95; sed: 16; php: 1
file content (133 lines) | stat: -rw-r--r-- 2,640 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// ****************************************************************
// This is free software licensed under the NUnit license. You
// may obtain a copy of the license as well as information regarding
// copyright ownership at http://nunit.org/?p=license&r=2.4.
// ****************************************************************

namespace NUnit.Util
{
	using System;
	using NUnit.Core;

	/// <summary>
	/// SummaryVisitor examines a set of results and calculates 
	/// summary statistics for the run. Note that a test run
	/// will only produce results for tests that were selected
	/// to be run. Curently, tests excluded by the Explicit 
	/// attribute produce a result, while those excluded by
	/// the Platform attribute do not. This anomaly will be
	/// corrected in a later version.
	/// </summary>
	public class SummaryVisitor : ResultVisitor
	{
		private int resultCount;
		private int failureCount;
		private int skipCount;
		private int ignoreCount;
		private int suitesNotRun;
		
		private double time;
		private string name;
		private bool initialized;

		public SummaryVisitor()
		{
			resultCount = 0;
			initialized = false;
		}

		public void Visit(TestCaseResult caseResult) 
		{
			SetNameandTime(caseResult.Name, caseResult.Time);

			switch( caseResult.RunState )
			{
				case RunState.Executed:
					resultCount++;
					if(caseResult.IsFailure)
						failureCount++;
					break;
				case RunState.Ignored:
					ignoreCount++;
					break;
				case RunState.Explicit:
				case RunState.NotRunnable:
				case RunState.Runnable:
				case RunState.Skipped:
				default:
					skipCount++;
					break;
			}
		}

		public void Visit(TestSuiteResult suiteResult) 
		{
			SetNameandTime(suiteResult.Name, suiteResult.Time);

			
			
			foreach (TestResult result in suiteResult.Results)
			{
				result.Accept(this);
			}
			
			if(!suiteResult.Executed)
				suitesNotRun++;
		}

		public double Time
		{
			get { return time; }
		}

		private void SetNameandTime(string name, double time)
		{
			if(!initialized)
			{
				this.time = time;
				this.name = name;
				initialized = true;
			}
		}

		public bool Success
		{
			get { return (failureCount == 0); }
		}

		public int ResultCount
		{
			get { return resultCount; }
		}

		public int FailureCount
		{
			get { return failureCount; }
		}

		public int SkipCount
		{
			get { return skipCount; }
		}

		public int IgnoreCount
		{
			get { return ignoreCount; }
		}

		public int TestsNotRun
		{
			get { return skipCount + ignoreCount; }
		}

		public int SuitesNotRun
		{
			get { return suitesNotRun; }
		}

		public string Name
		{
			get { return name; }
		}
	}
}