Пример #1
0
        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);
        }