// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System;
namespace Microsoft.TestCommon
{
///
/// An flags enum that can be used to indicate different variations of a given
/// instance.
///
[Flags]
public enum TestDataVariations
{
///
/// An individual instance of a given type.
///
AsInstance = 0x1,
///
/// An individual instance of a type that derives from a given type.
///
AsDerivedType = 0x2,
///
/// An individual instance of a given type that has a property value
/// that is a known type of the declared property type.
///
AsKnownType = 0x4,
///
/// A instance of a given type. Only applies to
/// instances of .
///
AsNullable = 0x8,
///
/// An instance of a of a given type.
///
AsList = 0x10,
///
/// An instance of a array of the type.
///
AsArray = 0x20,
///
/// An instance of an of a given type.
///
AsIEnumerable = 0x40,
///
/// An instance of an of a given type.
///
AsIQueryable = 0x80,
///
/// An instance of a DataContract type in which a given type is a member.
///
AsDataMember = 0x100,
///
/// An instance of a type in which a given type is decorated with a
/// .
///
AsXmlElementProperty = 0x200,
///
/// All of the flags for single instance variations of a given type.
///
AllSingleInstances = AsInstance | AsDerivedType | AsKnownType | AsNullable,
///
/// All of the flags for collection variations of a given type.
///
AllCollections = AsList | AsArray | AsIEnumerable | AsIQueryable,
///
/// All of the flags for variations in which a given type is a property on another type.
///
AllProperties = AsDataMember | AsXmlElementProperty,
///
/// All of the flags for interface collection variations of a given type.
///
AllInterfaces = AsIEnumerable | AsIQueryable,
///
/// All of the flags except for the interface collection variations of a given type.
///
AllNonInterfaces = All & ~AllInterfaces,
///
/// All of the flags for all of the variations of a given type.
///
All = AllSingleInstances | AllCollections | AllProperties
}
}