Пример #1
0
        public void When_a_InvalidEnumArgumentException_is_thrown_with_a_message()
        {
            // Arrange.
            IEnsureArg <MyTestEnum> ensureArg = Substitute.For <IEnsureArg <MyTestEnum> >();

            ensureArg.Value.Returns((MyTestEnum)(-1));
            ensureArg.ArgumentName.Returns("myEnum");

            // Act.
            Action action = () =>
                            ensureArg.ThrowInvalidEnumArgumentException("my custom message for an enum of type {enumType.Name}");

            // Assert.
            action.ShouldThrow <InvalidEnumArgumentException>()
            .And
            .Message.Should().Be("my custom message for an enum of type MyTestEnum");
        }
Пример #2
0
        public static IEnsureArg <TEnum> IsValidEnumValue <TEnum>(
            this IEnsureArg <TEnum> ensureArg,
            string exceptionMessage = null)
            where TEnum : struct, IComparable, IFormattable // Closest we can get to System.Enum and be CLSCompliant.
        {
            ensureArg.ValidateEnsureArgIsNotNull();

            Type enumType = ensureArg.Value.GetType();

            if (!enumType.IsEnum)
            {
                throw new ArgumentException("TEnum must be an enumerated type", "TEnum");
            }

            if (!Enum.IsDefined(enumType, ensureArg.Value))
            {
                ensureArg.ThrowInvalidEnumArgumentException(exceptionMessage);
            }

            return(ensureArg);
        }