예제 #1
0
        public void TestElementDestroyedAfterDispose()
        {
            RentedElementMonitor <TestPoolElem> elementMonitor = default(RentedElementMonitor <TestPoolElem>);
            TestPoolElem elem = null;

            try
            {
                using (TestDynamicPool testInst = new TestDynamicPool(0, 10))
                {
                    elementMonitor = testInst.Rent();
                    elem           = elementMonitor.Element;
                }

                Assert.IsTrue(elementMonitor.IsValid);
                Assert.IsFalse(elem.IsDestroyed);
            }
            finally
            {
                if (!object.ReferenceEquals(elementMonitor, null))
                {
                    elementMonitor.Dispose();
                }
            }

            Assert.IsTrue(elem.IsDestroyed);
        }
예제 #2
0
        public void TestFaultedElementDestroyed()
        {
            using (TestDynamicPool testInst = new TestDynamicPool(0, 10))
            {
                Assert.AreEqual(0, testInst.ElementCount);
                Assert.AreEqual(0, testInst.FreeElementCount);

                TestPoolElem rentedEl = null;
                using (var el = testInst.Rent())
                {
                    Assert.IsTrue(el.IsValid);
                    rentedEl = el.Element;
                    rentedEl.MakeInvalid();
                }

                Assert.IsTrue(rentedEl.IsDestroyed);
            }
        }