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 DisposingItemsFromContainerDisposesInReverseOrderAdded()
        {
            ILifetimeContainer  container = new LifetimeContainer();
            DisposeOrderCounter obj1      = new DisposeOrderCounter();
            DisposeOrderCounter obj2      = new DisposeOrderCounter();
            DisposeOrderCounter obj3      = new DisposeOrderCounter();

            container.Add(obj1);
            container.Add(obj2);
            container.Add(obj3);

            container.Dispose();

            Assert.Equal(1, obj3.DisposePosition);
            Assert.Equal(2, obj2.DisposePosition);
            Assert.Equal(3, obj1.DisposePosition);
        }