// ****************************************************************
// Based on nUnit 2.6.2 (http://www.nunit.org/)
// ****************************************************************
using System;
using System.Collections.Generic;
using UnityEngine.TestTools.TestRunner.GUI;
namespace UnityEditor.TestTools.TestRunner.GUI
{
///
/// Summary description for ResultSummarizer.
///
internal class ResultSummarizer
{
private int m_ErrorCount = -1;
private int m_FailureCount;
private int m_IgnoreCount = -1;
private int m_InconclusiveCount = -1;
private int m_NotRunnable = -1;
private int m_ResultCount;
private int m_SkipCount;
private int m_SuccessCount;
private int m_TestsRun;
private TimeSpan m_Duration = TimeSpan.FromSeconds(0);
public ResultSummarizer(IEnumerable results)
{
foreach (var result in results)
Summarize(result);
}
public bool success
{
get { return m_FailureCount == 0; }
}
///
/// Returns the number of test cases for which results
/// have been summarized. Any tests excluded by use of
/// Category or Explicit attributes are not counted.
///
public int ResultCount
{
get { return m_ResultCount; }
}
///
/// Returns the number of test cases actually run, which
/// is the same as ResultCount, less any Skipped, Ignored
/// or NonRunnable tests.
///
public int TestsRun
{
get { return m_TestsRun; }
}
///
/// Returns the number of tests that passed
///
public int Passed
{
get { return m_SuccessCount; }
}
///
/// Returns the number of test cases that had an error.
///
public int errors
{
get { return m_ErrorCount; }
}
///
/// Returns the number of test cases that failed.
///
public int failures
{
get { return m_FailureCount; }
}
///
/// Returns the number of test cases that failed.
///
public int inconclusive
{
get { return m_InconclusiveCount; }
}
///
/// Returns the number of test cases that were not runnable
/// due to errors in the signature of the class or method.
/// Such tests are also counted as Errors.
///
public int notRunnable
{
get { return m_NotRunnable; }
}
///
/// Returns the number of test cases that were skipped.
///
public int Skipped
{
get { return m_SkipCount; }
}
public int ignored
{
get { return m_IgnoreCount; }
}
public double duration
{
get { return m_Duration.TotalSeconds; }
}
public int testsNotRun
{
get { return m_SkipCount + m_IgnoreCount + m_NotRunnable; }
}
public void Summarize(TestRunnerResult result)
{
m_Duration += TimeSpan.FromSeconds(result.duration);
m_ResultCount++;
if (result.resultStatus != TestRunnerResult.ResultStatus.NotRun)
{
//TODO implement missing features
// if(result.IsIgnored)
// {
// m_IgnoreCount++;
// return;
// }
m_SkipCount++;
return;
}
switch (result.resultStatus)
{
case TestRunnerResult.ResultStatus.Passed:
m_SuccessCount++;
m_TestsRun++;
break;
case TestRunnerResult.ResultStatus.Failed:
m_FailureCount++;
m_TestsRun++;
break;
//TODO implement missing features
// case TestResultState.Error:
// case TestResultState.Cancelled:
// m_ErrorCount++;
// m_TestsRun++;
// break;
// case TestResultState.Inconclusive:
// m_InconclusiveCount++;
// m_TestsRun++;
// break;
// case TestResultState.NotRunnable:
// m_NotRunnable++;
// // errorCount++;
// break;
// case TestResultState.Ignored:
// m_IgnoreCount++;
// break;
default:
m_SkipCount++;
break;
}
}
}
}