示例#1
0
        public void ToDelegate()
        {
            Func <Dummy, DummyResult> middlewareResult = _ => new DummyResult();
            var middleware = new SpyMiddleware(middlewareResult);
            Func <Dummy, DummyResult> next = _ => new DummyResult();

            new TestCaseRunner()
            .Run(() => MiddlewareExtensions.ToDelegate(middleware)(next))
            .Verify((actual, desc) => {
                Assert.AreEqual(middlewareResult, actual, desc);

                Assert.AreEqual(next, middleware.ActualNext, desc);
            }, (Type)null);
        }
        public void Layer()
        {
            Func <DummyContext, DummyResult> middlewareResult = context => new DummyResult();

            Action TestCase(int testNumber, Func <DummyContext, DummyResult> _handler, SpyMiddleware _middleware, Type expectedExceptionType = null) => () => {
                new TestCaseRunner()
                .Run(() => OnionFuncExtensions.Layer(_handler, _middleware?.Delegate))
                .Verify((actual, desc) => {
                    Assert.AreEqual(middlewareResult, actual, desc);
                    Assert.AreEqual(_handler, _middleware.ActualNext, desc);
                }, expectedExceptionType);
            };

            Func <DummyContext, DummyResult> handler = _ => new DummyResult();
            var middleware = new SpyMiddleware(middlewareResult);

            new[] {
                TestCase(0, null, middleware, typeof(ArgumentNullException)),
                TestCase(1, handler, null, typeof(ArgumentNullException)),
                TestCase(2, handler, middleware),
            }.Run();
        }