Example #1
0
        public void IsInsideMiddlewareChange_ShouldBeTrue_UntilBeginInternalMiddlewareChangeIsDisposed()
        {
            var subject     = new MiddlewareWithExposedMembers();
            var disposables = new Queue <IDisposable>();

            Assert.Equal(0, subject._BeginMiddlewareChangeCount);
            Assert.False(subject._IsInsideMiddlewareChange);

            int expectedChangeCount = 0;

            for (int i = 1; i <= 10; i++)
            {
                expectedChangeCount = i;
                IDisposable disposable = subject._BeginInternalMiddlewareChange();
                disposables.Enqueue(disposable);

                Assert.Equal(expectedChangeCount, subject._BeginMiddlewareChangeCount);
                Assert.True(subject._IsInsideMiddlewareChange);
            }
            do
            {
                Assert.Equal(expectedChangeCount, subject._BeginMiddlewareChangeCount);
                Assert.True(subject._IsInsideMiddlewareChange);

                disposables.Dequeue().Dispose();
                expectedChangeCount--;
            } while (disposables.Count > 0);

            Assert.Equal(0, subject._BeginMiddlewareChangeCount);
            Assert.False(subject._IsInsideMiddlewareChange);
        }
Example #2
0
        public void WhenLastInternalChangeCallHasCompleted_ThenShouldCallOnInternalMiddlewareChangeEnding()
        {
            var subject = new MiddlewareWithExposedMembers();

            Assert.Equal(0, subject.OnInternalMiddlewareChangeEndingCallCount);

            subject._BeginInternalMiddlewareChange().Dispose();
            Assert.Equal(1, subject.OnInternalMiddlewareChangeEndingCallCount);

            using (subject._BeginInternalMiddlewareChange())
            {
                using (subject._BeginInternalMiddlewareChange())
                {
                }
            }
            Assert.Equal(2, subject.OnInternalMiddlewareChangeEndingCallCount);
        }