public void CanDetermineIfLifetimeContainerContainsObject() { ILifetimeContainer container = new LifetimeContainer(); object obj = new object(); container.Add(obj); Assert.IsTrue(container.Contains(obj)); }
public void DisposingContainerDisposesOwnedObjects() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); container.Add(mdo); container.Dispose(); Assert.IsTrue(mdo.WasDisposed); }
public void DisposingContainerDisposesOwnedObjects() { ILifetimeContainer container = new LifetimeContainer(); MockDisposableObject mdo = new MockDisposableObject(); container.Add(mdo); container.Dispose(); Assert.IsTrue(mdo.WasDisposed); }
public void RemovingItemsFromContainerDoesNotDisposeThem() { ILifetimeContainer container = new LifetimeContainer(); DisposableObject mdo = new DisposableObject(); container.Add(mdo); container.Remove(mdo); container.Dispose(); Assert.IsFalse(mdo.WasDisposed); }
public void RegisterSingletonInstance(Type typeToRegisterAs, object instance) { if (!typeToRegisterAs.IsInstanceOfType(instance)) { throw new ArgumentException("Object is not type compatible with registration type", "instance"); } locator.Add(typeToRegisterAs, instance); lifetime.Add(instance); }
public void RemovingItemsFromContainerDoesNotDisposeThem() { ILifetimeContainer container = new LifetimeContainer(); MockDisposableObject mdo = new MockDisposableObject(); container.Add(mdo); container.Remove(mdo); container.Dispose(); Assert.IsFalse(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.AreEqual(1, container.Count); mdo = wref.Target as DisposableObject; Assert.IsNotNull(mdo); Assert.IsFalse(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.AreEqual(1, count); Assert.IsTrue(foundMdo); }
public void PostTearDownRemovesFromAllLifetimePolicies() { // Fixture setup var lifetimeMocks = Enumerable.Range(1, 3).Select(i => new Mock <CacheLifetimeManager>(new Mock <ILease>().Object)).ToList(); var lifetimeContainer = new LifetimeContainer(); lifetimeMocks.ForEach(m => lifetimeContainer.Add(m.Object)); var contextStub = new Mock <IBuilderContext>(); contextStub.SetupGet(ctx => ctx.Lifetime).Returns(lifetimeContainer); var sut = new CacheReleasingLifetimeStrategy(); // Exercise system sut.PostTearDown(contextStub.Object); // Verify outcome lifetimeMocks.ForEach(m => m.Verify(lp => lp.RemoveValue())); // Teardown }
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.AreEqual(1, count); Assert.IsTrue(foundMdo); }
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.AreEqual(1, obj3.DisposePosition); Assert.AreEqual(2, obj2.DisposePosition); Assert.AreEqual(3, obj1.DisposePosition); }