public void DisposeInstances_does_not_dispose_non_disposable_objects(IServiceRegistrationProvider registrations,
                                                                             ICachesResolvedServiceInstances cache,
                                                                             ServiceInstanceDisposer sut,
                                                                             IServiceRegistration registration,
                                                                             object nonDisposable)
        {
            // Arrange
            Mock.Get(registration).SetupGet(x => x.DisposeWithContainer).Returns(false);
            Mock.Get(registration).SetupGet(x => x.Cacheable).Returns(true);
            Mock.Get(registrations).Setup(x => x.GetAll()).Returns(new [] { registration });
            object obj = nonDisposable;

            Mock.Get(cache)
            .Setup(x => x.TryGet(registration, out obj))
            .Callback(() => obj = nonDisposable)
            .Returns(true);

            // Act
            Assert.That(() => sut.DisposeInstances(registrations, cache), Throws.Nothing);
        }
        public void DisposeInstances_does_not_dispose_non_cached_instances(IServiceRegistrationProvider registrations,
                                                                           ICachesResolvedServiceInstances cache,
                                                                           ServiceInstanceDisposer sut,
                                                                           IServiceRegistration registration,
                                                                           IDisposable disposable)
        {
            // Arrange
            Mock.Get(registration).SetupGet(x => x.DisposeWithContainer).Returns(true);
            Mock.Get(registration).SetupGet(x => x.Cacheable).Returns(true);
            Mock.Get(registrations).Setup(x => x.GetAll()).Returns(new [] { registration });
            object obj = disposable;

            Mock.Get(cache)
            .Setup(x => x.TryGet(registration, out obj))
            .Returns(false);

            // Act
            sut.DisposeInstances(registrations, cache);

            // Assert
            Mock.Get(disposable).Verify(x => x.Dispose(), Times.Never);
        }