public void CompileWorksWhenCompiledMultipleTimes()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo = new Foo1();
                var bar = new Bar1();
                container.RegisterInstance <IFoo>(foo);
                container.RegisterInstance <IBar>(bar);
                container.Register <IFooBar, FooBar>().WithContainerLifetime();
                container.Register <IFooBarContainer, FooBarContainer>().WithContainerLifetime();

                // Act
                container.Compile();
                container.Compile();

                var fooBarContainer = container.Resolve <IFooBarContainer>();

                // Assert
                Assert.IsNotNull(fooBarContainer);
                Assert.IsNotNull(fooBarContainer.FooBar);
                Assert.IsNotNull(fooBarContainer.FooBar.Foo);
                Assert.IsNotNull(fooBarContainer.FooBar.Bar);

                Assert.AreEqual(foo, fooBarContainer.FooBar.Foo);
                Assert.AreEqual(bar, fooBarContainer.FooBar.Bar);
            }
        }
Exemple #2
0
        public void TryResolveAllReturnsExpectedInstances()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo1 = new Foo1();
                var foo2 = new Foo2();
                var foo3 = new Foo2();
                var bar1 = new Bar1();

                container.RegisterInstance <IFoo>(foo1);
                container.RegisterInstance <IFoo>(foo2, "Foo1");
                container.RegisterInstance <IFoo>(foo3, "Foo2");
                container.RegisterInstance <IBar>(bar1);

                // Act
                var results = container.TryResolveAll <IFoo>();

                var resultList = results.ToList();

                // Assert
                Assert.IsTrue(results.Count() == 3);

                CollectionAssert.Contains(resultList, foo1);
                CollectionAssert.Contains(resultList, foo2);
                CollectionAssert.Contains(resultList, foo3);
            }
        }
        public void TryResolveAllReturnsExpectedInstances()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo1 = new Foo1();
                var foo2 = new Foo2();
                var foo3 = new Foo2();
                var bar1 = new Bar1();

                container.RegisterInstance<IFoo>(foo1);
                container.RegisterInstance<IFoo>("Foo1", foo2);
                container.RegisterInstance<IFoo>("Foo2", foo3);
                container.RegisterInstance<IBar>(bar1);

                // Act
                var results = container.TryResolveAll<IFoo>();

                var resultList = results.ToList();

                // Assert
                Assert.IsTrue(results.Count() == 3);

                CollectionAssert.Contains(resultList, foo1);
                CollectionAssert.Contains(resultList, foo2);
                CollectionAssert.Contains(resultList, foo3);
            }
        }
 public void RegisterInstanceByTypeThrowsExceptionIfInstanceNotOfExpectedType()
 {
     using (var container = new IocContainer())
     {
         var fooInstance = new Foo1();
         var result = container.RegisterInstance(typeof(IBar), fooInstance);
     }
 }
 public void RegisterInstanceUsingKeyThrowsExceptionIfInstanceNotOfExpectedType()
 {
     using (var container = new IocContainer())
     {
         var fooInstance = new Foo1();
         var result      = container.RegisterInstance(typeof(IBar), fooInstance, "Foo");
     }
 }
		public void LambdaRegistrationWorksLikeExpected()
		{
			var container = new IocContainer();
			var instance = new Foo1();

			var reg = new LambdaRegistration<IFoo>(container, x => { return instance; }, new TransientLifetime());

			Assert.AreEqual(reg.ReturnType, typeof(IFoo));

			var out1 = reg.GetInstance();

			Assert.AreSame(instance, out1);
		}
        public void RegisterInstanceGenericUsingKeyReturnsCorrectType()
        {
            using (var container = new IocContainer())
            {
                var fooInstance = new Foo1();
                var result = container.RegisterInstance<IFoo>("Bar", fooInstance);

                Assert.IsInstanceOfType(result, typeof(IRegistration));
                Assert.IsInstanceOfType(result, typeof(InstanceRegistration));

                Assert.AreSame(result.Type, typeof(IFoo));
                Assert.AreEqual(result.Key, "Bar");
            }
        }
		public void RegisterInstanceUsingKeyReturnsCorrectType()
		{
			using (var container = new IocContainer())
			{
				var fooInstance = new Foo1();
				var result = container.RegisterInstance(typeof(IFoo), fooInstance, "Bar");

				Assert.IsInstanceOfType(result, typeof(InstanceRegistration<IFoo>));

				Assert.AreSame(result.ReturnType, typeof(IFoo));

				// Check index
				Assert.IsTrue(container.Index.Contains(typeof(IFoo), "Bar"));
			}
		}
        public void RegisterInstanceGenericReturnsCorrectType()
        {
            using (var container = new IocContainer())
            {
                var fooInstance = new Foo1();
                var reg         = container.RegisterInstance <IFoo>(fooInstance);

                Assert.IsInstanceOfType(reg, typeof(InstanceRegistration <IFoo>));

                Assert.AreSame(reg.ReturnType, typeof(IFoo));

                // Check index
                Assert.IsTrue(container.Index.Contains(typeof(IFoo)));
            }
        }
        public void RegisterInstanceUsingKeyReturnsCorrectType()
        {
            using (var container = new IocContainer())
            {
                var fooInstance = new Foo1();
                var result      = container.RegisterInstance(typeof(IFoo), fooInstance, "Bar");

                Assert.IsInstanceOfType(result, typeof(InstanceRegistration <IFoo>));

                Assert.AreSame(result.ReturnType, typeof(IFoo));

                // Check index
                Assert.IsTrue(container.Index.Contains(typeof(IFoo), "Bar"));
            }
        }
		public void TryResolveByNameReturnsExpectedInstance()
		{
			using (var container = new IocContainer())
			{
				// Arrange
				var foo = new Foo1();
				container.RegisterInstance<IFoo>(foo, "Foo");

				// Act
				IFoo obj;
				var result = container.TryResolve<IFoo>("Foo", out obj);

				// Assert
				Assert.AreSame(obj, foo);
				Assert.IsTrue(result);
			}
		}
Exemple #12
0
        public void TryResolveByNameReturnsExpectedInstance()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo = new Foo1();
                container.RegisterInstance <IFoo>(foo, "Foo");

                // Act
                IFoo obj;
                var  result = container.TryResolve <IFoo>("Foo", out obj);

                // Assert
                Assert.AreSame(obj, foo);
                Assert.IsTrue(result);
            }
        }
        public void TryResolveAllByTypeNotRegisteredReturnsEmptyEnumerable()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo1 = new Foo1();
                var foo2 = new Foo2();
                var bar1 = new Bar1();

                container.RegisterInstance<IFoo>(foo1);
                container.RegisterInstance<IFoo>("Foo", foo2);
                container.RegisterInstance<IBar>(bar1);

                // Act
                var results = container.TryResolveAll<IFooBar>();

                // Assert
                Assert.IsTrue(results.Count() == 0);
            }
        }
Exemple #14
0
        public void TryResolveAllByTypeNotRegisteredReturnsEmptyEnumerable()
        {
            using (var container = new IocContainer())
            {
                // Arrange
                var foo1 = new Foo1();
                var foo2 = new Foo2();
                var bar1 = new Bar1();

                container.RegisterInstance <IFoo>(foo1);
                container.RegisterInstance <IFoo>(foo2, "Foo");
                container.RegisterInstance <IBar>(bar1);

                // Act
                var results = container.TryResolveAll <IFooBar>();

                // Assert
                Assert.IsTrue(results.Count() == 0);
            }
        }
Exemple #15
0
		public void CompileCanInlineInstanceRegistrations()
		{
			// Doesnt check that Compile actually works - just that it doesnt break anything

			using (var container = new IocContainer())
			{
				var i1 = new Foo1();
				var i2 = new Bar1();

				container.RegisterInstance(i1);
				container.RegisterInstance(i2);

				var reg1 = container.Register<IFooBar>(x => new FooBar(x.Resolve<Foo1>(), x.Resolve<Bar1>()));

				container.Compile();

				var result = (IFooBar)reg1.GetInstance();

				Assert.AreEqual(i1, result.Foo);
			}
		}
        public void CompileCanInlineInstanceRegistrations()
        {
            // Doesnt check that Compile actually works - just that it doesnt break anything

            using (var container = new IocContainer())
            {
                var i1 = new Foo1();
                var i2 = new Bar1();

                container.RegisterInstance(i1);
                container.RegisterInstance(i2);

                var reg1 = container.Register <IFooBar>(x => new FooBar(x.Resolve <Foo1>(), x.Resolve <Bar1>()));

                container.Compile();

                var result = (IFooBar)reg1.GetInstance();

                Assert.AreEqual(i1, result.Foo);
            }
        }
Exemple #17
0
		public void ResolveCanResolveCollection()
		{
			var foo1 = new Foo1();
			var foo2 = new Foo2();
			var foo3 = new Foo1();
			IList<IFoo> list = new List<IFoo>(new IFoo[] { foo1, foo2, foo3 });
			
			// Register Instance
			using (var container = new IocContainer())
			{
				container.RegisterInstance(typeof(IEnumerable<IFoo>), list);
				container.RegisterInstance(typeof(IEnumerable<IFoo>), list, "TheKey");

				AssertResolveCanResolveIEnumerableType(container);
				AssertResolveCanResolveIEnumerableType(container, "TheKey");
			}

			// RegisterInstance - Generic
			using (var container = new IocContainer())
			{
				container.RegisterInstance<IEnumerable<IFoo>>(list);
				container.RegisterInstance<IEnumerable<IFoo>>(list, "TheKey");

				AssertResolveCanResolveIEnumerableType(container);
				AssertResolveCanResolveIEnumerableType(container, "TheKey");
			}

			// Register
			using (var container = new IocContainer())
			{
				container.Register<IEnumerable<IFoo>>(x => list);
				container.Register<IEnumerable<IFoo>>(x => list, "TheKey");

				AssertResolveCanResolveIEnumerableType(container);
				AssertResolveCanResolveIEnumerableType(container, "TheKey");
			}
		}
Exemple #18
0
        public void ResolveCanResolveCollection()
        {
            var          foo1 = new Foo1();
            var          foo2 = new Foo2();
            var          foo3 = new Foo1();
            IList <IFoo> list = new List <IFoo>(new IFoo[] { foo1, foo2, foo3 });

            // Register Instance
            using (var container = new IocContainer())
            {
                container.RegisterInstance(typeof(IEnumerable <IFoo>), list);
                container.RegisterInstance(typeof(IEnumerable <IFoo>), list, "TheKey");

                AssertResolveCanResolveIEnumerableType(container);
                AssertResolveCanResolveIEnumerableType(container, "TheKey");
            }

            // RegisterInstance - Generic
            using (var container = new IocContainer())
            {
                container.RegisterInstance <IEnumerable <IFoo> >(list);
                container.RegisterInstance <IEnumerable <IFoo> >(list, "TheKey");

                AssertResolveCanResolveIEnumerableType(container);
                AssertResolveCanResolveIEnumerableType(container, "TheKey");
            }

            // Register
            using (var container = new IocContainer())
            {
                container.Register <IEnumerable <IFoo> >(x => list);
                container.Register <IEnumerable <IFoo> >(x => list, "TheKey");

                AssertResolveCanResolveIEnumerableType(container);
                AssertResolveCanResolveIEnumerableType(container, "TheKey");
            }
        }
Exemple #19
0
		public void CompileWorksWhenCompiledMultipleTimes()
		{
			using (var container = new IocContainer())
			{
				// Arrange
				var foo = new Foo1();
				var bar = new Bar1();
				container.RegisterInstance<IFoo>(foo);
				container.RegisterInstance<IBar>(bar);
				container.Register<IFooBar, FooBar>().WithContainerLifetime();
				container.Register<IFooBarContainer, FooBarContainer>().WithContainerLifetime();

				// Act
				container.Compile();
				container.Compile();

				var fooBarContainer = container.Resolve<IFooBarContainer>();

				// Assert
				Assert.IsNotNull(fooBarContainer);
				Assert.IsNotNull(fooBarContainer.FooBar);
				Assert.IsNotNull(fooBarContainer.FooBar.Foo);
				Assert.IsNotNull(fooBarContainer.FooBar.Bar);

				Assert.AreEqual(foo, fooBarContainer.FooBar.Foo);
				Assert.AreEqual(bar, fooBarContainer.FooBar.Bar);
			}
		}
		public void RegisterInstanceGenericReturnsCorrectType()
		{
			using (var container = new IocContainer())
			{
				var fooInstance = new Foo1();
				var reg = container.RegisterInstance<IFoo>(fooInstance);

				Assert.IsInstanceOfType(reg, typeof(InstanceRegistration<IFoo>));

				Assert.AreSame(reg.ReturnType, typeof(IFoo));

				// Check index
				Assert.IsTrue(container.Index.Contains(typeof(IFoo)));
			}
		}