using NUnit.Framework.Internal;
using NUnit.Framework.Internal.Commands;
namespace UnityEngine.TestRunner.NUnitExtensions.Runner
{
///
/// Implement this interface to wrap test commands with custom behavior.
///
public interface ITestCommandWrapper
{
///
/// The order in which this wrapper is applied relative to other wrappers.
/// Lower values are applied first (closer to the test command), higher values are applied last (outer wrapper).
/// Outer wrappers execute their pre-test logic first and post-test logic last.
///
int Order { get; }
///
/// Determines whether the wrapper should be applied to the given test method.
///
/// The test method to evaluate.
/// True if the wrapper should wrap this test; otherwise, false.
bool ShouldWrap(TestMethod test);
///
/// Wraps the given test command with custom behavior.
///
/// The test command to wrap.
/// A new test command that wraps the original command.
TestCommand Wrap(TestCommand command);
}
}