コード例 #1
0
        public void DisposingContainerDisposesOwnedObjects()
        {
            ILifetimeContainer   container = new LifetimeContainer();
            MockDisposableObject mdo       = new MockDisposableObject();

            container.Add(mdo);
            container.Dispose();

            Assert.IsTrue(mdo.WasDisposed);
        }
コード例 #2
0
        public void RemovingItemsFromContainerDoesNotDisposeThem()
        {
            ILifetimeContainer   container = new LifetimeContainer();
            MockDisposableObject mdo       = new MockDisposableObject();

            container.Add(mdo);
            container.Remove(mdo);
            container.Dispose();

            Assert.IsFalse(mdo.WasDisposed);
        }
コード例 #3
0
        public void ContainerEnsuresObjectsWontBeCollected()
        {
            ILifetimeContainer   container = new LifetimeContainer();
            MockDisposableObject mdo       = new MockDisposableObject();
            WeakReference        wref      = new WeakReference(mdo);

            container.Add(mdo);
            mdo = null;
            GC.Collect();

            Assert.AreEqual(1, container.Count);
            mdo = wref.Target as MockDisposableObject;
            Assert.IsNotNull(mdo);
            Assert.IsFalse(mdo.WasDisposed);
        }
コード例 #4
0
        public void CanEnumerateItemsInContainer()
        {
            ILifetimeContainer   container = new LifetimeContainer();
            MockDisposableObject mdo       = new MockDisposableObject();

            container.Add(mdo);

            int  count    = 0;
            bool foundMdo = false;

            foreach (object obj in container)
            {
                count++;

                if (ReferenceEquals(mdo, obj))
                {
                    foundMdo = true;
                }
            }

            Assert.AreEqual(1, count);
            Assert.IsTrue(foundMdo);
        }