public void DisposingContainerDisposesOwnedObjects() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); container.Add(mdo); container.Dispose(); Assert.True(mdo.WasDisposed); }
public void RemovingItemsFromContainerDoesNotDisposeThem() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); container.Add(mdo); container.Remove(mdo); container.Dispose(); Assert.False(mdo.WasDisposed); }
public void ContainerEnsuresObjectsWontBeCollected() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); WeakReference wref = new WeakReference(mdo); container.Add(mdo); mdo = null; GC.Collect(); Assert.Equal(1, container.Count); mdo = wref.Target as DisposableObject; Assert.NotNull(mdo); Assert.False(mdo.WasDisposed); }
public void CanEnumerateItemsInContainer() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); container.Add(mdo); int count = 0; bool foundMdo = false; foreach (object obj in container) { count++; if (ReferenceEquals(mdo, obj)) { foundMdo = true; } } Assert.Equal(1, count); Assert.True(foundMdo); }