Esempio n. 1
0
        private object[] getConstructorArgs()
        {
            var ctor = new GreediestConstructorSelector().Find(typeof(TTargetClass), new DependencyCollection(), null);
            var list = new List <object>();

            foreach (var parameterInfo in ctor.GetParameters())
            {
                var dependencyType = parameterInfo.ParameterType;

                if (dependencyType.IsArray)
                {
                    var builder = typeof(ArrayBuilder <>).CloseAndBuildAs <IEnumerableBuilder>(Container,
                                                                                               dependencyType
                                                                                               .GetElementType());
                    list.Add(builder.ToEnumerable());
                }
                else if (dependencyType.Closes(typeof(IEnumerable <>)))
                {
                    var @interface  = dependencyType.FindFirstInterfaceThatCloses(typeof(IEnumerable <>));
                    var elementType = @interface.GetGenericArguments().First();

                    var builder = typeof(EnumerableBuilder <>).CloseAndBuildAs <IEnumerableBuilder>(Container,
                                                                                                    elementType);
                    list.Add(builder.ToEnumerable());
                }
                else
                {
                    var dependency = Container.GetInstance(dependencyType);
                    list.Add(dependency);
                }
            }

            return(list.ToArray());
        }
Esempio n. 2
0
        public void has_missing_primitives_positive_2()
        {
            var ctor = typeof(GuyWithPrimitiveArgs).GetConstructors().Single();

            var dependencies = new DependencyCollection();

            dependencies.Add("age", 1);

            // One is still missing
            GreediestConstructorSelector.HasMissingPrimitives(ctor, dependencies).ShouldBeTrue();
        }
        public void has_missing_primitives_negative()
        {
            var ctor = typeof(GuyWithPrimitiveArgs).GetConstructors().Single();

            var dependencies = new DependencyCollection();

            dependencies.Add("name", "Jeremy");
            dependencies.Add(typeof(int), 41);

            // One is still missing
            GreediestConstructorSelector.HasMissingPrimitives(ctor, dependencies).ShouldBeFalse();
        }
Esempio n. 4
0
        public void FillMissingParameterTypesWithMocks <T>()
        {
            Configure(x =>
            {
                var constructorInfo = new GreediestConstructorSelector().Find(typeof(T), new DependencyCollection(), PluginGraph.CreateRoot());

                foreach (var parameter in constructorInfo.GetParameters())
                {
                    if (TryGetInstance(parameter.ParameterType) != null)
                    {
                        continue;
                    }

                    var parameterMock = CreateMockFromType(parameter.ParameterType);

                    x.For(parameter.ParameterType).Use(parameterMock.Object);
                    x.For(parameterMock.GetType()).Use(parameterMock);
                }
            });
        }