private (WeakReference, WeakReference) AddGarbageToPool(DisposablePool pool) { var objA = new TestDisposable(); var objB = new TestDisposable(); pool.AddDisposable(objA); pool.AddDisposable(objB); return(new WeakReference(objA), new WeakReference(objB)); }
public void AddDisposable_ThenDispose() { var objA = new TestDisposable(); var objB = new TestDisposable(); var pool = new DisposablePool(); pool.AddDisposable(objA).Should().BeSameAs(objA); pool.AddDisposable(objB).Should().BeSameAs(objB); pool.Dispose(); objA.IsDisposed.Should().BeTrue(); objB.IsDisposed.Should().BeTrue(); }
public void AddDisposable_ThenFinalize() { var objA = new TestDisposable(); var objB = new TestDisposable(); var pool = new DisposablePool(); pool.AddDisposable(objA).Should().BeSameAs(objA); pool.AddDisposable(objB).Should().BeSameAs(objB); pool.DisposeUnmanaged(); // simulate finalizer // Does not dispose managed resources during finalization objA.IsDisposed.Should().BeFalse(); objB.IsDisposed.Should().BeFalse(); }
public void Dispose_Exception() { var objA = new Mock <IDisposable>(MockBehavior.Strict); objA.Setup(o => o.Dispose()).Throws <InvalidOperationException>(); var pool = new DisposablePool(); pool.AddDisposable(objA.Object); pool.Dispose(); objA.Verify(); }