private MiddlewareChainResult runTestMiddlwareChain(TestMessage tm) { var middleware = new MiddlewareChain <TestMessage>(); var result = new MiddlewareChainResult(); middleware.Use(new Middleware <TestMessage>((ctx, next) => { result.Handled++; next(); })); middleware.Use(new Middleware <TestMessage>((ctx, next) => { result.Handled++; if (ctx.Text.StartsWith("/")) { next(); } })); middleware.Use(new Middleware <TestMessage>((ctx, next) => { if (ctx.Text.StartsWith("/adm") && !ctx.User.IsAdmin) { result.Rejected++; } else { result.Handled++; } })); middleware.Execute(tm); return(result); }