Looking for c# Keywords? Try Ask4Keywords

C# Language Тестирование флажков в стиле enum с побитовой логикой


пример

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

[Flags]
enum FlagsEnum
{
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option2And3 = Option2 | Option3;

    Default = Option1 | Option3,
}

Значение по Default представляет собой комбинацию двух других, объединенных с побитовым ИЛИ. Поэтому для проверки наличия флага нам нужно использовать побитовое И.

var value = FlagsEnum.Default;

bool isOption2And3Set = (value & FlagsEnum.Option2And3) == FlagsEnum.Option2And3;

Assert.True(isOption2And3Set);