public void Visit_Expression_MatchingNoRules_ReturnsUnmodifiedExpression()
        {
            var visitor  = new RecursiveRewriteVisitor(this.noopRewriter);
            var origNode = Expression.Constant("Whatever");
            var visited  = visitor.Visit(origNode);

            Assert.That(visited, Is.EqualTo(origNode));
        }
        private void AssertRewrite <TInput, TExpected>(Expression <Func <TInput> > input,
                                                       Expression <Func <TExpected> > expected,
                                                       params IExpressionRewriter[] rewriters)
        {
            var visitor     = new RecursiveRewriteVisitor(rewriters);
            var visitedBody = visitor.Visit(input.Body);

            visitedBody.AssertEquals(expected.Body);
        }