public HierarchicalLifetimeManagerTest() { parent = new FsContainer(); child1 = parent.CreateChildContainer(); child2 = parent.CreateChildContainer(); parent.For<ILogger>().Use<Logger>(new HierarchicalLifetimeManager()); parent.For<DisposableObject>() .Use<DisposableObject>(new HierarchicalLifetimeManager()); }
public void TestContainerChildrenAreNotTheSame() { // Act var container = new FsContainer(); // Arrange var child = container.CreateChildContainer(); var child1 = container.CreateChildContainer(); // Assert Assert.IsNotNull(child); Assert.IsNotNull(child1); Assert.IsInstanceOfType(child, typeof(FsContainer)); Assert.IsInstanceOfType(child1, typeof(FsContainer)); Assert.AreNotSame(child, child1); }
public void TestContainerCouldCreateChild() { // Act var container = new FsContainer(); // Arrange var child = container.CreateChildContainer(); // Assert Assert.IsNotNull(child); Assert.IsInstanceOfType(child, typeof(FsContainer)); Assert.AreSame(child.Parent, container); }
public async Task TestMultiThreadParentAndChildResolvesSameContainerControlledInstances() { // Arrange var container = new FsContainer(); container .For <ILogger>() .Use <Logger>(new ContainerControlledLifetimeManager()); var child1 = container.CreateChildContainer(); var child2 = container.CreateChildContainer(); // Arrange var instances = await Task.WhenAll( Task.Run(() => { Task.Delay(10); return(container.Resolve <ILogger>()); }), Task.Run(() => { Task.Delay(10); return(child1.Resolve <ILogger>()); }), Task.Run(() => { Task.Delay(10); return(child2.Resolve <ILogger>()); }) ); var logger = instances[0]; var logger1 = instances[1]; var logger2 = instances[2]; // Assert Assert.IsNotNull(logger); Assert.IsNotNull(logger1); Assert.IsNotNull(logger2); Assert.AreSame(logger, logger1); Assert.AreSame(logger, logger2); Assert.AreSame(logger1, logger2); }
public void TestParentAndChildResolvesSameContainerControlledInstances() { // Arrange var container = new FsContainer(); container .For <ILogger>() .Use <Logger>(new ContainerControlledLifetimeManager()); var child1 = container.CreateChildContainer(); var child2 = container.CreateChildContainer(); // Arrange var logger = container.Resolve <ILogger>(); var logger1 = child1.Resolve <ILogger>(); var logger2 = child2.Resolve <ILogger>(); // Assert Assert.IsNotNull(logger); Assert.IsNotNull(logger1); Assert.IsNotNull(logger2); Assert.AreSame(logger, logger1); Assert.AreSame(logger, logger2); Assert.AreSame(logger1, logger2); }