예제 #1
0
        public void Dispose_Nothing()
        {
            MultiDisposable subject = new MultiDisposable();

            subject.Dispose();
            Assert.Pass();
        }
예제 #2
0
        public void Dispose_MultipleObjectsByConstructorInReverseOrder()
        {
            TestDisposable  first   = new TestDisposable();
            TestDisposable  middle  = new TestDisposable();
            TestDisposable  last    = new TestDisposable();
            MultiDisposable subject = new MultiDisposable(first, middle, last);

            subject.Dispose();

            Assert.IsTrue(first.DisposedOrderPosition > middle.DisposedOrderPosition && middle.DisposedOrderPosition > last.DisposedOrderPosition);
        }
예제 #3
0
        public void Dispose_MultipleObjectsInReverseOrder()
        {
            MultiDisposable subject = new MultiDisposable();
            TestDisposable  first   = subject.Add(new TestDisposable());
            TestDisposable  middle  = subject.Add(new TestDisposable());
            TestDisposable  last    = subject.Add(new TestDisposable());

            subject.Dispose();

            Assert.IsTrue(first.DisposedOrderPosition > middle.DisposedOrderPosition && middle.DisposedOrderPosition > last.DisposedOrderPosition);
        }
예제 #4
0
        public void Dispose_MultipleObjectsAllDisposed_LastExceptionThrown()
        {
            MultiDisposable subject = new MultiDisposable();
            const string    lastExceptionMessage = "Last exception";
            Exception       lastException        = new Exception(lastExceptionMessage);
            TestDisposable  first  = subject.Add(new TestDisposable(lastException));
            TestDisposable  middle = subject.Add(new TestDisposable(new Exception()));
            TestDisposable  last   = subject.Add(new TestDisposable(new Exception()));

            try
            {
                subject.Dispose();
                Assert.Fail("Exception should have been thrown");
            }
            catch (Exception ex)
            {
                Assert.AreSame(lastException, ex);
                Assert.AreEqual(lastExceptionMessage, ex.Message);
            }

            Assert.IsTrue(last.DisposedOrderPosition > 0U);
            Assert.IsTrue(first.DisposedOrderPosition > middle.DisposedOrderPosition && middle.DisposedOrderPosition > last.DisposedOrderPosition);
        }