//Copyright 2012-2019 Keysight Technologies // //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. //You may obtain a copy of the License at // //http://www.apache.org/licenses/LICENSE-2.0 // //Unless required by applicable law or agreed to in writing, software //distributed under the License is distributed on an "AS IS" BASIS, //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //See the License for the specific language governing permissions and //limitations under the License. using System; using OpenTap; namespace OpenTap.Plugins.PluginDevelopment { [Display("Flags Attribute Example", Groups: new[] { "Examples", "Plugin Development", "Attributes" }, Description: "Shows examples of how to use the Flags attribute.")] public class FlagsAttributeExample : TestStep { // The enum values are used as a bitmask to define enabled and disabled. [Flags] public enum FixturePositions { // Display names can be added to individual enum values. None = 0, [Display("My Fixture Position A")] A = 1, B = 2, [Display("A and B", "Shortcut for selecting A and B")] AB = A|B, C = 4, [Display("A and C", "Shortcut for selecting A and C")] AC = A|C, D = 8, [Display("B and D", "Shortcut for selecting B and D")] BD = B|D, [Display("My Fixture Position E")] E = 16, F = 32, G = 64 } // To use the flags create a property of the enum type. [Display("Fixture Positions", "A setting with potentially multiple selections.")] public FixturePositions MyFixturePositions { get; set; } public FlagsAttributeExample() { // The '|' operator can be used to define multiple selections MyFixturePositions = FixturePositions.A | FixturePositions.B; } public override void Run() { // Use the HasFlag method to check which flags have been selected. if (MyFixturePositions.HasFlag(FixturePositions.A)) { UpgradeVerdict(Verdict.Pass); } } } }