Правильно ли выполняется проверка на то что флаги совпадают?

160
25 февраля 2019, 23:20

Имеется E'нумератор помеченный аттрибутом [Flags]:

[Flags]
public enum InitFlags : uint
{
    Timer = 0x00000001u,
    Audio = 0x00000010u,
    Video = 0x00000020u,
    Joystick = 0x00000200u,
    Haptic = 0x00001000u,
    GameController = 0x00002000u,
    Events = 0x00004000u,
    [Obsolete("Compatibility; this flag is ignored.", false)]
    NoParachute = 0x00100000u,
    Everything = Timer | Audio | Video | Joystick | Haptic | GameController | Events
}

Пытаюсь выполнить тест на все что было инициализировано:

[TestMethod]
public void WasInit_Test()
{
    List<InitFlags> flags = new List<InitFlags>
    {
        InitFlags.Timer,
        InitFlags.Audio,
        InitFlags.Video,
        InitFlags.Joystick,
        InitFlags.Haptic,
        InitFlags.GameController,
        InitFlags.Events,
        InitFlags.Everything
    };
    foreach (InitFlags initFlag in flags.SkipWhile(initFlags =>
        initFlags == InitFlags.Everything || initFlags == InitFlags.NoParachute))
    {
        Assert.AreEqual(0, _initSubSystem(initFlag));
        if (initFlag == InitFlags.Everything)
        {
            foreach (InitFlags initializedFlag in flags.SkipWhile(initFlags =>
                initFlags == InitFlags.Everything || initFlags == InitFlags.NoParachute))
                Assert.IsTrue((initializedFlag & initFlag) == initializedFlag);
        }
        Assert.IsTrue(_wasInit.Invoke(initFlag) == initFlag);
        _quitSubSystem(initFlag);
    }
}

Тест завершается успехом, но я не сильно разбираюсь с работой флагов.

_wasInit это делегат на неуправляемую процедуру, в ее правильной работе можно не сомневаться.

READ ALSO
Сборка проекта для .NET и .NET Core

Сборка проекта для .NET и .NET Core

При написании библиотеки, код которой валиден как дляNET Framework, так и для

170
Внедрение через конструктор

Внедрение через конструктор

Изучаю внедрение зависимостей, появился вопросМожет ли быть такое что два класса зависят друг от друга как в примере ниже

157
Для чего нужен делегат Action

Для чего нужен делегат Action

Что есть делегат Action и когда нужно его использовать?

153