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 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); } }
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); } }
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); } }
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); } }
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"); } }
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"); } }
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))); } }