// 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 } }