You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

250 lines
6.2 KiB
C#

using System;
using UnityEditor.TestTools.CodeCoverage.Analytics;
using UnityEngine;
namespace UnityEditor.TestTools.CodeCoverage
{
[Serializable]
internal class CoverageRunDataImplementation
{
[SerializeField]
private bool m_IsRunning = false;
[SerializeField]
private int m_TestRunCount = 0;
[SerializeField]
private string m_LastIgnoredSuite = string.Empty;
[SerializeField]
private bool m_IsRecording = false;
[SerializeField]
private bool m_IsRecordingPaused = false;
[SerializeField]
private bool m_ReportWasGenerated = false;
[SerializeField]
private bool m_IsGeneratingReport = false;
public void Start(bool setupEvents = true)
{
m_LastIgnoredSuite = string.Empty;
m_IsRunning = true;
m_TestRunCount = 0;
if (setupEvents)
{
CoverageAnalytics.instance.CurrentCoverageEvent.actionID = ActionID.DataOnly;
CoverageAnalytics.instance.CurrentCoverageEvent.coverageModeId = CoverageModeID.TestRunner;
CoverageAnalytics.instance.StartTimer();
CoverageEventData.instance.StartSession(SessionMode.TestRunner);
}
}
public void Stop()
{
m_LastIgnoredSuite = string.Empty;
m_IsRunning = false;
}
public void StartRecording(bool setupEvents = true)
{
Start(setupEvents);
IncrementTestRunCount();
m_IsRecording = true;
m_IsRecordingPaused = false;
if (setupEvents)
{
CoverageAnalytics.instance.CurrentCoverageEvent.coverageModeId = CoverageModeID.Recording;
CoverageEventData.instance.StartSession(SessionMode.Recording);
}
}
public void PauseRecording()
{
m_IsRecordingPaused = true;
}
public void UnpauseRecording()
{
m_IsRecordingPaused = false;
}
public void StopRecording()
{
Stop();
m_IsRecording = false;
m_IsRecordingPaused = false;
}
public bool isRunning
{
get { return m_IsRunning; }
}
public bool isRecording
{
get { return m_IsRecording; }
}
public bool isRecordingPaused
{
get { return m_IsRecordingPaused; }
}
public bool isGeneratingReport
{
get { return m_IsGeneratingReport; }
}
public bool reportWasGenerated
{
get { return m_ReportWasGenerated; }
}
public void ReportGenerationStart()
{
m_IsGeneratingReport = true;
m_ReportWasGenerated = false;
}
public void ReportGenerationEnd(bool success)
{
m_IsGeneratingReport = false;
m_ReportWasGenerated = success;
}
public void IncrementTestRunCount()
{
m_TestRunCount++;
}
public bool DidTestsRun()
{
return m_TestRunCount > 0;
}
public void SetLastIgnoredSuiteID(string id)
{
m_LastIgnoredSuite = id;
}
public bool HasLastIgnoredSuiteID()
{
return m_LastIgnoredSuite.Length > 0;
}
public string GetLastIgnoredSuiteID()
{
return m_LastIgnoredSuite;
}
}
[Serializable]
internal class CoverageRunData : ScriptableSingleton<CoverageRunData>
{
[SerializeField]
private CoverageRunDataImplementation m_CoverageRunDataImplementation = null;
protected CoverageRunData() : base()
{
m_CoverageRunDataImplementation = new CoverageRunDataImplementation();
}
public bool isRunning
{
get { return m_CoverageRunDataImplementation.isRunning; }
}
public bool isRecording
{
get { return m_CoverageRunDataImplementation.isRecording; }
}
public bool isRecordingPaused
{
get { return m_CoverageRunDataImplementation.isRecordingPaused; }
}
public bool reportWasGenerated
{
get { return m_CoverageRunDataImplementation.reportWasGenerated; }
}
public void IncrementTestRunCount()
{
m_CoverageRunDataImplementation.IncrementTestRunCount();
}
public bool DidTestsRun()
{
return m_CoverageRunDataImplementation.DidTestsRun();
}
public void SetLastIgnoredSuiteID(string id)
{
m_CoverageRunDataImplementation.SetLastIgnoredSuiteID(id);
}
public bool HasLastIgnoredSuiteID()
{
return m_CoverageRunDataImplementation.HasLastIgnoredSuiteID();
}
public string GetLastIgnoredSuiteID()
{
return m_CoverageRunDataImplementation.GetLastIgnoredSuiteID();
}
public void Start()
{
m_CoverageRunDataImplementation.Start();
}
public void Stop()
{
m_CoverageRunDataImplementation.Stop();
}
public void StartRecording()
{
m_CoverageRunDataImplementation.StartRecording();
}
public void StopRecording()
{
m_CoverageRunDataImplementation.StopRecording();
}
public void PauseRecording()
{
m_CoverageRunDataImplementation.PauseRecording();
Events.InvokeOnCoverageSessionPaused();
}
public void UnpauseRecording()
{
m_CoverageRunDataImplementation.UnpauseRecording();
Events.InvokeOnCoverageSessionUnpaused();
}
public bool isGeneratingReport
{
get { return m_CoverageRunDataImplementation.isGeneratingReport; }
}
public void ReportGenerationStart()
{
m_CoverageRunDataImplementation.ReportGenerationStart();
}
public void ReportGenerationEnd(bool success)
{
m_CoverageRunDataImplementation.ReportGenerationEnd(success);
}
}
}