예제 #1
0
        public void FutureDisposable_DisposeAfterSet()
        {
            var disposed = false;

            var d = new MutableDisposable();
            var dd = Disposable.Create(() => { disposed = true; });
            d.Disposable = dd;

            Assert.AreSame(dd, d.Disposable);

            Assert.IsFalse(disposed);
            d.Dispose();
            Assert.IsTrue(disposed);
            d.Dispose();
            Assert.IsTrue(disposed);
        }
예제 #2
0
        public void FutureDisposable_DisposeBeforeSet()
        {
            var disposed = false;

            var d = new MutableDisposable();
            var dd = Disposable.Create(() => { disposed = true; });

            Assert.IsFalse(disposed);
            d.Dispose();
            Assert.IsFalse(disposed);

            d.Disposable = dd;
            Assert.IsNull(d.Disposable); // CHECK!
            Assert.IsTrue(disposed);

            d.Dispose();
            Assert.IsTrue(disposed);
        }
예제 #3
0
        public void MutableDisposable_Dispose()
        {
            var disp = false;

            var m = new MutableDisposable();
            var d = Disposable.Create(() => { disp = true; });
            m.Disposable = d;
            Assert.AreSame(d, m.Disposable);
            Assert.IsFalse(disp);

            m.Dispose();
            Assert.IsTrue(disp);
            Assert.IsNull(m.Disposable);
        }
예제 #4
0
        public void MutableDisposable_ReplaceAfterDispose()
        {
            var disp1 = false;
            var disp2 = false;

            var m = new MutableDisposable();
            m.Dispose();

            var d1 = Disposable.Create(() => { disp1 = true; });
            m.Disposable = d1;
            Assert.IsNull(m.Disposable); // CHECK
            Assert.IsTrue(disp1);

            var d2 = Disposable.Create(() => { disp2 = true; });
            m.Disposable = d2;
            Assert.IsNull(m.Disposable); // CHECK
            Assert.IsTrue(disp2);
        }