コード例 #1
0
        public void ExceptionThrownWhileResolvingAParameterIsBubbledUpAndTheCurrentOperationIsNotCleared()
        {
            var exception      = new ArgumentException();
            var resolverPolicy = new ExceptionThrowingTestResolverPolicy(exception);

            MockBuilderContext context = GetContext();
            var key = new NamedTypeBuildKey <ObjectWithSingleInjectionMethod>();

            context.BuildKey = key;
            context.Existing = new ObjectWithSingleInjectionMethod();

            context.Policies.Set <IMethodSelectorPolicy>(
                new TestSingleArgumentMethodSelectorPolicy <ObjectWithSingleInjectionMethod>(resolverPolicy),
                key);

            IBuildPlanPolicy plan = GetPlanCreator(context).CreatePlan(context, key);

            try
            {
                plan.BuildUp(context);
                Assert.Fail("failure expected");
            }
            catch (Exception e)
            {
                Assert.AreSame(exception, e);
                var operation = (MethodArgumentResolveOperation)context.CurrentOperation;
                Assert.IsNotNull(operation);

                Assert.AreSame(typeof(ObjectWithSingleInjectionMethod), operation.TypeBeingConstructed);
                Assert.AreEqual("parameter", operation.ParameterName);
            }
        }
コード例 #2
0
        public void ExceptionThrownWhileResolvingAParameterIsBubbledUpAndTheCurrentOperationIsNotCleared()
        {
            var exception      = new ArgumentException();
            var resolverPolicy = new ExceptionThrowingTestResolverPolicy(exception);

            MockBuilderContext context = GetContext();

            context.BuildKey = new NamedTypeBuildKey(typeof(ConstructorInjectionTestClass));

            context.Policies.Set <IConstructorSelectorPolicy>(
                new TestSingleArgumentConstructorSelectorPolicy <ConstructorInjectionTestClass>(resolverPolicy),
                context.BuildKey);

            IBuildPlanPolicy plan = GetPlanCreator(context).CreatePlan(context, context.BuildKey);

            try
            {
                plan.BuildUp(context);
                Assert.True(false, string.Format("failure expected"));
            }
            catch (Exception e)
            {
                Assert.Same(exception, e);

                var operation = (ConstructorArgumentResolveOperation)context.CurrentOperation;
                Assert.NotNull(operation);

                Assert.Same(typeof(ConstructorInjectionTestClass), operation.TypeBeingConstructed);
                Assert.Equal("parameter", operation.ParameterName);
            }
        }
コード例 #3
0
        public void ExceptionThrownWhileResolvingAPropertyValueIsBubbledUpAndTheCurrentOperationIsNotCleared()
        {
            var exception      = new ArgumentException();
            var resolverPolicy = new ExceptionThrowingTestResolverPolicy(exception);

            MockBuilderContext context = GetContext();
            var key = new NamedTypeBuildKey <OnePropertyClass>();

            context.BuildKey = key;
            context.Existing = new OnePropertyClass();

            context.Policies.Set <IPropertySelectorPolicy>(
                new TestSinglePropertySelectorPolicy <OnePropertyClass>(resolverPolicy),
                key);

            IBuildPlanPolicy plan = GetPlanCreator(context).CreatePlan(context, key);

            try
            {
                plan.BuildUp(context);
                Assert.Fail("failure expected");
            }
            catch (Exception e)
            {
                Assert.AreSame(exception, e);

                var operation = (ResolvingPropertyValueOperation)context.CurrentOperation;
                Assert.IsNotNull(operation);
                Assert.AreSame(typeof(OnePropertyClass), operation.TypeBeingConstructed);
                Assert.AreEqual("Key", operation.PropertyName);
            }
        }
コード例 #4
0
        public void ExceptionThrownWhileResolvingAParameterIsBubbledUpAndTheCurrentOperationIsNotCleared()
        {
            var resolverPolicy = new ExceptionThrowingTestResolverPolicy(new ArgumentException());

            MockBuilderContext context = GetContext();

            context.BuildKey = new NamedTypeBuildKey(typeof(ConstructorInjectionTestClass));

            context.Policies.Set <IConstructorSelectorPolicy>(
                new TestSingleArgumentConstructorSelectorPolicy <ConstructorInjectionTestClass>(resolverPolicy),
                context.BuildKey);

            IBuildPlanPolicy plan = GetPlanCreator(context).CreatePlan(context, context.BuildKey);
            var exception         = Assert.Throws <ArgumentException>(() => plan.BuildUp(context));
            var operation         = context.CurrentOperation as ConstructorArgumentResolveOperation;

            Assert.NotNull(operation);
            Assert.IsType <ConstructorInjectionTestClass>(operation.TypeBeingConstructed);
            Assert.Equal("parameter", operation.ParameterName);
        }
コード例 #5
0
        public void ExceptionThrownWhileResolvingAPropertyValueIsBubbledUpAndTheCurrentOperationIsNotCleared()
        {
            var resolverPolicy = new ExceptionThrowingTestResolverPolicy(new ArgumentException());

            MockBuilderContext context = GetContext();
            var key = new NamedTypeBuildKey <OnePropertyClass>();

            context.BuildKey = key;
            context.Existing = new OnePropertyClass();

            context.Policies.Set <IPropertySelectorPolicy>(
                new TestSinglePropertySelectorPolicy <OnePropertyClass>(resolverPolicy),
                key);

            IBuildPlanPolicy plan = GetPlanCreator(context).CreatePlan(context, key);

            var exception = Assert.Throws <ArgumentException>(() => plan.BuildUp(context));

            var operation = context.CurrentOperation as ResolvingPropertyValueOperation;

            Assert.NotNull(operation);
            Assert.IsType <OnePropertyClass>(operation.TypeBeingConstructed);
            Assert.Equal("Key", operation.PropertyName);
        }