public void VerifyManagedDisposableObjectDisposeSetsWasDisposedToTrue()
        {
            var object1 = new ManagedDisposableObject();

            object1.Dispose();
            Assert.IsTrue(object1.WasDisposed);
        }
예제 #2
0
        public void VerifyTargetReturnsObjectWhenObjectIsAlive()
        {
            var obj     = new ManagedDisposableObject();
            var weakref = new WeakReferenceOf <ManagedDisposableObject>(obj);

            Assert.AreEqual(obj, weakref.Target);
        }
예제 #3
0
        public void VerifyIsAliveReturnsTrueWhenObjectIsAlive()
        {
            var obj     = new ManagedDisposableObject();
            var weakref = new WeakReferenceOf <ManagedDisposableObject>(obj);

            Assert.IsTrue(weakref.IsAlive);
        }
        public void VerifyAllChildrenAreDisposedWhenParentIsDisposed()
        {
            var parent = new ManagedDisposableObject();
            var children = new ManagedDisposableObject[]
            {
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
            };

            this.manager.Register(parent);
            foreach (ManagedDisposableObject child in children)
            {
                this.manager.RegisterAsDependent(child, parent);
            }

            parent.Dispose();
            foreach (ManagedDisposableObject child in children)
            {
                Assert.IsTrue(child.WasDisposed);
            }
        }
        public void VerifyAllChildrenAreDisposedWhenParentIsDisposed()
        {
            var parent   = new ManagedDisposableObject();
            var children = new ManagedDisposableObject[]
            {
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
                new ManagedDisposableObject(),
            };

            this.manager.Register(parent);
            foreach (ManagedDisposableObject child in children)
            {
                this.manager.RegisterAsDependent(child, parent);
            }

            parent.Dispose();
            foreach (ManagedDisposableObject child in children)
            {
                Assert.IsTrue(child.WasDisposed);
            }
        }
예제 #6
0
        public void VerifyIdReturnsObjectId()
        {
            var obj     = new ManagedDisposableObject();
            var weakref = new WeakReferenceOf <ManagedDisposableObject>(obj);

            Assert.AreEqual(obj.Id, weakref.Id);
        }
        public void VerifyGarbageCollectionCanGetAllObjects()
        {
            var grandparent = new ManagedDisposableObject();
            var parent      = new ManagedDisposableObject();
            var child       = new ManagedDisposableObject();
            var grandchild  = new ManagedDisposableObject();

            this.manager.Register(grandparent);
            this.manager.RegisterAsDependent(parent, grandparent);
            this.manager.RegisterAsDependent(child, parent);
            this.manager.RegisterAsDependent(grandchild, child);

            var grandparentRef = new WeakReference(grandparent);
            var parentRef      = new WeakReference(parent);
            var childRef       = new WeakReference(child);
            var grandchildRef  = new WeakReference(grandchild);

            grandparent = parent = child = grandchild = null;

            // Each garbage collection should get at least one level
            // of the dependency tree
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(grandchildRef.IsAlive, "grandchild is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(childRef.IsAlive, "child is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(parentRef.IsAlive, "parent is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(grandparentRef.IsAlive, "grandparent is still alive");
        }
        public void TestDisposeTwice()
        {
            var obj = new ManagedDisposableObject();

            this.manager.Register(obj);
            obj.Dispose();
            obj.Dispose();
        }
        public void TestDisposeTwice()
        {
            var obj = new ManagedDisposableObject();

            this.manager.Register(obj);
            obj.Dispose();
            obj.Dispose();
        }
예제 #10
0
 public void VerifyIdReturnsObjectIdWhenObjectIsFinalized()
 {
     var obj = new ManagedDisposableObject();
     DisposableObjectId id = obj.Id;
     var weakref = new WeakReferenceOf<ManagedDisposableObject>(obj);
     obj = null;
     DoFullGarbageCollection();
     Assert.AreEqual(id, weakref.Id);
 }
예제 #11
0
        public void VerifyIdReturnsObjectIdWhenObjectIsFinalized()
        {
            var obj = new ManagedDisposableObject();
            DisposableObjectId id = obj.Id;
            var weakref           = new WeakReferenceOf <ManagedDisposableObject>(obj);

            obj = null;
            DoFullGarbageCollection();
            Assert.AreEqual(id, weakref.Id);
        }
예제 #12
0
 public void VerifyIdReturnsObjectIdWhenObjectIsFinalized()
 {
     var obj = new ManagedDisposableObject();
     DisposableObjectId id = obj.Id;
     var weakref = new WeakReferenceOf<ManagedDisposableObject>(obj);
     obj = null;
     GC.WaitForPendingFinalizers();
     GC.Collect();
     Assert.AreEqual(id, weakref.Id);
 }
        public void VerifyParentIsNotDisposedWhenChildIsDisposed()
        {
            var parent = new ManagedDisposableObject();
            var child  = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            child.Dispose();
            Assert.IsFalse(parent.WasDisposed);
        }
        public void VerifyChildObjectIsDisposedWhenParentIsDisposed()
        {
            var parent = new ManagedDisposableObject();
            var child  = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            parent.Dispose();
            Assert.IsTrue(child.WasDisposed);
        }
예제 #15
0
        public void VerifyIdReturnsObjectIdWhenObjectIsFinalized()
        {
            var obj = new ManagedDisposableObject();
            DisposableObjectId id = obj.Id;
            var weakref           = new WeakReferenceOf <ManagedDisposableObject>(obj);

            obj = null;
            GC.WaitForPendingFinalizers();
            GC.Collect();
            Assert.AreEqual(id, weakref.Id);
        }
        public void VerifyObjectWithNoDependentsCanBeGarbageCollected()
        {
            var parent = new ManagedDisposableObject();
            var child  = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            var weakRef = new WeakReference(child);

            child = null;

            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(weakRef.IsAlive);
        }
        public void TestDisposingParentWhenSomeChildrenAreUnreferenced()
        {
            var parent = new ManagedDisposableObject();
            var child  = new ManagedDisposableObject();

            this.manager.Register(parent);

            this.manager.RegisterAsDependent(new ManagedDisposableObject(), parent);
            this.manager.RegisterAsDependent(child, parent);
            this.manager.RegisterAsDependent(new ManagedDisposableObject(), parent);

            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(child.WasDisposed);
            parent.Dispose();
            Assert.IsTrue(child.WasDisposed);
        }
        public void TestDisposingParentWhenSomeChildrenAreUnreferenced()
        {
            var parent = new ManagedDisposableObject();
            var child = new ManagedDisposableObject();

            this.manager.Register(parent);

            this.manager.RegisterAsDependent(new ManagedDisposableObject(), parent);
            this.manager.RegisterAsDependent(child, parent);
            this.manager.RegisterAsDependent(new ManagedDisposableObject(), parent);

            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(child.WasDisposed);
            parent.Dispose();
            Assert.IsTrue(child.WasDisposed);
        }
        public void VerifyAllObjectAreDisposedWhenManagerIsDisposed()
        {
            var manager = new DisposableObjectManager();

            var parent     = new ManagedDisposableObject();
            var child1     = new ManagedDisposableObject();
            var child2     = new ManagedDisposableObject();
            var child3     = new ManagedDisposableObject();
            var grandchild = new ManagedDisposableObject();

            manager.Register(parent);
            manager.RegisterAsDependent(child1, parent);
            manager.RegisterAsDependent(child2, parent);
            manager.RegisterAsDependent(child3, parent);
            manager.RegisterAsDependent(grandchild, child2);

            manager.Dispose();
            Assert.IsTrue(parent.WasDisposed);
            Assert.IsTrue(child1.WasDisposed);
            Assert.IsTrue(child2.WasDisposed);
            Assert.IsTrue(child3.WasDisposed);
            Assert.IsTrue(grandchild.WasDisposed);
        }
 public void VerifyManagedDisposableObjectConstructorSetsWasDisposedToFalse()
 {
     var object1 = new ManagedDisposableObject();
     Assert.IsFalse(object1.WasDisposed);
 }
예제 #21
0
 public void VerifyIsAliveReturnsTrueWhenObjectIsAlive()
 {
     var obj = new ManagedDisposableObject();
     var weakref = new WeakReferenceOf<ManagedDisposableObject>(obj);
     Assert.IsTrue(weakref.IsAlive);
 }
예제 #22
0
 public void VerifyTargetReturnsObjectWhenObjectIsAlive()
 {
     var obj = new ManagedDisposableObject();
     var weakref = new WeakReferenceOf<ManagedDisposableObject>(obj);
     Assert.AreEqual(obj, weakref.Target);
 }
        public void VerifyParentIsNotDisposedWhenChildIsDisposed()
        {
            var parent = new ManagedDisposableObject();
            var child = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            child.Dispose();
            Assert.IsFalse(parent.WasDisposed);
        }
        public void VerifyObjectWithNoDependentsCanBeGarbageCollected()
        {
            var parent = new ManagedDisposableObject();
            var child = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            var weakRef = new WeakReference(child);
            child = null;

            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(weakRef.IsAlive);
        }
 public void VerifyManagedDisposableObjectDisposeSetsWasDisposedToTrue()
 {
     var object1 = new ManagedDisposableObject();
     object1.Dispose();
     Assert.IsTrue(object1.WasDisposed);
 }
        public void VerifyGarbageCollectionCanGetAllObjects()
        {
            var grandparent = new ManagedDisposableObject();
            var parent = new ManagedDisposableObject();
            var child = new ManagedDisposableObject();
            var grandchild = new ManagedDisposableObject();

            this.manager.Register(grandparent);
            this.manager.RegisterAsDependent(parent, grandparent);
            this.manager.RegisterAsDependent(child, parent);
            this.manager.RegisterAsDependent(grandchild, child);

            var grandparentRef = new WeakReference(grandparent);
            var parentRef = new WeakReference(parent);
            var childRef = new WeakReference(child);
            var grandchildRef = new WeakReference(grandchild);

            grandparent = parent = child = grandchild = null;

            // Each garbage collection should get at least one level
            // of the dependency tree
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(grandchildRef.IsAlive, "grandchild is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(childRef.IsAlive, "child is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(parentRef.IsAlive, "parent is still alive");
            TestUtilities.FinalizeAndGCCollect();
            Assert.IsFalse(grandparentRef.IsAlive, "grandparent is still alive");
        }
        public void VerifyChildObjectIsDisposedWhenParentIsDisposed()
        {
            var parent = new ManagedDisposableObject();
            var child = new ManagedDisposableObject();

            this.manager.Register(parent);
            this.manager.RegisterAsDependent(child, parent);

            parent.Dispose();
            Assert.IsTrue(child.WasDisposed);
        }
        public void VerifyManagedDisposableObjectConstructorSetsWasDisposedToFalse()
        {
            var object1 = new ManagedDisposableObject();

            Assert.IsFalse(object1.WasDisposed);
        }
        public void VerifyAllObjectAreDisposedWhenManagerIsDisposed()
        {
            var manager = new DisposableObjectManager();

            var parent = new ManagedDisposableObject();
            var child1 = new ManagedDisposableObject();
            var child2 = new ManagedDisposableObject();
            var child3 = new ManagedDisposableObject();
            var grandchild = new ManagedDisposableObject();

            manager.Register(parent);
            manager.RegisterAsDependent(child1, parent);
            manager.RegisterAsDependent(child2, parent);
            manager.RegisterAsDependent(child3, parent);
            manager.RegisterAsDependent(grandchild, child2);

            manager.Dispose();
            Assert.IsTrue(parent.WasDisposed);
            Assert.IsTrue(child1.WasDisposed);
            Assert.IsTrue(child2.WasDisposed);
            Assert.IsTrue(child3.WasDisposed);
            Assert.IsTrue(grandchild.WasDisposed);
        }
예제 #30
0
 public void VerifyIdReturnsObjectId()
 {
     var obj = new ManagedDisposableObject();
     var weakref = new WeakReferenceOf<ManagedDisposableObject>(obj);
     Assert.AreEqual(obj.Id, weakref.Id);
 }