コード例 #1
0
        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);
            });
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }