namespace OpenTap
{
/// This type of mixin gives access to process an output just before it gets assigned.
public interface IAssignOutputMixin : IMixin
{
/// Invoked just before the output is assigned.
void OnAssigningOutput(AssignOutputEventArgs args);
}
class AssignOutputEvent: MixinEvent
{
public static object Invoke(ITestStepParent step, object value, IMemberData member) =>
Invoke(step, (v, args) => v.OnAssigningOutput(args), new AssignOutputEventArgs(step, value, member)).Value;
}
/// Event args for ITestStepPostRun mixin.
public sealed class AssignOutputEventArgs
{
/// The step for which the event happens.
public ITestStepParent TestStep { get; }
/// The member that the output is assigned to.
public IMemberData Member { get; }
/// The value that is going to be assigned. This can be overwritten.
public object Value { get; set; }
internal AssignOutputEventArgs(ITestStepParent step, object value, IMemberData member) => (TestStep, Value, Member) = (step, value, member);
}
}