public void Iteration_of_string_length_lambda_yields_the_correct_expressions() { Expression <Func <string, int> > expression = x => x.Length; var expected = new ExpressionIterationNodeAssertionList() .Add <LambdaExpression>() .Add <ParameterExpression>(e => e.Name == "x") .Add <MemberExpression>(e => e.Member.Name == "Length") .Add <ParameterExpression>(e => e.Name == "x") ; var actual = expression.Iterate().ToList(); Assert.Equal(expected.Count, actual.Count); for (int i = 0; i < expected.Count; ++i) { Assert.True(expected[i](actual[i])); } }
public void Iteration_of_string_method_calls_yields_the_correct_expressions() { Expression <Func <string, bool> > expression = x => x.Contains("abc") || x.GetEnumerator().MoveNext(); var expected = new ExpressionIterationNodeAssertionList() .Add <LambdaExpression>() .Add <ParameterExpression>(e => e.Name == "x") .Add <BinaryExpression>(e => e.NodeType == ExpressionType.OrElse) .Add <MethodCallExpression>(e => e.Method.Name == "Contains") .Add <ParameterExpression>(e => e.Name == "x") .Add <ConstantExpression>(e => e.Value.Equals("abc")) .Add <MethodCallExpression>(e => e.Method.Name == "MoveNext") .Add <MethodCallExpression>(e => e.Method.Name == "GetEnumerator") .Add <ParameterExpression>(e => e.Name == "x") ; var actual = expression.Iterate().ToList(); Assert.Equal(expected.Count, actual.Count); for (int i = 0; i < expected.Count; ++i) { Assert.True(expected[i](actual[i])); } }