| using System; | |
| using UnityEditor.TestTools.CodeCoverage.Analytics; | |
| namespace UnityEditor.TestTools.CodeCoverage | |
| { | |
| /// <summary> | |
| /// Events invoked during a code coverage session. A code coverage session is the period between starting and finishing capturing code coverage data. | |
| /// </summary> | |
| /// <example> | |
| /// In the following example we create event handler methods which subscribe to the <see cref="Events.onCoverageSessionStarted"/>, <see cref="Events.onCoverageSessionFinished"/>, <see cref="Events.onCoverageSessionPaused"/> and <see cref="Events.onCoverageSessionUnpaused"/> events. | |
| /// We use the <see href="https://docs.unity3d.com/ScriptReference/InitializeOnLoadAttribute.html">InitializeOnLoad</see> attribute to make sure that they will resubscribe on Domain Reload, when we enter Play Mode for example. | |
| /// <code> | |
| /// using UnityEngine; | |
| /// using UnityEditor; | |
| /// using UnityEditor.TestTools.CodeCoverage; | |
| /// | |
| /// [InitializeOnLoad] | |
| /// public class CoverageSessionListener | |
| /// { | |
| /// static CoverageSessionListener() | |
| /// { | |
| /// Events.onCoverageSessionStarted += OnSessionStarted; | |
| /// Events.onCoverageSessionFinished += OnSessionFinished; | |
| /// Events.onCoverageSessionPaused += OnSessionPaused; | |
| /// Events.onCoverageSessionUnpaused += OnSessionUnpaused; | |
| /// } | |
| /// | |
| /// static void OnSessionStarted(SessionEventInfo args) | |
| /// { | |
| /// Debug.Log($"{args.SessionMode} Code Coverage Session Started"); | |
| /// } | |
| /// static void OnSessionFinished(SessionEventInfo args) | |
| /// { | |
| /// Debug.Log($"{args.SessionMode} Code Coverage Session Finished"); | |
| /// | |
| /// string paths = string.Empty; | |
| /// foreach (string path in args.SessionResultPaths) | |
| /// paths = string.Concat(paths, "\n", path); | |
| /// | |
| /// Debug.Log($"Code Coverage Results were saved in: {paths}"); | |
| /// } | |
| /// | |
| /// static void OnSessionPaused(SessionEventInfo args) | |
| /// { | |
| /// Debug.Log($"{args.SessionMode} Code Coverage Session Paused"); | |
| /// } | |
| /// | |
| /// static void OnSessionUnpaused(SessionEventInfo args) | |
| /// { | |
| /// Debug.Log($"{args.SessionMode} Code Coverage Session Unpaused"); | |
| /// } | |
| /// } | |
| /// </code> | |
| /// </example> | |
| public static class Events | |
| { | |
| /// <summary> | |
| /// This event is invoked when a code coverage session is started. | |
| /// </summary> | |
| public static event Action<SessionEventInfo> onCoverageSessionStarted; | |
| /// <summary> | |
| /// This event is invoked when a code coverage session is finished. | |
| /// </summary> | |
| public static event Action<SessionEventInfo> onCoverageSessionFinished; | |
| /// <summary> | |
| /// This event is invoked when a code coverage session is paused. | |
| /// </summary> | |
| public static event Action<SessionEventInfo> onCoverageSessionPaused; | |
| /// <summary> | |
| /// This event is invoked when a code coverage session is unpaused. | |
| /// </summary> | |
| public static event Action<SessionEventInfo> onCoverageSessionUnpaused; | |
| internal static void InvokeOnCoverageSessionStarted() | |
| { | |
| if (onCoverageSessionStarted != null) | |
| { | |
| CoverageAnalytics.instance.CurrentCoverageEvent.useEvent_onCoverageSessionStarted = true; | |
| onCoverageSessionStarted.Invoke(CoverageEventData.instance.GetCoverageSessionInfo()); | |
| } | |
| } | |
| internal static void InvokeOnCoverageSessionFinished() | |
| { | |
| if (onCoverageSessionFinished != null) | |
| { | |
| CoverageAnalytics.instance.CurrentCoverageEvent.useEvent_onCoverageSessionFinished = true; | |
| onCoverageSessionFinished.Invoke(CoverageEventData.instance.GetCoverageSessionInfo()); | |
| } | |
| } | |
| internal static void InvokeOnCoverageSessionPaused() | |
| { | |
| if (onCoverageSessionPaused != null) | |
| { | |
| CoverageAnalytics.instance.CurrentCoverageEvent.useEvent_onCoverageSessionPaused = true; | |
| onCoverageSessionPaused.Invoke(CoverageEventData.instance.GetCoverageSessionInfo()); | |
| } | |
| } | |
| internal static void InvokeOnCoverageSessionUnpaused() | |
| { | |
| if (onCoverageSessionUnpaused != null) | |
| { | |
| CoverageAnalytics.instance.CurrentCoverageEvent.useEvent_onCoverageSessionUnpaused = true; | |
| onCoverageSessionUnpaused.Invoke(CoverageEventData.instance.GetCoverageSessionInfo()); | |
| } | |
| } | |
| } | |
| } | |