public void ShouldDisposeInstanceWhenDispose()
        {
            // Given
            var expectedInstance = new Mock <IDisposable>();
            var lifetime         = new ContainerSingletonLifetime();
            var resolver         = lifetime.Compile(() => expectedInstance.Object);

            resolver(Mock.Of <IContainer>());

            // When
            lifetime.Dispose();

            // Then
            expectedInstance.Verify(i => i.Dispose(), Times.Once);
        }
        public void ShouldDisposeInstanceWhenDispose()
        {
            // Given
            var expectedInstance = new Mock <IDisposable>();
            var lifetime         = new ContainerSingletonLifetime();
            var resolver         = lifetime.Compile(() => expectedInstance.Object);
            var container        = new Mock <IContainer>();

            container.Setup(i => i.UnregisterResource(expectedInstance.Object)).Returns(true);
            resolver(container.Object);

            // When
            lifetime.Dispose();

            // Then
            expectedInstance.Verify(i => i.Dispose(), Times.Once);
        }