public void Constructor_WithTwoParameters_IfTheDisposableParameterIsNotNull_ShouldSetTheWrappedInstance()
        {
            var disposable = Mock.Of<IDisposable>();

            using(var disposableWrapper = new DisposableWrapperMock<IDisposable>(disposable, "Test"))
            {
                Assert.IsTrue(ReferenceEquals(disposable, disposableWrapper.WrappedInstance));
            }
        }
        public void Dispose_ShouldCallDisposeWithOneParameterAndTheDisposingParameterSetToTrue()
        {
            var disposableWrapperMock = new DisposableWrapperMock<IDisposable>(Mock.Of<IDisposable>());

            Assert.IsFalse(disposableWrapperMock.Disposing);

            disposableWrapperMock.Dispose();

            Assert.IsTrue(disposableWrapperMock.Disposing);
        }
        public void Dispose_WithOneParameter_IfTheDisposingParameterIsSetToFalse_ShouldNotCallDisposeOnTheWrappedInstance()
        {
            var disposeIsCalled = false;
            var disposableMock = new Mock<IDisposable>();
            disposableMock.Setup(disposable => disposable.Dispose()).Callback(delegate { disposeIsCalled = true; });

            var disposableWrapperMock = new DisposableWrapperMock<IDisposable>(disposableMock.Object);

            Assert.IsFalse(disposeIsCalled);

            disposableWrapperMock.DisposePublic(false);

            Assert.IsFalse(disposeIsCalled);
        }