public void T01_Flags_02_Remove() { TestHelpers.CatchUnexpected(() => { TestEnum t = TestEnum.Four | TestEnum.Eight | TestEnum.Two; Assert.True(t.HasFlag(TestEnum.None)); Assert.True(t.HasFlag(TestEnum.Four)); Assert.True(t.HasFlag(TestEnum.Eight)); Assert.True(t.HasFlag(TestEnum.Two)); t = t.RemoveFlag(TestEnum.Eight); t = t.RemoveFlag(TestEnum.Four); Assert.True(t.HasFlag(TestEnum.None)); Assert.False(t.HasFlag(TestEnum.Four)); Assert.False(t.HasFlag(TestEnum.Eight)); Assert.True(t.HasFlag(TestEnum.Two)); t = t.RemoveFlag(TestEnum.Two); Assert.False(t.HasFlag(TestEnum.Two)); t = t.RemoveFlag(TestEnum.None); // None is 0 so it will always be there even if you call remove Assert.True(t.HasFlag(TestEnum.None)); }); }