public void Dispose_Once() { var disposable = new Mock<IDisposable>(MockBehavior.Strict); disposable.Setup(_ => _.Dispose()); var counter = new DisposableReferenceCounter(disposable.Object); counter.Dispose(); counter.Dispose(); counter.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Once); }
public void AddReference_Fail_Dispose_M() { var disposable = new Mock<IDisposable>(MockBehavior.Strict); disposable.Setup(_ => _.Dispose()); var main = new DisposableReferenceCounter(disposable.Object); main.Dispose(); main.AddReference(); }
public void AddReference_DisposeMain_AddRefFromMain() { var disposable = new Mock<IDisposable>(MockBehavior.Strict); disposable.Setup(_ => _.Dispose()); var main = new DisposableReferenceCounter(disposable.Object); var other = main.AddReference(); main.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Never); var again = main.AddReference(); other.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Never); again.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Once); }
public void AddReference_Dispose_Nested_NOM() { var disposable = new Mock<IDisposable>(MockBehavior.Strict); disposable.Setup(_ => _.Dispose()); var main = new DisposableReferenceCounter(disposable.Object); var other = main.AddReference(); var nested = other.AddReference(); nested.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Never); other.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Never); main.Dispose(); disposable.Verify(_ => _.Dispose(), Times.Once); }