using System;
using System.Collections;
namespace UnityEngine.TestTools
{
    /// 
    /// In an Edit Mode test, you can use `IEditModeTestYieldInstruction` interface to implement your own instruction. There are also a couple of commonly used implementations available:
    /// - 
    /// - 
    /// - 
    /// - 
    /// 
    /// 
    /// 
    /// ()) as VideoPlayer;
    ///
    ///    videoPlayer.playOnAwake = false;
    ///
    ///    yield return new EnterPlayMode();
    ///
    ///    var videoPlayerGO = GameObject.Find(m_VideoPlayerPrefab.name);
    ///
    ///    Assert.IsFalse(videoPlayerGO.GetComponent().isPlaying);
    ///
    ///    yield return new ExitPlayMode();
    ///
    ///    Object.DestroyImmediate(GameObject.Find(m_VideoPlayerPrefab.name));
    /// }
    /// ]]>
    /// 
    /// 
    public interface IEditModeTestYieldInstruction
    {
        /// 
        /// Whether or not the instruction expects a domain reload to occur.
        /// 
        bool ExpectDomainReload { get; }
        /// 
        /// Whether or not the instruction expects the Unity Editor to be in **Play Mode**.
        /// 
        bool ExpectedPlaymodeState { get; }
        /// 
        ///  Used to define multi-frame operations performed when instantiating a yield instruction.
        /// 
        /// Enumerable collection of operations to perform.
        IEnumerator Perform();
    }
}