Ejemplo n.º 1
0
 public void DisposingOwned_CallsDisposeOnLifetimeToken()
 {
     var lifetime = new DisposeTracker();
     var owned = new Owned<string>("unused", lifetime);
     owned.Dispose();
     Assert.True(lifetime.IsDisposed);
 }
Ejemplo n.º 2
0
 public void OnDispose_DisposerDisposesContainedInstances()
 {
     var instance = new DisposeTracker();
     var disposer = new Disposer();
     disposer.AddInstanceForDisposal(instance);
     Assert.IsFalse(instance.IsDisposed);
     disposer.Dispose();
     Assert.IsTrue(instance.IsDisposed);
 }
Ejemplo n.º 3
0
        public void InstancesRegisteredInNestedScopeAreSingletonsInThatScope()
        {
            var rootScope = new ContainerBuilder().Build();

            var dt = new DisposeTracker();

            var nestedScope = rootScope.BeginLifetimeScope(cb =>
                 cb.RegisterInstance(dt));

            var dt1 = nestedScope.Resolve<DisposeTracker>();
            Assert.AreSame(dt, dt1);
        }
        public void CallingDisposeOnGeneratedOwnedT_DoesNotDisposeCurrentLifetimeScope()
        {
            var cb = new ContainerBuilder();
            var containerDisposeTracker = new DisposeTracker();
            cb.RegisterInstance(containerDisposeTracker).Named<DisposeTracker>("tracker");
            cb.RegisterType<DisposeTracker>();
            var c = cb.Build();

            var owned = c.Resolve<Owned<DisposeTracker>>();
            owned.Dispose();
            Assert.False(containerDisposeTracker.IsDisposed);
        }
Ejemplo n.º 5
0
        public void DisposerDisposesContainedInstances_InReverseOfOrderAdded()
        {
            DisposeTracker lastDisposed = null;

            var instance1 = new DisposeTracker();
            instance1.Disposing += (s, e) => lastDisposed = instance1;
            var instance2 = new DisposeTracker();
            instance2.Disposing += (s, e) => lastDisposed = instance2;

            var disposer = new Disposer();

            disposer.AddInstanceForDisposal(instance1);
            disposer.AddInstanceForDisposal(instance2);

            disposer.Dispose();

            Assert.AreSame(instance1, lastDisposed);
        }
Ejemplo n.º 6
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <AddressBookItemEventHandler>(this));
 }
Ejemplo n.º 7
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <SecureNameValueCollection>(this));
 }
Ejemplo n.º 8
0
 // Token: 0x0600123B RID: 4667 RVA: 0x0006FBA8 File Offset: 0x0006DDA8
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <ProxyToEwsEventHandler>(this));
 }
Ejemplo n.º 9
0
 // Token: 0x06001A44 RID: 6724 RVA: 0x0006E730 File Offset: 0x0006C930
 public virtual DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <SeederClient>(this));
 }
Ejemplo n.º 10
0
        public static void DerivedCancellationTokenSource_Negative()
        {
            // Test the Dispose path for a class derived from CancellationTokenSource
            {
                var disposeTracker = new DisposeTracker();
                CancellationTokenSource c = new DerivedCTS(disposeTracker);

                c.Dispose();

                // Dispose() should have prevented the finalizer from running. Give the finalizer a chance to run. If this
                // results in Dispose(false) getting called, we'll catch the issue.
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Assert.Throws<ObjectDisposedException>(
                    () =>
                    {
                        // Accessing the Token property should throw an ObjectDisposedException
                        if (c.Token.CanBeCanceled)
                            Assert.True(false, string.Format("DerivedCancellationTokenSource: Accessing the Token property should throw an ObjectDisposedException, but it did not."));
                        else
                            Assert.True(false, string.Format("DerivedCancellationTokenSource: Accessing the Token property should throw an ObjectDisposedException, but it did not."));
                    });
            }
        }
Ejemplo n.º 11
0
 public DerivedCTS(DisposeTracker disposeTracker)
 {
     _disposeTracker = disposeTracker;
 }
Ejemplo n.º 12
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <AnrManager>(this));
 }
Ejemplo n.º 13
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <ProxyProtocolRequest>(this));
 }
Ejemplo n.º 14
0
 public override DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <FolderSyncState>(this));
 }
Ejemplo n.º 15
0
 protected override DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <AclModifyTable>(this));
 }
Ejemplo n.º 16
0
 public DisposeTracker GetDisposeTracker()
 {
     this.disposeTracker = DisposeTracker.Get <TrackingEventBudget>(this);
     return(this.disposeTracker);
 }
 protected override DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <MaintenanceSynchronizer>(this));
 }
Ejemplo n.º 18
0
 public Disposable()
 {
     disposeTracker = new DisposeTracker();
 }
 // Token: 0x060000A8 RID: 168 RVA: 0x00004956 File Offset: 0x00002B56
 protected override DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <NspiCompareDNTsDispatchTask>(this));
 }
Ejemplo n.º 20
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <MdbDocumentAdapter>(this));
 }
Ejemplo n.º 21
0
        public static void DerivedCancellationTokenSource()
        {
            // Verify that a derived CTS is functional
            {
                CancellationTokenSource c = new DerivedCTS(null);
                CancellationToken token = c.Token;

                var task = Task.Factory.StartNew(() => c.Cancel());
                task.Wait();

                Assert.True(token.IsCancellationRequested,
                   "DerivedCancellationTokenSource:  The token should have been cancelled.");
            }

            // Verify that callback list on a derived CTS is functional
            {
                CancellationTokenSource c = new DerivedCTS(null);
                CancellationToken token = c.Token;
                int callbackRan = 0;

                token.Register(() => Interlocked.Increment(ref callbackRan));

                var task = Task.Factory.StartNew(() => c.Cancel());
                task.Wait();
                SpinWait.SpinUntil(() => callbackRan > 0, 1000);

                Assert.True(callbackRan == 1,
                   "DerivedCancellationTokenSource:  Expected the callback to run once. Instead, it ran " + callbackRan + " times.");
            }

            // Test the Dispose path for a class derived from CancellationTokenSource
            {
                var disposeTracker = new DisposeTracker();
                CancellationTokenSource c = new DerivedCTS(disposeTracker);
                Assert.True(c.Token.CanBeCanceled,
                    "DerivedCancellationTokenSource:  The token should be cancellable.");

                c.Dispose();

                // Dispose() should have prevented the finalizer from running. Give the finalizer a chance to run. If this
                // results in Dispose(false) getting called, we'll catch the issue.
                GC.Collect();
                GC.WaitForPendingFinalizers();

                Assert.True(disposeTracker.DisposeTrueCalled,
                    "DerivedCancellationTokenSource:  Dispose(true) should have been called.");
                Assert.False(disposeTracker.DisposeFalseCalled,
                    "DerivedCancellationTokenSource:  Dispose(false) should not have been called.");
            }

            // Test the finalization code path for a class derived from CancellationTokenSource
            {
                var disposeTracker = new DisposeTracker();

                // Since the object is not assigned into a variable, it can be GC'd before the current method terminates.
                // (This is only an issue in the Debug build)
                new DerivedCTS(disposeTracker);

                // Wait until the DerivedCTS object is finalized
                SpinWait.SpinUntil(() =>
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    return disposeTracker.DisposeTrueCalled;
                }, 500);

                Assert.False(disposeTracker.DisposeTrueCalled,
                    "DerivedCancellationTokenSource:  Dispose(true) should not have been called.");
                Assert.True(disposeTracker.DisposeFalseCalled,
                    "DerivedCancellationTokenSource:  Dispose(false) should have been called.");
            }

            // Verify that Dispose(false) is a no-op on the CTS. Dispose(false) should only release any unmanaged resources, and
            // CTS does not currently hold any unmanaged resources.
            {
                var disposeTracker = new DisposeTracker();

                DerivedCTS c = new DerivedCTS(disposeTracker);
                c.DisposeUnmanaged();

                // No exception expected - the CancellationTokenSource should be valid
                Assert.True(c.Token.CanBeCanceled,
                   "DerivedCancellationTokenSource:  The token should still be cancellable.");

                Assert.False(disposeTracker.DisposeTrueCalled,
                   "DerivedCancellationTokenSource:  Dispose(true) should not have been called.");
                Assert.True(disposeTracker.DisposeFalseCalled,
                   "DerivedCancellationTokenSource:  Dispose(false) should have run.");
            }
        }
Ejemplo n.º 22
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <RehomeJob>(this));
 }
Ejemplo n.º 23
0
 public Disposable()
 {
     disposeTracker = new DisposeTracker();
 }
Ejemplo n.º 24
0
 // Token: 0x06000917 RID: 2327 RVA: 0x0003D5C8 File Offset: 0x0003B7C8
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <SummaryGenerating>(this));
 }
Ejemplo n.º 25
0
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <DocumentLibraryFetchProvider>(this));
 }
Ejemplo n.º 26
0
 // Token: 0x06001897 RID: 6295 RVA: 0x0009193B File Offset: 0x0008FB3B
 public DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <WbxmlReader>(this));
 }
Ejemplo n.º 27
0
 // Token: 0x06000C88 RID: 3208 RVA: 0x0002E810 File Offset: 0x0002CA10
 protected override DisposeTracker InternalGetDisposeTracker()
 {
     return(DisposeTracker.Get <BrokerHandler>(this));
 }
Ejemplo n.º 28
0
 // Token: 0x06000FBD RID: 4029 RVA: 0x0005D220 File Offset: 0x0005B420
 public DisposeTracker GetDisposeTracker()
 {
     return(DisposeTracker.Get <ErrorStatisticsProvider>(this));
 }