public void ObjectPoolTestFactory() { var factory1 = new Disposable(); var factory2 = new Disposable(); var objectPool = new ObjectPool <Disposable>(); objectPool.UpdateFactory(factory1); var p3 = objectPool.Get(); p3.Dispose(); objectPool.UpdateFactory(factory2); Assert.IsTrue(factory1.Disposed); var p1 = objectPool.Get(); var p2 = objectPool.Get(); p1.Dispose(); p2.Dispose(); p1 = objectPool.Get(); p1.Dispose(); objectPool.Dispose(); factory1.AssertChildrenDisposed(); Assert.AreEqual(1, factory1.Children.Count); factory2.AssertChildrenDisposed(); Assert.AreEqual(2, factory2.Children.Count); Assert.IsTrue(factory2.Disposed); }