public void NormalTest() { using (var disposable = new Disposable()) using (var disposableGuard = ScopeGuard.Create(disposable)) { AssertNotDisposed(disposable, disposableGuard); disposableGuard.Dismiss(); AssertNotDisposed(disposable, disposableGuard); disposableGuard.Dispose(); AssertNotDisposed(disposable, disposableGuard); } }
public void FailureTest() { using (var disposable = new Disposable()) { ScopeGuard <Disposable> disposableGuard = ScopeGuard.Create(disposable); disposableGuard.Dispose(); Assert.IsTrue(disposable.DisposeCalled); AssertThrow <ObjectDisposedException>(delegate { disposableGuard.Resource.Ignore(); }); disposableGuard.Dispose(); AssertThrow <ObjectDisposedException>(delegate { disposableGuard.Resource.Ignore(); }); AssertThrow <ObjectDisposedException>(delegate { disposableGuard.Dismiss(); }); } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////// private static void AssertNotDisposed(Disposable disposable, ScopeGuard <Disposable> disposableGuard) { Assert.IsFalse(disposable.DisposeCalled); Assert.AreSame(disposable, disposableGuard.Resource); Assert.IsFalse(disposable.DisposeCalled); }