public void ParentScopeShouldDisposeAllChildScopesAndObjects() { Disposable parentObj, childObj, grandChildObj, siblingObj; using (var parent = new DisposingContainerScope(new Container())) { var child = parent.CreateScope(); var grandChild = child.CreateScope(); var sibling = parent.CreateScope(); parentObj = parent.ActivateImplicit(new Disposable()); childObj = child.ActivateImplicit(new Disposable()); grandChildObj = grandChild.ActivateImplicit(new Disposable()); siblingObj = sibling.ActivateImplicit(new Disposable()); } Assert.All(new[] { parentObj, childObj, grandChildObj, siblingObj }, d => { Assert.True(d.Disposed); Assert.Equal(1, d.DisposedCount); }); }
public void ShouldDisposeImplicitIDisposable() { Disposable disposable; using (var scope = new DisposingContainerScope(new Container())) { disposable = scope.ActivateImplicit(new Disposable()); } Assert.True(disposable.Disposed); Assert.Equal(1, disposable.DisposedCount); }
public void ImplicitlyScopedObjectShouldNotBeSameAsExplicitlyScopedObject() { Disposable explicitlyScoped, implicitlyScoped; using (var scope = new DisposingContainerScope(new Container())) { Func <ResolveContext, Disposable> factory = c => new Disposable(); explicitlyScoped = scope.ActivateExplicit( new ResolveContext(scope, typeof(Disposable)), new TestTarget().Id, factory); implicitlyScoped = scope.ActivateImplicit( new Disposable()); Assert.NotSame(explicitlyScoped, implicitlyScoped); } Assert.True(explicitlyScoped.Disposed); Assert.True(implicitlyScoped.Disposed); }