Fluent Assertions have several ways to compare enums.
The basic ones, Be and HaveFlag, just calls directly into Enum.Equals and Enum.HasFlag.
| C# |
Copy Code |
|---|---|
enum MyEnum { One = 1, Two = 2, Three = 3}
myEnum = MyEnum.One;
myEnum.Should().Be(MyEnum.One);
myEnum.Should().NotBe(MyEnum.Two);
myEnum.Should().BeOneOf(MyEnum.One, MyEnum.Two);
regexOptions.Should().HaveFlag(RegexOptions.Global);
regexOptions.Should().NotHaveFlag(RegexOptions.CaseInsensitive); | |
If you want to compare enums of different types, you can use HaveSameValueAs or HaveSameNameAs depending on how you define equality for different enums.
| C# |
Copy Code |
|---|---|
enum SameNameEnum { One = 11 } enum SameValueEnum { OneOne = 1 } MyEnum.One.Should().HaveSameNameAs(SameNameEnum.One); MyEnum.One.Should().HaveSameValueAs(SameValueEnum.OneOne); MyEnum.One.Should().NotHaveSameNameAs(SameValueEnum.OneOne); MyEnum.One.Should().NotHaveSameValueAs(SameNameEnum.One); | |
Lastly, if you want to verify that an enum has a specific integral value, you can use HaveValue.
| C# |
Copy Code |
|---|---|
MyEnum.One.Should().HaveValue(1); MyEnum.One.Should().NotHaveValue(2); | |
| C# |
Copy Code |
|---|---|
var myEnum = (MyEnum)1;
myEnum.Should().BeDefined();
myEnum = (MyEnum)99;
myEnum.Should().NotBeDefined(); | |