public void Exception_is_thrown_for_method_that_is_not_static()
        {
            var element = new ConfigLoadedHandlerElement(1)
            {
                TypeName = GetType().AssemblyQualifiedName, MethodName = "MakeUp"
            };

            Assert.Equal(
                Strings.ConfigEventBadMethod("MakeUp", GetType().AssemblyQualifiedName),
                Assert.Throws <InvalidOperationException>(() => element.CreateHandlerDelegate()).Message);
        }
        public void Exception_is_thrown_if_type_could_not_be_loaded()
        {
            var element = new ConfigLoadedHandlerElement(1)
            {
                TypeName = "HanginRound", MethodName = "Perfect"
            };

            Assert.Equal(
                Strings.ConfigEventTypeNotFound("HanginRound"),
                Assert.Throws <InvalidOperationException>(() => element.CreateHandlerDelegate()).Message);
        }
        public void Exception_is_thrown_for_method_that_does_not_match_expected_signature()
        {
            var element = new ConfigLoadedHandlerElement(1)
            {
                TypeName = GetType().AssemblyQualifiedName, MethodName = "WalkOnTheWildSide"
            };

            Assert.Equal(
                Strings.ConfigEventBadMethod("WalkOnTheWildSide", GetType().AssemblyQualifiedName),
                Assert.Throws <InvalidOperationException>(() => element.CreateHandlerDelegate()).Message);
        }
        public void Exception_is_thrown_for_method_that_cannot_be_bound_to_delegate_type()
        {
            var element = new ConfigLoadedHandlerElement(1)
            {
                TypeName = GetType().AssemblyQualifiedName, MethodName = "WagonWheel"
            };

            var exception = Assert.Throws <InvalidOperationException>(() => element.CreateHandlerDelegate());

            Assert.Equal(Strings.ConfigEventCannotBind("WagonWheel", GetType().AssemblyQualifiedName), exception.Message);
            Assert.NotNull(exception.InnerException);
        }