// Copyright Keysight Technologies 2012-2019
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, you can obtain one at http://mozilla.org/MPL/2.0/.
using System;
namespace OpenTap
{
///
/// Specifies that a property is an output parameter. This property is expected to be set by
/// Also specifies a property that can be selected as an to other TestSteps.
///
[AttributeUsage(AttributeTargets.Property)]
public class OutputAttribute : Attribute
{
internal const OutputAvailability DefaultAvailability = OutputAvailability.AfterDefer;
/// Specifies the availability of the output. The default behavior is AfterDefer.
public OutputAvailability Availability { get; } = DefaultAvailability;
/// Creates an instance of OutputAttribute with default values.
public OutputAttribute() { }
/// Creates an instance of OutputAttribute with OutputAvailability specified.
public OutputAttribute(OutputAvailability availability = DefaultAvailability) => Availability = availability;
}
/// Specifies that a property of a step is also a result.
[AttributeUsage(AttributeTargets.Property)]
public class ResultAttribute : Attribute
{
}
/// Used to specify when an output value is available.
public enum OutputAvailability
{
/// The output value is available before the step has run. This can also be interpreted as always available.
BeforeRun,
/// After this step is completed. This may occur before or after AfterChildDefer.
AfterRun,
/// After defer of this step. This is the default for Outputs. This occurs after 'AfterChildDefer' and 'AfterRun'.
AfterDefer
}
}