public void argument_is_valid_enum_does_not_throw_if_valid_values_are_specified_and_enumeration_values_are_valid()
        {
            var validValues = new DayOfWeek[] { DayOfWeek.Friday, DayOfWeek.Sunday, DayOfWeek.Saturday };

            Ensure.ArgumentIsValidEnum(DayOfWeek.Friday, "test", validValues);
            Ensure.ArgumentIsValidEnum(DayOfWeek.Sunday, "test", validValues);
            Ensure.ArgumentIsValidEnum(DayOfWeek.Saturday, "test", validValues);
        }
        public void argument_is_valid_enum_works_for_byte_enumeration()
        {
            Ensure.ArgumentIsValidEnum(ByteEnum.One, "test");
            Ensure.ArgumentIsValidEnum(ByteEnum.Two, "test");
            Ensure.ArgumentIsValidEnum(ByteEnum.Three, "test");

            var ex = Assert.Throws <ArgumentException>(() => Ensure.ArgumentIsValidEnum((ByteEnum)10, "test"));

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Enum value '10' is not defined for enumeration 'Genesis.Ensure.UnitTests.EnsureFixture+ByteEnum'.{0}Parameter name: test", Environment.NewLine), ex.Message);
        }
        public void argument_is_valid_enum_does_not_throw_if_flag_enumeration_values_are_valid()
        {
            var validValues = new FlagsEnum[] { FlagsEnum.One, FlagsEnum.Two, FlagsEnum.Four, FlagsEnum.None };

            Ensure.ArgumentIsValidEnum(FlagsEnum.None, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.One, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.Two, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.Four, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Two, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Four, "test", validValues);
            Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Two | FlagsEnum.Four, "test", validValues);
        }
 public void argument_is_valid_enum_does_not_throw_if_enumeration_flags_are_valid()
 {
     Ensure.ArgumentIsValidEnum(FlagsEnum.None, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.One, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.Two, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.Three, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.Four, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Two, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.Two | FlagsEnum.Four, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Two | FlagsEnum.Three, "test");
     Ensure.ArgumentIsValidEnum(FlagsEnum.One | FlagsEnum.Two | FlagsEnum.Three | FlagsEnum.Four, "test");
 }
        public void argument_is_valid_enum_throws_if_valid_values_are_provided_but_the_enumeration_value_is_not_a_valid_enumeration_value()
        {
            var ex = Assert.Throws <ArgumentException>(() => Ensure.ArgumentIsValidEnum((DayOfWeek)69, "test", DayOfWeek.Friday, DayOfWeek.Sunday));

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Enum value '69' is not defined for enumeration 'System.DayOfWeek'.{0}Parameter name: test", Environment.NewLine), ex.Message);
        }
        public void argument_is_valid_enum_throws_if_value_is_not_a_valid_value()
        {
            var ex = Assert.Throws <ArgumentException>(() => Ensure.ArgumentIsValidEnum(DayOfWeek.Monday, "test", DayOfWeek.Friday, DayOfWeek.Sunday));

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Enum value 'Monday' is defined for enumeration 'System.DayOfWeek' but it is not permitted in this context.{0}Parameter name: test", Environment.NewLine), ex.Message);
        }
        public void argument_is_valid_enum_throws_if_zero_flag_enumeration_value_is_passed_in_but_it_is_not_a_valid_value()
        {
            var ex = Assert.Throws <ArgumentException>(() => Ensure.ArgumentIsValidEnum(FlagsEnum.None, "test", FlagsEnum.One));

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Enum value 'None' is not valid for flags enumeration 'Genesis.Ensure.UnitTests.EnsureFixture+FlagsEnum'.{0}Parameter name: test", Environment.NewLine), ex.Message);
        }
 public void argument_is_valid_enum_throws_if_no_valid_values_are_provided()
 {
     Assert.Throws <ArgumentNullException>(() => Ensure.ArgumentIsValidEnum(DayOfWeek.Monday, "test", null));
 }
 public void argument_is_valid_enum_does_not_throw_if_enumeration_values_are_valid()
 {
     Ensure.ArgumentIsValidEnum(DayOfWeek.Monday, "test");
     Ensure.ArgumentIsValidEnum((DayOfWeek)3, "test");
 }
        public void argument_is_valid_enum_throws_if_given_invalid_flag_enumeration_value()
        {
            var ex = Assert.Throws <ArgumentException>(() => Ensure.ArgumentIsValidEnum((FlagsEnum)68, "test"));

            Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Enum value '68' is not valid for flags enumeration 'Genesis.Ensure.UnitTests.EnsureFixture+FlagsEnum'.{0}Parameter name: test", Environment.NewLine), ex.Message);
        }