public void AttributeTest(Tester enumValue, bool hasMarker1, bool hasMarker2) { Assert.Equal(enumValue.HasAttribute <Tester, MarkerOneAttribute>(), hasMarker1); if (hasMarker1) { AssertContains <MarkerOneAttribute>(); } else { AssertDoesNotContain <MarkerOneAttribute>(); } Assert.Equal(enumValue.HasAttribute <Tester, MarkerTwoAttribute>(), hasMarker2); if (hasMarker2) { AssertContains <MarkerTwoAttribute>(); } else { AssertDoesNotContain <MarkerTwoAttribute>(); } bool EnumValueMatches(Tester value) => value == enumValue; void AssertContains <TAttribute>() where TAttribute : Attribute => Assert.Contains(EnumExtensions.EnumValuesWithAttribute <Tester, TAttribute>(), EnumValueMatches); void AssertDoesNotContain <TAttribute>() where TAttribute : Attribute => Assert.DoesNotContain(EnumExtensions.EnumValuesWithAttribute <Tester, TAttribute>(), EnumValueMatches); }