Esempio n. 1
0
        public void ResolverWithElementsReturnsResolvedElementsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger         o1        = new MockLogger();
            ILogger         o2        = new SpecialLogger();

            container
            .RegisterInstance <ILogger>("o1", o1)
            .RegisterInstance <ILogger>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                      typeof(ILogger),
                      new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o1"),
                      new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o2"));

            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            ILogger[] results = (ILogger[])container.Resolve <InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o2, results[1]);
        }
Esempio n. 2
0
        public void ResolverWithElementsReturnsResolvedElementsForBaseClass()
        {
            // Arrange
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            Container.RegisterInstance("o1", o1)
            .RegisterInstance("o2", o2)
            .RegisterType <InjectedObject>(Invoke.Constructor(typeof(ILogger[])))
            .RegisterType <InjectedObject>(Legacy, new InjectionConstructor(typeof(ILogger[])));

            // Act
            var result = (ILogger[])Container.Resolve <InjectedObject>().InjectedValue;
            var legacy = (object[])Container.Resolve <InjectedObject>().InjectedValue;

            // Validate
            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Length);
            Assert.AreSame(o1, result[0]);
            Assert.AreSame(o2, result[1]);

            Assert.IsNotNull(legacy);
            Assert.AreEqual(2, legacy.Length);
            Assert.AreSame(o1, legacy[0]);
            Assert.AreSame(o2, legacy[1]);
        }
        public void CreatingResolvedArrayParameterWithValuesOfNonCompatibleType()
        {
            ILogger logger2 = new SpecialLogger();

            new ResolvedArrayParameter <ILogger>(
                new ResolvedParameter <ILogger>("log1"),
                typeof(int),
                logger2);
        }
        public void CreatingResolvedArrayParameterWithValuesOfNonCompatibleType()
        {
            ILogger logger2 = new SpecialLogger();

            AssertExtensions.AssertException <InvalidOperationException>(() =>
            {
                new ResolvedArrayParameter <ILogger>(
                    new ResolvedParameter <ILogger>("log1"),
                    typeof(int),
                    logger2);
            });
        }
Esempio n. 5
0
        public void ResolveAllReturnsRegisteredObjectsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            container
                .RegisterInstance<ILogger>("o1", o1)
                .RegisterInstance<ILogger>("o2", o2);

            List<ILogger> results = new List<ILogger>(container.ResolveAll<ILogger>());
            CollectionAssert.AreEqual(new ILogger[] {o1, o2}, results);
        }
        public void ResolveAllReturnsRegisteredObjectsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger         o1        = new MockLogger();
            ILogger         o2        = new SpecialLogger();

            container
            .RegisterInstance <ILogger>("o1", o1)
            .RegisterInstance <ILogger>("o2", o2);

            List <ILogger> results = new List <ILogger>(container.ResolveAll <ILogger>());

            CollectionAssert.AreEqual(new ILogger[] { o1, o2 }, results);
        }
        public void CanResolveArrayForConstructorParameter()
        {
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            Container.RegisterInstance <ILogger>("o1", o1)
            .RegisterInstance <ILogger>("o2", o2);

            var resolved = Container.Resolve <TypeWithArrayConstructorParameter>();

            Assert.IsNotNull(resolved.Loggers);
            Assert.AreEqual(2, resolved.Loggers.Length);
            Assert.AreSame(o1, resolved.Loggers[0]);
            Assert.AreSame(o2, resolved.Loggers[1]);
        }
Esempio n. 8
0
        public void CreatingResolvedArrayParameterWithValuesOfNonCompatibleType()
        {
            ILogger logger2 = new SpecialLogger();

            try
            {
                new ResolvedArrayParameter <ILogger>(
                    new ResolvedParameter <ILogger>("log1"),
                    typeof(int),
                    logger2);
                Assert.Fail("Should have thrown");
            }
            catch (InvalidOperationException)
            {
            }
        }
        public void CanResolveArrayForProperty()
        {
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            IUnityContainer container
                = new UnityContainer()
                  .RegisterInstance <ILogger>("o1", o1)
                  .RegisterInstance <ILogger>("o2", o2);

            TypeWithArrayProperty resolved = container.Resolve <TypeWithArrayProperty>();

            Assert.IsNotNull(resolved.Loggers);
            Assert.AreEqual(2, resolved.Loggers.Length);
            Assert.AreSame(o1, resolved.Loggers[0]);
            Assert.AreSame(o2, resolved.Loggers[1]);
        }
Esempio n. 10
0
        public void CanConfigureContainerToCallConstructorWithArrayParameterWithNonGenericVersion()
        {
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            IUnityContainer container = new UnityContainer()
                                        .RegisterType <TypeWithArrayConstructorParameter>(new InjectionConstructor(typeof(ILogger[])))
                                        .RegisterInstance <ILogger>("o1", o1)
                                        .RegisterInstance <ILogger>("o2", o2);

            TypeWithArrayConstructorParameter resolved = container.Resolve <TypeWithArrayConstructorParameter>();

            Assert.NotNull(resolved.Loggers);
            Assert.Equal(2, resolved.Loggers.Length);
            Assert.Same(o1, resolved.Loggers[0]);
            Assert.Same(o2, resolved.Loggers[1]);
        }
        public void CanResolveArrayForConstructorParameterOnClosedGenericType()
        {
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            IUnityContainer container
                = new UnityContainer()
                  .RegisterInstance <ILogger>("o1", o1)
                  .RegisterInstance <ILogger>("o2", o2);

            GenericTypeWithArrayConstructorParameter <ILogger> resolved
                = container.Resolve <GenericTypeWithArrayConstructorParameter <ILogger> >();

            Assert.IsNotNull(resolved.values);
            Assert.AreEqual(2, resolved.values.Length);
            Assert.AreSame(o1, resolved.values[0]);
            Assert.AreSame(o2, resolved.values[1]);
        }
        public void CanConfigureContainerToCallConstructorWithArrayParameter()
        {
            // Arrange
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            Container.RegisterType <TypeWithArrayConstructorParameter>(new InjectionConstructor(typeof(ILogger[])))
            .RegisterInstance <ILogger>("o1", o1)
            .RegisterInstance <ILogger>("o2", o2);

            // Act
            var resolved = Container.Resolve <TypeWithArrayConstructorParameter>();

            Assert.IsNotNull(resolved.Loggers);
            Assert.AreEqual(2, resolved.Loggers.Length);
            Assert.AreSame(o1, resolved.Loggers[0]);
            Assert.AreSame(o2, resolved.Loggers[1]);
        }
Esempio n. 13
0
        public void CanConfigureContainerToInjectSpecificValuesIntoAnArray()
        {
            ILogger logger2 = new SpecialLogger();

            IUnityContainer container = new UnityContainer()
                                        .RegisterType <TypeWithArrayConstructorParameter>(
                new InjectionConstructor(
                    new ResolvedArrayParameter <ILogger>(
                        new ResolvedParameter <ILogger>("log1"),
                        typeof(ILogger),
                        logger2)))
                                        .RegisterType <ILogger, MockLogger>()
                                        .RegisterType <ILogger, SpecialLogger>("log1");

            TypeWithArrayConstructorParameter result = container.Resolve <TypeWithArrayConstructorParameter>();

            Assert.Equal(3, result.Loggers.Length);
            AssertExtensions.IsInstanceOfType(result.Loggers[0], typeof(SpecialLogger));
            AssertExtensions.IsInstanceOfType(result.Loggers[1], typeof(MockLogger));
            Assert.Same(logger2, result.Loggers[2]);
        }
        public void CanConfigureContainerToInjectSpecificValuesIntoAnArrayWithNonGenericVersion()
        {
            // Arrange
            ILogger logger2 = new SpecialLogger();

            Container.RegisterType <TypeWithArrayConstructorParameter>(
                new InjectionConstructor(
                    new ResolvedArrayParameter(
                        typeof(ILogger),
                        new ResolvedParameter <ILogger>("log1"),
                        typeof(ILogger),
                        logger2)))
            .RegisterType <ILogger, MockLogger>()
            .RegisterType <ILogger, SpecialLogger>("log1");

            // Act
            var result = Container.Resolve <TypeWithArrayConstructorParameter>();

            Assert.AreEqual(3, result.Loggers.Length);
            Assert.IsInstanceOfType(result.Loggers[0], typeof(SpecialLogger));
            Assert.IsInstanceOfType(result.Loggers[1], typeof(MockLogger));
            Assert.AreSame(logger2, result.Loggers[2]);
        }
Esempio n. 15
0
        public void ResolverWithElementsReturnsResolvedElementsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            container
                .RegisterInstance<ILogger>("o1", o1)
                .RegisterInstance<ILogger>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                    typeof(ILogger),
                    new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o1"),
                    new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o2"));
            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            ILogger[] results = (ILogger[])container.Resolve<InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o2, results[1]);
        }