public async Task Status_OneEntryThatDoesNotCallNext()
        {
            bool called1 = false;

            var one = new DoNotCallNextMiddleware(() => { called1 = true; });

            var m = new MiddlewareSet();

            m.Use(one);

            // The middlware in this pipeline DOES NOT call next(), so this must not be called
            bool didAllRun = false;
            await m.ReceiveActivityWithStatus(null, (ctx) =>
            {
                didAllRun = true;
                return(Task.CompletedTask);
            },
                                              default(CancellationToken));

            Assert.IsTrue(called1);

            // Our "Final" action MUST NOT have been called, as the Middlware Pipeline
            // didn't complete.
            Assert.IsFalse(didAllRun);
        }
        public async Task Status_TwoItemsOneDoesNotCallNext()
        {
            bool called1 = false;
            bool called2 = false;

            var one = new CallMeMiddlware(() =>
            {
                Assert.IsFalse(called2, "Second Middleware was called");
                called1 = true;
            });

            var two = new DoNotCallNextMiddleware(() =>
            {
                Assert.IsTrue(called1, "First Middleware was not called");
                called2 = true;
            });

            var m = new MiddlewareSet();

            m.Use(one);
            m.Use(two);

            bool didAllRun = false;
            await m.ReceiveActivityWithStatus(null, (ctx) =>
            {
                didAllRun = true;
                return(Task.CompletedTask);
            });

            Assert.IsTrue(called1);
            Assert.IsTrue(called2);

            // The 2nd middleware did not call next, so the "final" action should not have run.
            Assert.IsFalse(didAllRun);
        }
예제 #3
0
        public async Task Status_RunAtEndEmptyPipeline()
        {
            MiddlewareSet m         = new MiddlewareSet();
            bool          didAllRun = false;

            // This middlware pipeline has no entries. This should result in
            // the status being TRUE.
            await m.ReceiveActivityWithStatus(null, async (ctx) => didAllRun = true);

            Assert.IsTrue(didAllRun);
        }
예제 #4
0
        public async Task NoMiddlewareWithDelegate()
        {
            MiddlewareSet m         = new MiddlewareSet();
            bool          wasCalled = false;

            async Task CallMe(ITurnContext context)
            {
                wasCalled = true;
            }

            // No middleware. Should not explode.
            await m.ReceiveActivityWithStatus(null, CallMe);

            Assert.IsTrue(wasCalled, "Delegate was not called");
        }
        public async Task NoMiddlewareWithDelegate()
        {
            var  m         = new MiddlewareSet();
            bool wasCalled = false;

            Task CallMe(ITurnContext context)
            {
                wasCalled = true;
                return(Task.CompletedTask);
            }

            // No middleware. Should not explode.
            await m.ReceiveActivityWithStatus(null, CallMe, default(CancellationToken));

            Assert.IsTrue(wasCalled, "Delegate was not called");
        }
        public async Task Status_RunAtEndEmptyPipeline()
        {
            var  m         = new MiddlewareSet();
            bool didAllRun = false;

            // This middlware pipeline has no entries. This should result in
            // the status being TRUE.
            await m.ReceiveActivityWithStatus(null, (ctx) =>
            {
                didAllRun = true;
                return(Task.CompletedTask);
            },
                                              default(CancellationToken));

            Assert.IsTrue(didAllRun);
        }
예제 #7
0
        public async Task Status_OneMiddlewareRan()
        {
            bool called1 = false;

            CallMeMiddlware one = new CallMeMiddlware(() => { called1 = true; });

            MiddlewareSet m = new MiddlewareSet();

            m.Use(one);

            // The middlware in this pipeline calls next(), so the delegate should be called
            bool didAllRun = false;
            await m.ReceiveActivityWithStatus(null, async (ctx) => didAllRun = true);

            Assert.IsTrue(called1);
            Assert.IsTrue(didAllRun);
        }
예제 #8
0
        public async Task OneMiddlewareItem()
        {
            WasCalledMiddlware simple = new WasCalledMiddlware();

            bool wasCalled = false;

            async Task CallMe(ITurnContext context)
            {
                wasCalled = true;
            }

            MiddlewareSet m = new MiddlewareSet();

            m.Use(simple);

            Assert.IsFalse(simple.Called);
            await m.ReceiveActivityWithStatus(null, CallMe);

            Assert.IsTrue(simple.Called);
            Assert.IsTrue(wasCalled, "Delegate was not called");
        }
        public async Task OneMiddlewareItem()
        {
            var simple = new WasCalledMiddlware();

            bool wasCalled = false;

            Task CallMe(ITurnContext context)
            {
                wasCalled = true;
                return(Task.CompletedTask);
            }

            MiddlewareSet m = new MiddlewareSet();

            m.Use(simple);

            Assert.IsFalse(simple.Called);
            await m.ReceiveActivityWithStatus(null, CallMe, default(CancellationToken));

            Assert.IsTrue(simple.Called);
            Assert.IsTrue(wasCalled, "Delegate was not called");
        }
        public async Task Status_OneMiddlewareRan()
        {
            bool called1 = false;

            var one = new CallMeMiddlware(() => { called1 = true; });

            var m = new MiddlewareSet();

            m.Use(one);

            // The middlware in this pipeline calls next(), so the delegate should be called
            bool didAllRun = false;
            await m.ReceiveActivityWithStatus(null, (ctx) =>
            {
                didAllRun = true;
                return(Task.CompletedTask);
            },
                                              default(CancellationToken));

            Assert.IsTrue(called1);
            Assert.IsTrue(didAllRun);
        }
예제 #11
0
        public async Task TwoMiddlewareItemsWithDelegate()
        {
            WasCalledMiddlware one = new WasCalledMiddlware();
            WasCalledMiddlware two = new WasCalledMiddlware();

            int called = 0;

            async Task CallMe(ITurnContext context)
            {
                called++;
            }

            MiddlewareSet m = new MiddlewareSet();

            m.Use(one);
            m.Use(two);

            await m.ReceiveActivityWithStatus(null, CallMe);

            Assert.IsTrue(one.Called);
            Assert.IsTrue(two.Called);
            Assert.IsTrue(called == 1, "Incorrect number of calls to Delegate");
        }