public void GetInitializer_NoInitializerRegisteredForRequestedType_ReturnsNull()
        {
            // Arrange
            var container = ContainerFactory.New();

            // Act
            var initializer = AdvancedExtensions.GetInitializer <IDisposable>(container);

            // Assert
            Assert.IsNull(initializer);
        }
        public void GetInitializer_CallingTheReturnedDelegate_CallsTheRegisteredDelegate()
        {
            // Arrange
            bool called = false;

            var container = ContainerFactory.New();

            container.RegisterInitializer <IDisposable>(d => { called = true; });

            // Act
            var initializer = AdvancedExtensions.GetInitializer <IDisposable>(container);

            initializer(null);

            // Assert
            Assert.IsTrue(called);
        }
        public void GetInitializer_CallingTheReturnedDelegate_CallsTheDelegateWithTheExpectedInstance()
        {
            // Arrange
            object actualInstance = null;

            var container = ContainerFactory.New();

            container.RegisterInitializer <object>(d => { actualInstance = d; });

            // Act
            var initializer = AdvancedExtensions.GetInitializer <object>(container);

            object expectedInstance = new object();

            initializer(expectedInstance);

            // Assert
            Assert.IsTrue(object.ReferenceEquals(expectedInstance, actualInstance));
        }